netfilter/iptables 的最大優點是它可以配置有狀態的防火牆,這是 ipfwadm 和 ipchains 等以前的工具都無法提供的一種重要功能。有狀態的防火牆能夠指定並記住為發送或接收信息包所建立的連接的狀態。防火牆可以從信息包的連接跟蹤狀態獲得該信息。在決定新的信息包過濾時,防火牆所使用的這些狀態信息可以增加其效率和速度。這里有四種有效狀態,名稱分別為 ESTABLISHED 、 INVALID 、 NEW 和 RELATED 。
#添加屏蔽IP
#禁止此IP訪問服務器
iptables -I INPUT -s 1.2.3.4 -j DROP
或
iptables -A INPUT -s 1.2.3.4 -j DROP
重新打開該IP訪問
iptables -D INPUT -s 1.2.3.4 -j DROP
#禁止服務器訪問此IP
iptables -A OUTPUT -d 1.2.3.4 -j DROP
如果要封某個網段:
iptables -I INPUT -s 1.2.3.0/24 -j DROP
#清空屏蔽IP
iptables -t filter -D INPUT -s 1.2.3.4 -j DROP
iptables -t filter -D OUTPUT -d 1.2.3.4 -j DROP
#一鍵清空所有規則
iptables -F
#查看
iptables -L INPUT
或
iptables -L
或
iptables-save(此命令將保存規則,下次開機自動執行)
#處理IP碎片數量,防止攻擊,允許每秒100個
iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
#設置ICMP包過濾,允許每秒1個包,限制觸發條件是10個包
iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
Linux下iptables屏蔽IP和端口號
封單個IP的命令:iptables -I INPUT -s 124.115.0.199 -j DROP
封IP段的命令:iptables -I INPUT -s 124.115.0.0/16 -j DROP
封整個段的命令:iptables -I INPUT -s 194.42.0.0/8 -j DROP
封幾個段的命令:iptables -I INPUT -s 61.37.80.0/24 -j DROP
只封80端口:iptables -I INPUT -p tcp –dport 80 -s 124.115.0.0/24 -j DROP
解封:iptables -F
清空:iptables -D INPUT 數字
列出 INPUT鏈 所有的規則:iptables -L INPUT --line-numbers
刪除某條規則,其中5代表序號(序號可用上面的命令查看):iptables -D INPUT 5
開放指定的端口:iptables -A INPUT -p tcp --dport 80 -j ACCEPT
禁止指定的端口:iptables -A INPUT -p tcp --dport 80 -j DROP
拒絕所有的端口:iptables -A INPUT -j DROP
以上都是針對INPUT鏈的操作,即是外面來訪問本機的方向,配置完之后 需要保存,否則iptables 重啟之后以上設置就失效
service iptables save
iptables 對應的配置文件 /etc/sysconfig/iptables
注意:iptables的規則匹配順序上從上到下的,也就是說如果上下兩條規則有沖突時,將會以上面的規則為准。