Nguồn bài viết:
- http://www.linuxhomenetworking.com/w...Using_iptables
- Giới thiệu về iptables: Trần nhật huy
I. GIỚI THIỆU VỀ IPTABLE:
Bảo mật mạng là vấn đề quan trọng hàng đầu đối với một website, cũng như nhiều dịch vụ khác trên mạng. Một trong những cách bảo về là sử dụng firewall. Bài viết này sẽ giới thiệu đầy đủ về iptables - một firewall được sử dụng thông dụng nhất trong hệ thống Unix, Linux
II. SỬ DỤNG iptables
1. Khởi động iptables
Ba câu lệnh trên dùng trong các hệ điều hành của Red Hat. Với các distro khác, các bạn thay service thành /etc/init.d/iptablesCode:#service iptables start #service iptables stop #service iptables restart
Để cho iptables khởi động cùng máy:
để xem trạng thái của iptablesCode:#chkconfig iptables on
2. Xử lý gói trong IptablesCode:#service iptables status
Tất cả các gói dữ liệu đều được kiểm tra bởi iptables bằng cách dùng các loại hành động (queues). Có 3 loại gồm:
- Mangle: Chịu trách nhiệm thay đổi các bit chất lượng dịch vụ (TOS, TTL, MARK)
- Filter: Chịu trách nhiệm lọc gói dữ liệu: Nó bao gồm 3 quy tắc nhỏ (chain) để giúp bạn thiết lập nguyên tắc lọc gói , gồm:
o Forward chain: Lọc gói khi đến các server khác
o Input chain: Lọc các gói đi vào trong server
o Output chain: Lọc các gói đi ra khỏi server
- NAT: Gồm có hai loại
o Pre-routing chain: Thay đổi địa chỉ đến của gói dữ liệu khi cần thiết
o Post-routing chain: Thay đổi địa chỉ nguồn của gói dữ liệu khi cần thiết
Các loại queues và các quy tắc xử lý gói (chain) của nó
Để có cái nhìn tổng quát hơn về việc lọc và xử lý gói tin trong iptables, ta có thể tham khảo hình sau:
Dưới đây là biểu đồ đường đi của gói dữ liệu:
Nói chung, quy trình tuần tự:
- Gói dữ liệu có cần phải sửa các bit dịch vụ hay không (mangle table PREROUTING chain)
- Nó có cần phải thay đổi địa chỉ đích hay không (NAT table PREROUTING chain)
- Nó đi đến mạng ngoài hay vào trong máy cục bộ firewall (Routing)
o Nếu đi đến mạng ngoài: Nó sẽ được lọc bởi FORWARD chain filter table, và nếu cần sẽ được thay đổi địa chỉ nguồn (SNAT) trước khi vào mạng B.
o Nếu gói dữ liệu đi vào trong máy cục bộ firewall: nó sẽ được kiểm tra bởi INPUT chain trong mangle table, và sẽ được lọc bởi filter table. Nếu qua được nó sẽ vào các chương trình bên trong của máy cục bộ firewall.
- Khi firewall cần gởi dữ liệu ra ngoài:
o Nó sẽ được kiểm duyệt qua OUTPUT chain
o OUTPUT chain cũng kiểm tra xem có cần phải DNAT hay không
o Cuối cùng trước khi gói dữ liệu đi ra ngoài, nó POSTROUTING sẽ xem có cần SNAT và sửa các thông số dịch vụ hay không (Qos, TTL..)
3. Targets:
Target là hành động diễn ra khi một gói dữ liệu được kiểm tra phù hợp với một yêu cầu nào đó. Khi một target đã được nhận dạng, gói dữ liệu cần nhảy (jump) để thực hiện các xử lý tiếp theo. Bảng sau liệt kê các targets mà iptables sử dụng.
4. Các tham số chuyển mạch quan trọng của iptables:
Các tham số sau sẽ cho phép iptables thực hiện các hành động sao cho phù hợp với biểu đồ xử lý gói do người sử dụng hoạch định sẵn.
Để rõ hơn, chúng ta xét ví dụ sau:
iptables được cấu hình để cho phép (ACCEPT) các gói TCP đến từ interface eth0, có địa chỉ nguồn bất kỳ(0/0) và địa chỉ đích là 192.168.1.1.Code:iptables –A INPUT –s 0/0 –i eth0 –d 192.168.1.1 –p TCP –j ACCEPT
Bảng các điều kiện TCP và UDP thông dụng:
Một ví dụ cụ thể:
iptables được cấu hình để cho phép firewall chấp nhận các gói dữ liệu có giao tiếp là TCP, đến từ card mạng eth0, có bất kỳ địa chỉ IP nguồn nào, địa chỉ đích là 192.168.1.158 đến card eth1. Số port nguồn từ 1024 đến 65535 và port đích đến là 80(HTTP).Code:iptables -A FORWARD -s 0/0 -I eth0 -d 192.168.1.158 -o eth1 -p TCP --sport 1024:65535 --dport 80 -j ACCEPT
Bảng điều kiện ICMP
Ví dụ cụ thể về ICMP:
Hai ví dụ trên cấu hình cho iptables chấp nhận gởi ICMP echo-request (ping) và gởi lại các gói icmp echo-replies.Code:iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
Ta cùng xem ví dụ khác sau:
Với cấu hình trên, iptables giới hạn 1 gói icmp request gởi đến trong 1 giây. Bạn có thể chỉ định thời gian theo định dạng /second, /minute, hour, hoặc /day. Hoạc sử dụng từ viết tắt như 3/s thay cho 3/second. Cấu hình này của iptables giúp chúng ta lọc bớt các lưu lượng lớn, đây là hình thức tấn công từ chối dịch vụ (DOS).Code:iptables -A INPUT -p icmp --icmp-type icmp-request -m limit --limit 1/s -i eth0 -j ACCEPT
Ví dụ trên là cấu hình 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ó bit SYN không nhiều hơn 5 lần trong 1 giây.Code:iptables -A INPUT -p tcp --syn -m limit --limit 5/s -i eth0 -j ACCEPT
Các điều kiện mở rộng thông dụng
Ví dụ dưới đây là mở rộng cho ví dụ trước.
iptables được cấu hình cho phép firewall chấp nhận các gói dữ liệu có giao tiếp (protocols) là TCP, đến từ card mạng eth0, có bất kỳ địa chỉ ip nguồn, đi đến địa chỉ 192.168.1.58 qua card mạng eth1. Số port nguồn từ 1024 đến 65535 và port đích là 80 (HTTP) hoặc 443 (HTTPS). Đến khi các gói dữ liệu được gởi trở lại từ 192.168.1.58, thay vì mở các port nguồn và đích, bạn chỉ việc cho phép dùng kết nối cũ đã thiết lập bằng cách dùng tham số -m state và --state ESTABLISHEDCode:iptables -A FORWARD -s 0/0 -i eth0 -d 192.168.1.58 -o eth1 -p TCP --sport 1024:65535 -m multiport --dport 80,443 -j ACCEPT iptables -A FORWARD -d 0/0 -o eth0 -s 192.168.1.58 -i eth1 -p TCP -m state --state ESTABLISHED -j ACCEPT
5. Sử dụng user defined chains:
Chuỗi User Defined Chain nằm trong bảng iptables. Nó giúp cho quá trình xử lý gói tốt hơn.
Ví dụ: Thay vì sử dụng gói đơn được xây dựng trong chain cho tất cả các giao thức, ta có thể sử dụng chain này để quyết định loại giao thức cho gói và sau đó kiểm soát việc sử lý user-defined, protocol-specific chain trong bảng filter table.
Sáu lệnh sau giúp cải tiến tốc độ xử lý:
Code:iptables -A INPUT -i eth0 -d 206.229.110.2 -j fast-input-queue iptables -A OUTPUT -o eth0 -s 209.229.110.2 -j fast-output-queue iptables -A fast-input-queue -p icmp -j icmp-queue-in iptables -A fast-output-out -p icmp -j icmp=queue-out iptables -A icmp-queue-out -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT iptable -A icmp-queue-in -p icmp --icmp-type echo-reply -j ACCEPT
Sáu queue trên giúp cải thiện chức năng xử lý:
6. Lưu lại các đoạn script iptables
Dịch vụ iptables lưu vĩnh viễn cấu hình iptables trong tập tin /etc/sysconfig/iptables . Khi khởi động lại hệ thống, iptables sẽ đọc file cấu hình này và khôi phục lại các cấu hình trước.
--------------------------------------------------
Xem các chủ đề cùng chuyên mục:
- Tổng quan về hệ điều hành Ubuntu (Linux) 15/03/2010
- Viết bài lấy may mắn đầu năm 2011 02/02/2011
- Cấu trúc hệ thống tập tin trong linux 31/07/2011
- Hệ điều hành Linux Ultimate edition 2.8 28/12/2010
- [Hỏi]Cách triển khai website trên Linux bằng XAMPP 17/10/2010
- AE Ai Có Đề Thi Môn Hệ Điều Hành Linux Các Năm Truớc Không 22/12/2011
- Video hướng dẫn cài đặt Fedora trên máy ảo VMWear 6 12/09/2010
- Hướng dẫn cài VMware VMware Workstation trên nền Linux 15/11/2009
- Cài Linux bằng ổ USB với UNetbootin 23/03/2010
- Lỗi Cài UbunTu,Cần Support 04/04/2010
+5 EXP



















Trả Lời Với Trích Dẫn
"Hãy chuẩn bị và sẵn sàng, rùi một ngày cơ hội sẽ đến với bạn"