Tải bản đầy đủ (.pdf) (10 trang)

Tìm hiểu về firewall (iptable, csf fail2ban, shorewall)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (291 KB, 10 trang )

Chương 14:

Firewall

14.1. Định nghĩa
Tường lửa là một thiết bị phần cứng và/hoặc một phần mềm hoạt động trong một môi
trường máy tính nối mạng để ngăn chặn một số liên lạc bị cấm bởi chính sách an ninh của
cá nhân hay tổ chức.
Nhiệm vụ cơ bản của tường lửa là kiểm soát giao thông dữ liệu giữa hai vùng có độ
tin cậy khác nhau. Các vùng tin cậy (zone of trust) điển hình bao gồm: mạng Internet (vùng
không đáng tin cậy) và mạng nội bộ (một vùng có độ tin cậy cao). Mục đích cuối cùng là
cung cấp kết nối có kiểm soát giữa các vùng với độ tin cậy khác nhau thông qua việc áp
dụng một chính sách an ninh và mô hình kết nối dựa trên nguyên tắc quyền tối thiểu
(principle of least privilege).
14.2. Phân loại
Firewall được chia làm 2 loại, gồm Firewall cứng và Firewall mềm:
Firewall cứng: Là những firewall được tích hợp trên Router, Firewall phần cứng cung
cấp mức độ bảo vệ cao hơn so với Firewall phần mềm và dễ bảo trì hơn. Firewall phần
cứng cũng có một ưu điểm khác là không chiếm dụng tài nguyên hệ thống trên máy tính
như Firewall phần mềm. Firewall phần cứng là một lựa chọn rất tốt đối với các doanh
nghiệp nhỏ, đặc biệt cho những công ty có chia sẻ kết nối Internet.
Có thể kết hợp Firewall và một bộ định tuyến trên cùng một hệ thống phần cứng và
sử dụng hệ thống này để bảo vệ cho toàn bộ mạng. Firewall phần cứng có thể là một lựa
chọn đỡ tốn chi phí hơn so với Firewall phần mềm thường phải cài trên mọi máy tính cá
nhân trong mạng. Trong số các công ty cung cấp Firewall phần cứng có thể kể tới Linksys,
NetGear, Cisco. Tính năng Firewall phần cứng do các công ty này cung cấp thường được
tích hợp sẵn trong các bộ định tuyến dùng cho mạng của các doanh nghiệp nhỏ và mạng
gia đình.
Đặc điểm của Firewall cứng:



– Không linh hoạt: Không thể thêm chức năng, thêm quy tắc
– Hoạt động ở tầng thấp: Tầng Network và tầng Transport
– Không thể kiểm tra được nột dung của gói tin.
Firewall mềm: Là những Firewall được cài đặt trên Server.
Đặc điểm của Firewall mềm:
– Tính linh hoạt cao: Có thể thêm, bớt các quy tắc, các chức năng.
– Hoạt động ở tầng cao hơn Firewall cứng (tầng ứng dụng)
– Có thể kiểm tra được nội dung của gói tin (thông qua các từ khóa).
14.3. Sử dụng tường lửa
Một máy tính khi kết nối với internet mà không có firewall, các trao đổi ra vào cổng
mạng đều tự do và không hề được lọc bởi một hệ thống nào, điều đó có nghĩa là những
phần mềm độc hại, mã độc sẽ dễ dàng xâm nhập vào máy tính và thực thi các scripts gây
hại cho máy tính như xóa các thư mục quan trọng, gây treo máy, xóa dữ liệu quan trọng …
14.4. IPtable
Iptables là Firewall được cấu hình và hoạt động trên nền console rất nhỏ và tiện dụng.
Iptables cung cấp các tính năng sau:
– Tích hợp tốt với kernel của Linux.
– Có khả năng phân tích package hiệu quả.
– Lọc package dựa vào MAC và một số cờ hiệu trong TCP Header.
– Cung cấp chi tiết các tùy chọn để ghi nhận sự kiện hệ thống.
– Cung cấp kỹ thuật NAT. Có khả năng ngăn chặn một số cơ chế tấn công theo
kiểu DoS.
Iptable định nghĩa các bảng (table) chứa các chuỗi (chain), luật (rules) áp dụng cho
gói tin. Mỗi bảng tương ứng với một loại của quy trình gói tin. Các gói tin được xử lý nối
tiếp qua từng luật trong chuỗi. Một luật trong một chuỗi có thể đổi hướng hay nhảy đến
một chuỗi khác, và quá trình này tiếp diễn đến khi vòng lặp kết thúc. Mọi gói tin được xử
lý đều phải thông qua ít nhất mỗi chuỗi luật.


Cơ chế lọc gói tin của Iptable được xây dựng dựa trên 3 thành phần cơ bản đó là table,

chain và target. Tất cả các gói dữ liệu đều được kiểm tra bởi iptable bằng cách sử dụng các
bảng tuần tự được xây dựng sẵn (queues). Có 3 loại bảng gồm:


Magle: Chịu trách nhiệm thay đổi các bít dữ liệu dịch vụ trong TCP header như TOS
( type of service) TTL (time to live), MARK.



Filter: Chịu trách nhiệm lọc gói tin, nó gồm 3 quy tắc nhỏ (chain) để người dùng thiết
lập các quy tắc lọc gói gồm:



NAT: gồm có 2 loại



Raw Table: Theo mặc định, iptables sẽ lưu lại trạng thái kết nối của các gói tin, tính
năng này cho phép iptables xem các gói tin rời rạc là một kết nối, một session chung
để dễ dàng quản lý. Tính năng theo dõi này được sử dụng ngay từ khi gói tin được
gởi tới hệ thống trong bảng raw. Với bảng raw, ta có thể bật/tắt tính năng theo dõi


này đối với một số gói tin nhất định, các gói tin được đánh dấu NOTRACK sẽ không
được ghi lại trong bảng connection tracking nữa.


Security Table: Bảng security dùng để đánh dấu policy của SELinux lên các gói tin,
các dấu này sẽ ảnh hưởng đến cách thức xử lý của SELinux hoặc của các máy khác

trong hệ thống có áp dụng SELinux. Bảng này có thể đánh dấu theo từng gói tin hoặc
theo từng kết nối.
Các chain trong table
Mỗi một table đều có một số chain của riêng mình, sau đây là bảng cho biết các chain
thuộc mỗi table.



Forward chain: lọc gói khi đi đến các server khác.



Input chain: lọc gói khi đi vào server



Output chain: lọc gói khi đi ra khỏi server



Pre-routing chain: thay đổi địa chỉ đích của gói dữ liệu khi cần thiết.



Post-routing chain: thay đổi địa chỉ nguồn của gói dữ liệu khi cần thiết.
Mặc định thì các chain này sẽ không chứa bất kỳ một rule nào, tuy nhiên mỗi chain
đều có một policy mặc định nằm ở cuối chain, policy này có thể là ACCEPT hoặc
DROP, chỉ khi gói tin đã đi qua hết tất cả các rule ở trên thì gói tin mới gặp phải
policy này.
Ngoài ra, thứ tự gói tin di chuyển giữa các chain sẽ có hơi khác tùy vào tình huống:

– Gói tin được gởi đến máy chủ: PREROUTING => INPUT


– Gói tin được forward đến một máy chủ khác: PREROUTING => FORWARD
=> POSTROUTING
– Gói tin được máy chủ hiện tại gởi ra ngoài: OUTPUT => POSTROUTING
Các rule trong chain:
Các rule là tập điều kiện và hành động tương ứng để xử lý gói tin. Mỗi chain sẽ chứa
rất nhiều rule, gói tin được xử lý trong một chain sẽ được so với lần lượt từng rule trong
chain này.
Cơ chế kiểm tra gói tin dựa trên rule vô cùng linh hoạt và có thể dễ dàng mở rộng
thêm nhờ các extension của IPtables có sẵn trên hệ thống. Rule có thể dựa trên protocol,
địa chỉ nguồn/đích, port nguồn/đích, card mạng, header gói tin, trạng thái kết nối… Dựa
trên những điều kiện này có thể tạo ra một tập rule phức tạp để kiểm soát luồng dữ liệu ra
vào hệ thống.
Mỗi rule sẽ đươc gắn một hành động để xử lý gói tin, hành động này có thể là:


ACCEPT: gói tin sẽ được chuyển tiếp sang bảng kế tiếp.



DROP: gói tin/kết nối sẽ bị hủy, hệ thống sẽ không thực thi bất kỳ lệnh nào khác.



REJECT: gói tin sẽ bị hủy, hệ thống sẽ gởi lại 1 gói tin báo lỗi ICMP – Destination
port unreachable




LOG: gói tin khớp với rule sẽ được ghi log lại.



REDIRECT: chuyển hướng gói tin sang một proxy khác.



MIRROR: hoán đổi địa chỉ IP nguồn, đích của gói tin trước khi gởi gói tin này đi.



QUEUE: chuyển gói tin tới chương trình của người dùng qua một module của kernel.

14.5. Csf (Config Server Firewall)
CSF (ConfigServer & Firewall) là 1 gói ứng dụng hoạt động trên Linux như 1
Firewall được phát hành miễn phí để tăng tính bảo mật cho server (VPS và Dedicated).
CSF hoạt động dựa trên iptables và tiến trình ldf để quyét các file log để phát hiện các dấu
hiệu tấn công bất thường.


CSF sẽ giúp server của bạn:



Chống DoS các loại





Chống Scan Port



Đưa ra các lời khuyên về việc cấu hình server (VD: Nên nâng cấp MySQL lên bản
mới hơn)



Chống BruteForce Attack vào ftp server, web server, mail
server,directadmin,cPanel…



Chống Syn Flood



Chống Ping Flood



Cho phép ngăn chặn truy cập từ 1 quốc gia nào đó bằng cách chỉ định Country Code
chuẫn ISO



Hỗ trợ IPv6 và IPv4




Cho phép khóa IP tạm thời và vĩnh viễn ở tầng mạng (An toàn hơn ở tầng ứng dụng )
nên webserver ko phải mệt nhọc xử lý yêu cầu từ các IP bị cấm nữa



Cho phép bạn chuyến hướng yêu cầu từ các IP bị khóa sang 1 file html để thông báo
cho người dùng biết IP của họ bị khóa

14.6. Fail2ban
Fail2ban là 1 chương trình được viết bằng python có nhiệm vụ chặn các ip kết nối
đến server dựa vào các dấu hiệu nghi ngờ mà ip đó để lại trong file log của hệ thống hoặc
dịch vụ. Ví dụ như có quá nhiều lần sử dụng mật khẩu không hợp lệ, truy cập không hợp
lệ hoặc các dấu hiệu bất thường khác mà có thể nhận biết được.
Mỗi luật trong fail2ban (jail) bao gồm 3 thành phần:
– luật lọc (filter)
– luật chặn (action)
– file log cần lọc
Fail2ban đếm số lần 1 ip vi phạm luật lọc(filter) trong 1 khoảng thời gian xác định,
nếu số lần vi phạm vượt quá 1 ngưỡng cho trước thì ip đó sẽ bị chặn kêt nối đến server bởi
luật chặn (action). Các thông số khoảng thời gian quét, ngưỡng giới hạn, thời gian chặn ip
hay vị trí file log sẽ được cấu hình riêng cho từng jail.


Chương trình Fail2ban chạy nền dịch vụ và quét log được chỉ định bởi người dùng
hoặc sử dụng mẫu cấu hình mặc định, sau đó fail2ban sẽ sử dụng các khuôn mẫu mà nó
quy định nhằm lọc và trích xuất thông tin cần thiết. Sau đó xem xét và quyết định chặn hay
không 1 ip đáng ngờ nào đó.
Filter : /etc/fail2ban/filter.d/*

Mỗi file filter chứa 1 đoạn mã regex có nhiệm vụ lọc ra các ip vị phạm luật trong file
log hệ thống.
failregex = ^%(__prefix_line)s(?:error: PAM: )?[aA]uthentication (?:failure|error)
for .* from ( via \S+)?\s*$
ignoreregex =
Vi dụ đoạn regex trong file sshd.conf lọc ra các ip ssh đến server với xác thực không
hợp lệ trong file log hệ thống: auth.log.
Action: /etc/fail2ban/action.d/*
Mỗi luật acction được cấu hình bao gồm những lệnh iptables sau:

– actionstart : Gọi ra khi khởi chạy dịch vụ fail2ban có nhiệm vụ tạo mới 1
bảng trong iptable để dễ quản lý các ip đã chặn theo từng luật jail.
– actionstop: Gọi ra khi kết thúc dịch vụ fail2ban nhằm xóa bỏ những luật
iptables được thêm vào trong qua trình fail2ban chạy.
– actioncheck: kiểm tra xem 1 ip đã bị chặn với luât jail hay chưa. Tức là kiểm
tra trong bảng chain của luật jạil đã có ip đó hay chưa.
– actionban: lệnh iptables để chặn 1 ip
– actionunban: lệnh iptables xóa bỏ luật chặn 1 ip sau khi hết thời gian chặn.
Jail: /etc/fail2ban/jail.conf
File jail.conf là file cấu hình tất cả các luật jail trong fail2ban. Thông số cấu hình cho
1 jail bao gồm:
– Bantime: thời gian ip bị chặn nếu vi phạm luật jail


– Findtime: khoảng thời gian quét cho 1 luật jail
– Maxretry: ngưỡng vị phạm trong khoảng thời gian findtime
– Banaction: Luật action (tên file action.conf)
– Port: cổng chặn kết nối đến server
– Filter: tên file cấu hình luật filter
– Logpath: đường dẫn đến file log hệ thống,ứng dụng

– Action: lựa chọn 1 trong 3 chế độ: chỉ chặn ip, chặn ip và gửi mail thông báo,
chăn ip, gửi mail thông báo và ghi ra log
14.7. Shorewall
Shorewall là công cụ cao cấp để cấu hình Netfilter. Người dùng có thể mô tả tường
lửa/port bằng cách sử dụng các dòng trong file cấu hình. Shorewal đọc file cấu hình đó
cùng với sự kết hợp của iptable , iptable-restore, IP và tc, Shorewall cấu hình Netfilter và
hệ thống mạng phù hợp với yêu cầu của người dùng. Shorewall có thể đuwọc sử dụng
như một tường lửa chuyên dụng.
File cấu hình của Shorewall nằm trong thư mục /etc/shorewall, thư mục chứa các file
cấu hình đơn giản, người dùng chỉ cần cấu hình vài dòng trong nó. Shorewall định dạng
một network dưới dạng zones. Các zones được khai báo và định dạng trong file
/etc/shorewall/zones có định dạng như sau:

Cách đơn giản nhất để định nghĩa một host trong zone đó là liên kết zone đó với port
sử dụng file /etc/shorewall/interfaces


Tập quy tắc về lưu lượng truy cập cho phép và lưu lượng truy cập từ chối được thể
hiện trong zone.


Chính sách mặc định cho các kết nối từ một zone này đến zone khác trong tệp / etc /
shorewall / policy. Các lựa chọn cơ bản cho chính sách là:
-

ACCEPT - Chấp nhận kết nối.

-

DROP - Bỏ qua yêu cầu kết nối.


-

REJECT - Trả về một lỗi thích hợp cho yêu cầu kết nối.

Người dùng có thể liệt kê luật ngoại lệ vào chính sách mặc định tại file
/etc/shorewall/rule.
Đối với mỗi yêu cầu kết nôi tới mạng thông qua tường lửa, gói tin sẽ được kiểm tra yêu
cầu kết nối có trùng với quy tắc trong tệp /etc/shorewall/rule. Nếu không có quy tắc nào
trong tệp trùng khớp với yêu cầu kết nối của gói tin thì chính sách đầu tiên trong file
/etc/shorewall/policy khớp với yêu cầu kết nối được áp dụng. Nếu có polily default được
cấu hình trong file shorewall.conf thì policy sẽ được thi hành trước tin. Các policy sẽ có
những hành động như, drop, reject, hoặc accept gói tin.
File /etc/shorewall/policy:




×