Cách thức truyền packet trong Firewall

Một phần của tài liệu bảo mật hệ thống call center (Trang 105 - 115)

Các gói tin từ ngồi đi vào sẽ được kiểm tra bởi các Pre-routing chain đầu tiên xem xem nó có cần DNAT khơng sau đó gói tin được routing. Nếu gói tin cần

đi tới một hệ thống khác ( protected network ) nó sẽ được lọc bởi các FORWARD

chain của bảng FILTER và nếu cần nó có thể được SNAT bởi các Post-routing

chain trước khi đến được hệ thống đích. Tương tự khi hệ thống đích cần trả lời, gói

tin sẽ đi theo thứ tự như vậy nhưng theo chiều ngược lạị Lưu ý trong hình vẽ những FORWARD và Post-routing chain của bảng mangle chỉ tác động vào đặc điểm QOS ( Quality of Service ) của gói tin.

Nếu gói tin được gửi tới hệ thống ( hệ thống chứa iptables ) nó sẽ được xử lý bởi các INPUT chain và nếu khơng bị lọc bỏ nó sẽ được xử lý bởi một dịch vụ ( System Service ) nào đó chạy trên hệ thống. Khi hệ thống gửi trả lời, gói tin mà nó

CHƯƠNG 4: CÁC GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG

gửi đi được xử lý bởi các OUTPUT chain và có thể được xử ký bởi các Post-routing chain của bảng FILTER và bảng MANGLE nếu nó cần SNAT hay QoS.

4.5.1.4 Các build-in targets và một số tùy chọn thường dùng

Jump là cơ chế chuyển một packet đến một target nào đó để xử lý thêm một

số thao tác khác.

Target là cơ chế hoạt động trong iptables, dùng để nhận diện và kiểm tra

packet.

4.5.1.5 Các build-in targets thường dùng

ACCEPT: iptables chấp nhận gói tin, đưa nó qua hệ thống mà khơng tiếp tục

kiểm tra nó nữạ

DROP: iptables loại bỏ gói tin, khơng tiếp tục xử lý nó nữạ

LOG: thơng tin của packet sẽ gởi vào syslog daemon iptables tiếp tục xử lý

luật tiếp theo trong bảng mô tả luật. Nếu luật cuối cùng khơng match thì sẽ drop packet. Với tùy chọn thông dụng là --log-prefix=”string”, tức iptables

sẽ ghi nhận lại những message bắt đầu bằng chuỗi “string” hoặc --log-level level (Ghi log sử dụng chỉ định cấp syslog. Level 7 là một lựa chọn tốt trừ

khi bạn cần gì đặc biệt khác)

REJECT: ngăn chặn packet và gởi thông báo cho sender. Với tùy chọn

thông dụng là --reject-with qualifier, tức qualifier chỉ định loại reject

message sẽ được gởi lại cho người gởị Các loại qualifer sau: icmp-port- unreachable (default), icmp-net-unreachable, icmp-host-unreachable, icmp-proto-unreachable, …

DNAT: thay đổi địa chỉ đich của packet. Tùy chọn là --to-destination ipađress.

SNAT: thay đổi địa chỉ nguồn của packet. Tùy chọn là --to-source <ađress>[-

ađress][:<port>-<port>]

MASQUERADING: được sử dụng để thực hiện kỹ thuật NAT (giả mạo địa

chỉ nguồn với địa chỉ của interface của firewall). Tùy chọn là [--to-ports <port>[-<port>]], chỉ định dãy port nguồn sẽ ánh xạ với dãy port ban đầụ

Một số tùy chọn thường dùng

Để xây dụng các rules bạn còn phải sử dụng các tùy chọn để tạo điều kiện so sánh. Sau đây là một số tùy chọn thường dùng:

 t: chỉ ra tên của bảng mà rule của bạn sẽ được ghi vào (mặc định là FILTER).  j: nhảy đến một kiểu xử lý (target) tương ứng như đã định nghĩa ở trên nếu

điều kiện so sánh thoả mãn.

 A: ghi nối tiếp rule vào đuôi một chain  F: xóa tất cả các luật trong bảng lựa chọn  N: tạo chain mới

CHƯƠNG 4: CÁC GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG

 X: Xóa hết các luật đã tạo

 P: đặt chính sách mặc định cho các Chain ( build-in INPUT, OUTPUT and FORWARD)

 L: liệt kê các luật có trong Chain

 F: xóa các luật có trong Chain (Flush Chain)  Z: reset bộ đếm Packet về 0

 A: thêm luật (Append)  D: xóa luật (Delete)  R: thay thế luật (Replace)  I: chèn thêm luật (Insert)

 p: so sánh protocol (giao thức) của gói tin.  s: so sánh địa chỉ nguồn của gói tin.

 d: so sánh địa chỉ đích của gói tin

 i: so sánh tên card mạng mà gói tin đi vào hệ thống qua đó  o: so sánh tên card mạng mà gói tin từ hệ thống đi ra qua đó.

 p tcp --sport <port>: xác định port nguồn của gói tin TCP. Có thể là một giá trị hoặc một chuỗi có dạng: start-port-number:end-port-number

 p tcp --dport <port>: xác định port đích của gói tin TCP. Có thể là một giá trị hoặc một chuỗi có dạng: starting-port:ending-port

 p udp --sport <port>: xác định port nguồn của gói tin UDP. Có thể là một giá trị hoặc một chuỗi có dạng: start-port-number:end-port-number

 p udp --dport <port>: xác định port đích của gói tin UDP. Có thể là một giá trị hoặc một chuỗi có dạng: starting-port:ending-port

 syn: xác định gói tin có phải là một yêu cầu tạo một kết nối TCP mới không.  icmp-type: xác định loại gói icmp (echo-reply hay echo-request).

 m multiport --sport < port, port >: xác định một loạt các giá trị port nguồn  m multiport --dport < port, port >: xác định một loạt các giá trị port đích.  m multiport --port < port, port >: xác định một loạt các giá trị port ( không

phân biệt nguồn hay đích ).

 m --state < state >: xác định trạng thái kết nối mà gói tin thể hiện. Các trạng thái thơng dụng nhất được dùng là:

ESTABLISHED: gói tin thuộc một kết nối đã được thiết lập. NEW: gói tin thể hiện một yêu cầu kết nốị

RELATED: gói tin thể hiện một yêu cầu kết nối thứ hai (có liên quan đến kết nối thứ nhất, thường xuất hiện ở những giao thức FPT hay ICMP)

CHƯƠNG 4: CÁC GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG

4.5.1.6 Các lệnh cơ bản

Cài đặt Iptables

apt-get install iptables

Kiểm tra version iptables:

rpm -q iptables

Và để xem iptables là thực sự hoạt động, chúng ta có thể kiểm tra xem các mô-đun iptables được nạp và sử dụng L-switch để kiểm tra các quy định hiện đang được

nạp:

lsmod | grep ip_tables

iptables hoạt động thì kết quả trả về tương tự như sau: ip_tables 17029 1 iptable_filter

x_tables 17349 2 xt_tcpudp,ip_tables

Lệnh khởi động iptables:

service iptables start service iptables stop service iptables restart

hoặc:

/etc/init.d/iptables start /etc/init.d/iptables stop /etc/init.d/iptables restart

Lệnh bật/tắt iptables trong starup:

chkconfig iptables on chkconfig iptables off

Lệnh kiểm tra tình trạng iptables:

service iptables status

Lệnh mở 1 port:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT //port:80 for web iptables -A INPUT -p tcp --dport 21 -j ACCEPT //port:21 for ftp

Lệnh mở 1 dãy port:

iptables -A INPUT -p tcp --dport 7777:7778 -j ACCEPT //mở port từ 7777 đến 7778

Kiểm tra các Port đang mở:

CHƯƠNG 4: CÁC GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG

Kiểm tra iptables cho phép kết nối:

iptables -L -n

Sau khi thao tác bạn có thể vào đây check các port xem xữ lý ok không

4.5.1.7 Cách lưu, reboot và chỉnh sửa cấu hình Iptables

Thơng thường iptables lưu trữ cấu hình hiện tại của nó tại /etc/sysconfig/iptables,

mỗi lần hệ thống reboot nó sẽ dùng lệnh iptable-restore để đọc lại cấu hình từ file này và active nó.

Để xem cấu hình iptables hiện tại bạn có thể dùng lệnh:

cat /etc/sysconfig/iptables hoặc iptables-save

# Generated by iptables-save v1.2.9 on Mon Nov 8 11:00:07 2004 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [144:12748] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 255 -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT

-A RH-Firewall-1-INPUT -p ah -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

# Completed on Mon Nov 8 11:00:07 2004

Để sửa cấu hình iptables bạn khơng nên sửa trực tiếp trên file /etc/sysconfig/iptables này thay vào đó bạn nên up cấu hình hiện tại ra một file tạm thời nào đó như sau:

iptables-save > firewall-config cat firewall-config

# Generated by iptables-save v1.2.9 on Mon Nov 8 11:00:07 2004 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [144:12748] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT

CHƯƠNG 4: CÁC GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG

-A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT

-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 255 -j ACCEPT -A RH-Firewall-1-INPUT -p esp -j ACCEPT

-A RH-Firewall-1-INPUT -p ah -j ACCEPT

-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

# Completed on Mon Nov 8 11:00:07 2004

Chỉnh sửa file firewall-config theo ý bạn (thêm sửa xoá các rules)

Sau đó reload nó để cho iptables sử dụng xem có hoạt động đúng với ý mình khơng

bằng lệnh:

iptables-restore < firewall-config

Nếu thấy hệ thống hoạt động tốt bạn có thể n tâm save file cấu hình đó bằng lệnh service iptables savẹ

4.5.2 FAIL2BAN

4.5.2.1 Giới thiệu về Fail2ban

Fail2ban là một phần mềm nguồn mở phòng chống xâm nhập được viết theo

ngơn ngữ lập trình Python. Nó có thể chạy trên các hệ thống POSIX có một giao diện cho một hệ thống kiểm sốt gói hoặc tường lửa được cài đặt sẵn (ví

dụ, iptables, TCP Wrapper, shorewall, denyhost ). Fail2ban được sử dụng để ngăn chặn các cuộc tấn cơng DoS. Trong sự kết hợp với iptables nó sẽ cấm các địa chỉ IP

đáng ngờ được tìm thấy từ các bộ lọc fail2ban.

4.5.2.2 Chức năng của Fail2ban

Fail2ban hoạt động bằng cách lựa chọn chặn địa chỉ IP của máy chủ đang cố

gắng xâm phạm an ninh của hệ thống. Nó xác định các máy chủ bị chặn bằng cách theo dõi các tập tin đăng nhập (ví dụ như / var / log / pwdfail, / var / log /

auth.log, vv) và cấm IP bất kì máy chủ nào cố gắng đăng nhập quá nhiều hoặc thực

hiện bất kỳ hành động nào khác không mong muốn trong một khung thời gian xác

định bởi người quản trị. Fail2ban thường được thiết lập để unban một máy chủ bị

chặn trong một thời gian nhất định, để khơng "khóa" bất kỳ kết nối hợp pháp nào mà có thể tạm thời sai (trường hợp quên pass tạm thời hoặc gõ sai). Tuy nhiên, một unban với thời gian chừng vài phút là đủ để ngăn chặn một kết nối mạng bị tràn ngập bởi các kết nối độc hại, cũng như giảm khả năng thành công của các cuộc tấn công từ điển.

Fail2ban có thể thực hiện nhiều hành động bất cứ khi nào một địa chỉ IP

đáng ngờ được phát hiện: cập nhật các quy tắc tường lửa của Netfilter / iptables,

hoặc TCP Wrapper bảng hosts.deny, từ chối địa chỉ IP của một kẻ tấn công, thông

báo email, hoặc bất kỳ hành động nào do người dùng định nghĩa bằng cách thực thi một kịch bản Python (tự tạo).

CHƯƠNG 4: CÁC GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG

4.5.2.3 Các tính năng chính của Fail2ban

Dưới đây là danh sách những tính năng chính có sẵn trong Fail2ban.  Kiến trúc Client / Server.

 Đa luồng.  Cấu hình caọ

 Hỗ trợ FAM / Gamin.

 Phân tích các tập tin đăng nhập và tìm mẫu nào đã chọ

 Thực hiện lệnh khi một mơ hình đã được phát hiện cùng một địa chỉ IP cho

nhiều hơn lần X, X có thể được thay đổị

 Sau một khoảng thời gian nhất định, thực thi một lệnh để bỏ cấm địa chỉ IP.

 Sử dụng Netfilter / iptables bằng cách mặc định, nhưng cũng có thể sử dụng TCP Wrapper (/ etc / hosts.deny) và nhiều hành động khác.

 Xử lý luân chuyển các file bản ghị

 Giải quyết tên máy đến địa chỉ IP DNS.

 Tự động phát hiện của các định dạng ngày / giờ

 Hỗ trợ ký tự đại diện trong tùy chọn LogPath

 Hỗ trợ xử lý cho rất nhiều các dịch vụ (sshd, apache, qmail, proftpd, sasl, Asterisk, vv)

 Hỗ trợ cho một vài hành động (iptables, tcp-wrapper, shorewall, các thông báo mail, vv)

Mã này đã được viết lại hoàn toàn, kể từ khi 0.6.x. Fail2ban hoàn toàn được viết bằng Python và do đó có thể làm việc trên hầu hết các hệ thống * nix.

4.5.2.4 Cơ chế hoạt động

Fail2ban bao gồm 2 phần: khách hàng và máy chủ.

Máy chủ (fail2ban-server) là đa luồng và lắng nghe trên một trình cắm

Unix cho các lệnh và thông tin khách hàng trong thời gian thực. Các máy chủ chính nó khơng biết gì về các tập tin cấu hình. Như vậy, lúc khởi động, máy chủ ở trạng thái "mặc định" trong đó khơng có nhà tù (jail) nào được xác định.

Khách hàng (fail2ban-client) là lối vào Fail2ban. Nó kết nối tới trình cắm

máy chủ các tập tin và gửi các lệnh để cấu hình và vận hành máy chủ. Khách hàng có thể đọc các tập tin cấu hình hoặc đơn giản là có thể được sử dụng để gửi một

lệnh duy nhất tới máy chủ bằng cách sử dụng command line hoặc chế độ tương tác

(được kích hoạt với -i option).

4.5.2.5 Cài đặt và cấu hình Fail2ban

 Để cài đặt Fail2ban sử dụng câu lệnh:

apt-get install fail2ban

Cấu hình

CHƯƠNG 4: CÁC GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG

Fail2ban có hai tập tin cấu hình chính được gọi là /etc/fail2ban/fail2ban.conf và /etc/fail2ban/jail.conf

Thông thường bạn chỉ cần thay đổi jail.conf Jail.conf được chia bởi section:

[default] Trường hợp tất cả những tùy chọn mặc định nên đi, vì tất cả chúng có thể

được ghi đè bởi những tùy chọn khác được viết trong các jail cá nhân ghi vào tập tin

nàỵ

Các tùy chọn là:

enabled

Xác định một section nào đó được kích hoạt hay khơng, các giá trị của nó là:

 false

 true

filter

Điều này không được sử dụng trong section default mà nó được sử dụng để nói cho

fail2ban client những gì nó đang tìm kiếm trong logfile, giá trị của nó là một trong:

 sshd

 proftpd

 httpd

action

Tùy chọn này nói cho Fail2ban hành động gì sau khi một nguyên tắc bị phá vỡ, có thể được quy định bởi một hành động mặc định trong section default, và để ghi đè

lên mỗi phần tử bạn cần phải thay đổi các giá trị mặc định.

logpath

Với tùy chọn này chúng ta phải vượt qua tập tin được phân tích cú pháp, nên được

đưa vào những tài khoản phân phối khác nhau, có những tập tin log khác nhau, ví

dụ cho SSH:

 CentOS -> /var/log/secure

 Debian -> /var/log/auth

 Ubuntu -> /var/log/auth

 Sabayon -> /var/log/messages

Nếu bạn đặt một giá trị sai ở đây, nó sẽ khơng làm việc và sẽ cung cấp cho bạn rằng khơng có lỗị

Ignoreip

Tùy chọn này được sử dụng để thiết lập một hoặc một số IP khơng bị chặn,

khơng có điều gì xảy ra khi một người dùng dù đăng nhập sai bao nhiêu lần đi nữa

CHƯƠNG 4: CÁC GIẢI PHÁP BẢO MẬT CHO HỆ THỐNG

maxretry

Tùy chọn này được sử dụng để thiết lập các giới hạn của việc thử lại cấp cho một người sử dụng trước khi bị chặn

bantime

Tùy chọn này được sử dụng để thiết lập thời gian (tính bằng giây) một IP sẽ bị cấm, tốt nhất là 5 phút, tức 300 giây, điều này sẽ triệt tiêu các bot (Anti ĐoS)

Một phần của tài liệu bảo mật hệ thống call center (Trang 105 - 115)

Tải bản đầy đủ (PDF)

(177 trang)