Thiết lập cấu hình Iptables cho máy chủ

Một phần của tài liệu Nghiên cứu xây dựng giải pháp phòng chống tấn công, đột nhập vào hệ thống để đảm bảo an toàn thông tin trên hệ điều hành mã nguồn mở (Trang 61)

Để đảm bảo an toàn cho các máy chủ cũng nhƣ mạng cục bộ, cần phải triển khai hệ thống tƣờng lửa nhằm mục đích kiểm soát việc truy cập vào ra. Cũng giống nhƣ các hệ thống tƣờng lửa khác, Iptables đƣợc triển khai nằm giữa kết nối máy chủ hay mạng cục bộ với internet. Mô hình triển khai Iptables đƣợc trình bày nhƣ hình dƣới đây:

Hình 3.15: Mô hình triển khai Iptables

Nhƣ đã giới thiệu, với các hệ điều hành nguồn mở nhƣ Linux Ubuntu khi cài đặt đã tích hợp sẵn Iptables. Tuy nhiên, Iptables ban đầu thiết lập cho phép chấp nhận tất cả các gói tin đến và đi qua firewall. Để xem danh sách các luật trong mỗi chain của bảng tƣơng ứng sử dụng tùy chọn –L với cú pháp: iptables –L [–t table] trong

trƣờng hợp không chỉ rõ tên bảng cần xem cụ thể sẽ mặc định hiển thị bảng filter nhƣ hình minh họa dƣới đây:

Hình 3.16: Thiết lập ban đầu của iptables

Để thiết lập hệ thống firewall iptables công việc của chúng ta chính là tùy theo yêu cầu cụ thể tiến hành xây dựng các luật kiểm soát việc truy cập vào các cổng, cũng nhƣ các luật kiểm soát dung lƣợng, số lƣợng và các giao thức giao tiếp giữa máy chủ và mạng nội bộ với bên ngoài ....để làm sao đảm bảo chỉ những cổng hay gói tin... cho phép mới đƣợc vào ra qua firewall. Trong phần dƣới đây sẽ trình bày việc thiết lập iptables cho máy chủ phục vụ web.

Giả sử máy chủ phục vụ web kết nối mạng trực tiếp vào Internet qua card mạng eth0, địa chỉ IP là 192.168.1.3. Cần lập cấu hình tƣờng lửa Iptables đáp ứng các yêu cầu:

- Mở cổng TCP 80 (chạy apache) cho mọi ngƣời truy cập Web.

- Mở cổng TCP 21 (chạy proftpd) cho ngƣời quản trị tải tệp lên máy chủ.

- Mở cổng TCP 22 (chạy openssh) cho ngƣời quản trị kết nối vào máy chủ từ xa để nâng cấp hoặc vá lỗi cho máy chủ khi cần.

- Mở cổng UDP 53 (chạy tinydns) để phục vụ tên miền.

- Giới hạn số lƣợng kết nối nhằm chống đƣợc các cơ chế tấn công nhƣ DoS. Sau khi đã xác định đƣợc yêu cầu cần thiết lập của firewall nhƣ trên, tiến hành xây dựng các luật và đẩy vào trong các bảng tƣơng ứng. Để đáp ứng yêu cầu mở cổng 80 với giao thức truy cập là TCP cho tất cả mọi ngƣời vào để truy cập web, luật đƣợc xây dựng nhƣ sau:

iptables -A INPUT -s 0/0 -p tcp -d 192.168.1.3 --dport 80 -i eth0 -j ACCEPT Cú pháp trên thực hiện việc thêm một luật vào cuối chain INPUT trong bảng filter (-A INPUT) với địa chỉ IP nguồn là bất kỳ địa chỉ nào (-s 0/0), giao thức truy cập là TCP (- p tcp), địa chỉ đích là 192.168.1.3 (-d 192.168.1.3), mở cổng đích 80 (--dport 80), card mạng đích eth0 (-i eth0), tất cả các gói tin đi vào đều đƣợc chấp nhận (-j ACCEPT) Tƣơng tự tiến hành xây dựng các luật đáp ứng các yêu cầu tiếp theo nhƣ sau:

iptables -A INPUT -s 0/0 -p tcp -d 192.168.1.3 --dport 22 -i eth0 -j ACCEPT iptables -A INPUT -s 0/0 -p udp -d 192.168.1.3 --dport 53 -i eth0 -j ACCEPT Luật giới hạn số lƣợng kết nối đƣợc xây dựng nhƣ sau:

iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -i eth0 -j ACCEPT

Iptables cho phép giới hạn giá trị lớn nhất số lƣợng các gói phù hợp trong một giây. có thể chỉ định thời gian theo định dạng /second, /minute, /hour, hoặc /day. Hoặc sử dụng dạng viết tắt 3/s thay vì 3/second. Với luật ở trên, ICMP echo-request bị giới hạn không nhiều hơn một yêu cầu trong một giây. Đặc điểm này của Iptables giúp ta lọc bớt các lƣu lƣợng lớn, đây chính là đặc tính của tấn công từ chối dịch vụ (DoS) và sâu Internet.

Cũng có thể mở rộng khả năng giới hạn của Iptables để giảm thiểu khả năng bị tấn công bởi các loại tấn công từ chối dịch vụ. Đây là cách phòng vệ chống lại kiểu tấn công SYN flood bằng cách hạn chế sự chấp nhận các phân đoạn TCP có bít SYS không nhiều hơn 5 phân đoạn trong một giây. Luật thực hiện khả năng trên nhƣ sau: iptables -A INPUT -p tcp --syn -m limit --limit 5/s -i eth0 -j ACCEPT

Sau khi đã xây dựng đƣợc các luật đáp ứng các yêu cầu trên, việc tiếp theo là phải đóng tất cả các kết nối khác vào các cổng của máy chủ.

iptables -A INPUT -s 0/0 -p all -i eth0 -j DROP

Công việc cuối cùng là đẩy các luật vào chain trong bảng filter, kết quả đƣợc minh họa nhƣ hình dƣới đây:

Hình 3.17: Một số luật trong Iptables thiết lập cho máy chủ Web

Ngoài các luật đƣợc xây dựng để đáp ứng các yều thiết lập máy chủ ở trên, chúng ta cũng có thể thiết lập thêm các luật khác nhằm tăng cƣờng an toàn cho hệ thống nhƣ một số thiết lập sau:

Luật cho phép hệ thống thực hiện lệnh Ping từ hệ thống ra bên ngoài. iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

Để hạn chế khả năng bị tấn công theo kiểu DoS và tăng cƣờng tốc độ cho máy chủ phục vụ web có thể sử dụng cách tải cân bằng (load-balacing) nhƣ sau: Đặt các máy chủ phục vụ web trong một mạng, dùng DNAT trên các gateway 192.168.1.3 để chuyển tiếp các gói tin từ client đến một trong các máy chủ phục vụ web trong mạng hoặc mạng LAN bằng cách thiết lập luật nhƣ sau:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1-192.168.1.3

Ngoài việc sử dụng tùy chọn -A để thêm các luật vào mỗi chain trong các bảng tƣơng ứng. chúng ta cũng có thể sử dụng các tùy chọn khác để hiệu chỉnh luật nhƣ sau: iptables [-t table] -D {chain}{rulenum}: Xóa luật có số hiệu rulenum trong chain của bảng tƣơng ứng.

iptables [-t table] -F: Xóa toàn bộ các luật trong các chain đã thiết lập của bảng tƣơng ứng.

iptables [-t table] -R {chain} {rulenum} {rule-specification}: Thay thế các thiết lập cho luật có số hiệu rulenum của chain với các thiết lập trong rule-spectfication của bảng tƣơng ứng.

iptables [-t table] -I {chain} [rulenum] {rule-specification}: Chèn thêm luật vào vị trí có số hiệu rulenum nếu không chỉ định số hiệu sẽ chèn vào vị trí đầu tiên của chain với các thiết lập đƣợc chỉ ra trong rule-specification vào bảng tƣơng ứng.

Cùng với việc sử dụng các chain do iptables xây dựng sẵn, ngƣời dùng cũng có thể tự xây dựng các chain riêng (User Defined chains). Ngƣời dùng có thể sử dụng để định nghĩa một chain mô tả cho tất cả các giao thức cho việc xử lý gói tin. Cũng có thể sử dụng các chain riêng này để thay thế cho các chain dài dòng bằng cách sử dụng chain chính chỉ đến nhiều chain con.

Để tạo một chain riêng sử dụng lệnh: iptables [-t table] -N {chain name} dƣới đây trình bày ví dụ minh họa việc xây dựng một chain riêng và sử dụng chain này. iptables -N NAMDV

iptables -A NAMDV -m limit --limit -burst 5 --limit 2/m -j RETURN iptables -A NAMDV -j DROP

iptables -A INPUT -p icmp --icmp-type echo-request -i eth0 -j NAMDV Kết quả khi thực hiện các lệnh trên đƣợc minh họa nhƣ hình dƣới đây:

Hình 3.18: Tạo và sử dụng các chain riêng

Đoạn mã trên sẽ thực hiện các công việc sau:

 Lệnh đầu tiên sẽ thực hiện việc tạo một chain mới có tên là NAMDV, vì không có tham số -t để chỉ rõ tên bảng thêm chain mới này nên chain NAMDV sẽ mặc định thêm vào bảng filter.

 Lệnh tiếp theo sẽ thêm một luật vào cuối chain NAMDV, luật này giới hạn limit-burst ở mức 5 gói tin, limit là 2 gói tin/phút, nếu thỏa luật này sẽ trả về (RETURN).

 Lệnh thứ 3 xử lý trƣờng hợp không thỏa mãn giới hạn limit-burst 5, limit 2/m sẽ bị hủy (DROP).

 Lệnh cuối cùng sẽ thực hiện việc thêm một luật mới vào chain INPUT, có giao thức là icmp, loại icmp là echo-request, card mạng vào là eth0 và tham chiếu sử dụng đến chain NAMDV. (Luật này sẽ giới hạn các gói PING tới card mạng eth0 là 2 gói tin/phút sau khi đã đạt tới 5 gói).

Lƣu và phục hồi các luật trong Iptables:

Các thiết lập trong iptables sẽ bị mất khi máy khởi động lại (trở về thiết lập mặc định ban đầu) do đó cần phải lƣu lại các luật của các chain trong mỗi bảng. Mục đích của việc này đó là lƣu các luật đã thiết lập trong Iptables ra tệp dự phòng, chúng ta có thể bổ sung, sửa chữa các luật trong tệp này và sau đó phục hồi lại tất cả khi cần thiết.

Để lƣu các luật trong iptables sử dụng lệnh “iptables-save > tệp lƣu” dƣới đây trình bày minh họa việc lƣu các luật đã thiết lập ở trên vào tệp configweb.rule và cấu trúc của tệp configweb.rule

Hình 3.19: Minh họa lệnh lưu và cấu trúc tệp lưu trong Iptables

Sau khi đã lƣu vào tệp, muốn phục hồi lại các luật đã thiết lập sử dụng lệnh “iptables-restore < tệp lƣu”. Với lệnh này tất cả các thiết lập trong các bảng của iptables đƣợc lƣu trong tệp sẽ đƣợc phục hồi nhƣ ban đầu.

Một phần của tài liệu Nghiên cứu xây dựng giải pháp phòng chống tấn công, đột nhập vào hệ thống để đảm bảo an toàn thông tin trên hệ điều hành mã nguồn mở (Trang 61)

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

(103 trang)