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

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

2

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

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ể yê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 soá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

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ể đượcghi đè 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) trong khi vẫn cho phép người sử dụng hợp pháp có thể cố gắng đăng nhập một lần nữa sau khi kết thúc thời gian cấm

destmail

Sử dụng tùy chọn này để thiết lập các email của người sẽ nhận được cảnh báo khi một IP bị cấm

banaction

Sử dụng tùy chọn này để chỉ định hành động sẽ được thực thi để cấm một địa

chỉ IP vi phạm. Tức là:

 iptables --- Sử dụng Iptables để cấm các IP vi phạm  iptables-new --- Chỉ cấm các kết nối mới

 iptables-multiport --- Cấm tất cả các Port từ IP vi phạm  shorewall --- Sử dụng Shorewall thay vì Iptables

Protocol

Thiết lập các giao thức mặc định để cấm, TCP hoặc UDP.

Ví dụ: [ssh] Enabled = true port=ssh filter=sshd logpath=/var/log/auth.log maxretry=6

Đây là ví dụđiển hình cho SSH, kiểm tra log /var/log/auth.log bằng cách sử dụng

bộ lọc sshd và nếu nó tìm thấy 6 nổ lực tấn công thì sẽđóng port 22 (hành động

mặcđịnh) [apache-multiport] enable=true port=http,https filter = apache-auth logpath = /var/log/apache*/*error.log maxretry=6

Tương tự với ví dụ thứ 2 cho Apache, sự khác biệt là khối 2 port (http và https) và kiểm tra các tập tin log.

4.5.3 Fail2ban kết hợp với Iptables

Trong giải pháp này, chúng ta có một tường lửa dựa trên Linux giữa Internet và các máy chủ. Mỗi máy tính và máy ảo phía sau tường lửa chạy Fail2ban, nhưng

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

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

(177 trang)