a. Netfilter/IPtables
3.2.1 Gọi trợ giúp
Để gọi trợ giúp về Iptables, bạn gõ lệnh $ man iptables hoặc $ iptables -- help. Chẳng hạn nếu bạn cần biết về các tùy chọn của match limit, bạn gõ lệnh $ iptables -m limit --help.
3.2.2 Các tùy chọn để chỉđịnh thông số
• Chỉđịnh tên table: -t , ví dụ -t filter, -t nat, .. nếu không chỉ định table, giá trị mặc định là filter
• Chỉ đinh loại giao thức: -p , ví dụ -p tcp, -p udp hoặc -p ! udp để chỉ định các giao thức không phải là udp
• Chỉđịnh card mạng vào: -i , ví dụ: -i eth0, -i lo
• Chỉđịnh card mạng ra: -o , ví dụ: -o eth0, -o pp0
• Chỉ định địa chỉ IP nguồn: -s <địa_chỉ_ip_nguồn>, ví dụ: -s 192.168.0.0/24 (mạng 192.168.0 với 24 bít mạng), -s 192.168.0.1- 192.168.0.3 (các IP 192.168.0.1, 192.168.0.2, 192.168.0.3).
• Chỉ định địa chỉ IP đích: -d <địa_chỉ_ip_đích>, tương tự như -s Chỉđịnh cổng nguồn: --sport , ví dụ: --sport 21 (cổng 21), --sport 22:88 (các cổng 22 .. 88), --sport :80 (các cổng <=80), --sport 22: (các cổng >=22)
• Chỉđịnh cổng đích: --dport , tương tự như –sport
3.2.3. Các tùy chọn để thao tác với chain
• Tạo chain mới: iptables -N
• Xóa hết các luật đã tạo trong chain: iptables -X
• Đặt chính sách cho các chain `built-in` (INPUT, OUTPUT & FORWARD): iptables -P , ví dụ: iptables -P INPUT ACCEPT để chấp nhận các packet vào chain INPUT
• Liệt kê các luật có trong chain: iptables -L
• Xóa các luật có trong chain (flush chain): iptables -F
• Reset bộđếm packet về 0: iptables -Z
3.2.4. Các tùy chọn để thao tác với luật
• Thêm luật: -A (append) • Xóa luật: -D (delete) • Thay thế luật: -R (replace) • Chèn thêm luật: -I (insert)
3.2.5 Phân biệt giữa ACCEPT, DROP và REJECT packet
• ACCEPT: chấp nhận packet
• DROP: thả packet (không hồi âm cho client)
• REJECT: loại bỏ packet (hồi âm cho client bằng một packet khác)
# iptables -A INPUT -i eth0 --dport 80 -j ACCEPT chấp nhận các packet vào cổng 80 trên card mạng eth0
# iptables -A INPUT -i eth0 -p tcp --dport 23 -j DROP thả các packet đến cổng 23 dùng giao thức TCP trên card mạng eth0
# iptables -A INPUT -i eth1 -s ! 10.0.0.1-10.0.0.5 --dport 22 -j REJECT -- reject-with tcp-reset
Gửi gói TCP với cờ RST=1 cho các kết nối không đến từ dãy địa chỉ IP 10.0.0.1..5 trên cổng 22, card mạng eth1
# iptables -A INPUT -p udp --dport 139 -j REJECT --reject-with icmp- port-unreachable
Gửi gói ICMP `port-unreachable` cho các kết nối đến cổng 139, dùng giao thức UDP
3.2.6 Phân biệt giữa NEW, ESTABLISHED và RELATED
• NEW: mở kết nối mới
• ESTABLISHED: đã thiết lập kết nối
• RELATED: mở một kết nối mới trong kết nối hiện tại
Một số ví dụ:
# iptables -P INPUT DROP
Đặt chính sách cho chain INPUT là DROP
# iptables -A INPUT -p tcp --syn -m state --state NEW -j ACCEPT Chỉ chấp nhận các gói TCP mở kết nối đã set cờ SYN=1
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Không đóng các kết nối đang được thiết lập, đồng thời cũng cho phép mở các kết nối mới trong kết nối được thiết lập
# iptables -A INPUT -p tcp -j DROP các gói TCP còn lại đều bị DROP
3.2.7 Tùy chọn --limit, --limit-burst
--limit: tốc độ khi chạm mức đỉnh, tính bằng số packet/s(giây), m(phút), d(giờ) hoặc h(ngày).