Sunday, 8 June 2014

Giới thiệu và hướng dẫn sử dụng cơ bản iptables (Firewall)

1. iptables là gì?

thanhnt@Thanhnt:~$ whatis iptables
iptables (8) - administration tool for IPv4 packet filtering and NAT
Trước đây, gói firewall/NAT được sử dụng phổ biến trên linux là ipchans, dần dần bị thay thế dó có nhiều bug và thiếu tính năng, iptables ra đời.

So với ipchains, iptables có những ưu điểm vượt trội như:
  • Tích hợp cao với linux kernel
  • Có khả năng phân tích packet hiệu quả
  • Filter packet được dựa trên các MAC address và các giá trị của flags trong TCP header
  • Hệ thống log có các tùy chọn phù hợp, dựa trên mức độ và chi tiết reports
  • Translation địa chỉ mạng tốt hơn
  • Hỗ trợ tích hợp với các web proxy programs
  • Có khả năng ngăn chặn một số cơ chế tấn công theo kiểu DoS
...............

2. Một số lệnh cơ bản khi làm việc với iptables

  • Khởi động: service iptables start
  • Tắt: service iptables stop
  • Khởi động lại: service iptables restart
  • Xác định trạng thái: service iptables status

3. Cơ chế xử lý trong iptables

Iptables sẽ kiểm tra các packet khi nó đi qua iptables host, quá trình kiểm tra sẽ được tiến hành theo trình tự thời gian

Bất kì packet nào muốn đi đến host đều phải đi qua Input Chain
Bất kì packet nào muốn đi ra khỏi host đề phải đi qua output Chain
Bất kì packet nào mà máy host muốn chuyển (forward) cho máy khác phải đi qua Forward Chain

Tất cả các điều trên đều được iptables giám sát một cách chặt chẽ. Việc cấu hình cho input, output và foward chain được gọi là thiết lập rules cho Firewall

Một số port và service thông dụng trên linux:

Port Protocol service
21 TCP FTP
22 TCP SSH
23 TCP TELNET
25 TCP SMTP
53 TCP NAME(DNS)
80 TCP HTTP
110 TCP POP3
443 TCP HTTPS
3306 TCP MYSQL


4. Một số câu lệnh khi config iptables
4.1 Block a một địa chỉ IP

$ iptables -I INPUT -s 10.10.10.10 -j DROP
Để block một địa chỉ IP đơn ta sử dụng tùy chon -s (source)
-I : insert vào file config của input chain
INPUT: kiểm tra packet đến host, qua input chain
DROP: drop packet gửi đến từ máy có IP 10.10.10.10

4.2 Cho phép tất cả các traffic từ một IP:

$ iptables -A INPUT -s 10.10.10.10 -j ACCEPT

-A: append

4.3: Block tất cả các address theo port:
iptables -A INPUT -p tcp --dport 3306 -j DROP
-p: protocol. Ở đây là tcp
-dport: dest port, ở đây là 3306 , port của MySQL

4.4 Cho phép một port từ một single IP
iptables -A INPUT -p tcp -s 10.10.10.10 --dport 3306 -j ACCEPT
Tìm hiểu thêm tại:
$ man iptables