添加規則 | -A | 在鏈末尾追加一條規則 |
-I | 在鏈開頭或某序號前插入一條規則 | |
查看規則 | -L | 列出所有規則 |
-n | 數字顯示地址和端口信息 | |
-v | 詳細信息 | |
-line-numbers | 顯示規則序號 | |
刪除規則 | -D | 刪除某個序號的規則 |
-F | 清空規則 | |
默認規則 | -P | 指定默認規則 |
1.查看規則
iptables -L -n
以數字形式查看filter表INPUT鏈的所有規則
iptables -nL INPUT
查看filter表INPUT鏈的所有規則,並顯示規則序號
iptables -L INPUT --line-numbers
2.增加規則
iptables -A INPUT -p tcp -j ACCEPT //在filter表INPUT鏈的末尾添加一條規則,允許TCP協議的數據包通過
iptables -I INPUT -p udp -j ACCEPT //在filter表INPUT鏈的首行添加一條規則,允許UDP協議的數據包通過
iptables -I INPUT 2 -p icmp -j ACCEPT //在filter表INPUT鏈的第二行添加一條規則,允許icmp協議的數據包通過
3.清除原規則
iptables -F 清除預設表filter中的所有規則鏈的規則
iptables -X 清除預設表filter中使用者自定鏈中的規則
iptables -D INPUT 2 刪除filter表INPUT鏈的第二條規則
4.設置規則
iptables -P FORWARD DROP //將filter表FORWARD鏈的默認策略設為丟棄
iptables -P OUTPUT ACCEPT //將filter表OUTPUT鏈的默認策略設為允許
設置ssh訪問
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
iptables -I INPUT -p icmp -j DROP //丟棄通過icmp協議訪問本機的數據包
iptables -A FORWARD ! -p icmp -j ACCEPT //允許轉發除了icmp協議之外的數據包
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP //防止Xmas掃描
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP //防止TCP Null掃描
iptables -A INPUT -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j DROP //拒絕TCP標記為SYN/ACK,但連接狀態為NEW的數據包,防止ACK欺騙
iptables -A INPUT -p icmp --icmp-type 8 -j DROP //禁止從其他主機ping本機,但允許本機ping其他主機
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
iptables -p icmp -h //查看可用的ICMP協議類型
允許loopback!(不然會導致DNS無法正常關閉等問題)
iptables -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
iptables -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)
iptables -P INPUT DROP //開放相關端口,對發給本機的TCP應答數據包予以放行,其他入站數據包都丟棄
iptables -I INPUT -p tcp -m multiport --dport 80,20,21,53 -j ACCEPT
iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 31337 -j DROP //減少不安全的端口連接
iptables -A OUTPUT -p tcp --dport 31337 -j DROP //減少不安全的端口連接
service iptables save //保存
systemctl restart iptables.service //重啟
systemctl enable iptables.service //開機啟動
5.其他用法
iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT //允許本機開放25、80、110、143端口,以便提供電子郵件服務
iptables -A INPUT -s 192.168.10.1 -p tcp --dport 22 -j ACCEPT //設置只允許某個ip的端口訪問
iptables -A FORWARD -p tcp -m iprange --src-range 192.168.10.1-192.168.10.100 -j ACCEPT //允許轉發192.168.10.1-192.168.10.100之間的TCP數據包
iptables -A INPUT -m mac --mac-source 00:50:2e:cf:44:3f -j DROP //禁止其MAC地址訪問本機的任何應用