首先,清空centos6的預設規則,使用 iptables -F INPUT
指令清空filter表INPUT鍊中規則

清空INPUT鍊以後,filter表中的INPUT鍊已經不存在任何的規則,但是INPUT鍊預設的政策是ACCEPT,會接受所有封包。
此時,我們使用另外一台機器ping本機,檢視是否能通;本機IP位址為10.10.10.15,ping指令機器的IP位址為10.10.10.16
增加規則
配置一條規則,拒絕10.10.10.16上的所有封包通路本機;規則由比對條件和動作組成,那麼“拒絕10.10.10.16上的所有封包通路本機”這條規則中,封包的源位址為“10.10.10.16”則屬于比對條件,而“拒絕”這個封包,就屬于對應的動作了。
上圖,-t指定要操作的表
-I選項,指定将規則插入到哪個鍊中 insert
-s選項,指定“比對條件”中的“源位址” source
-j選項,指定“比對條件”被滿足時,所對應的動作,DROP丢棄
此時,再通過10.10.10.16去ping15,已經不能ping通;ping指令一直沒有得到回應。
如果,此時在INPUT鍊中增加一條接受來自10.10.10.16主機中的封包,iptables是否會接受來自16主機的封包呢?
-A選項為append;-A表示在鍊的尾部追加規則,-I表示在鍊的首部插入規則
此時,再進行ping操作,發現仍然是不通的
那麼試着從頭部插入一條規則呢
發現已經能夠ping通
由此可見,規則的順序十分重要
如果封包已經被前面的規則比對到,iptabels則會對封包執行對應的動作,即使後面的規則也能比對到目前封包,很有可能也沒有機會在對封包執行相應的動作了;以上圖為例,封包先被第一條規則比對到了,于是目前封包被“放行”了,因為封包已經被放行,第二條規則即使能夠比對到剛才放行的封包,也沒有機會進行丢棄操作了;這就是iptables的工作機制。
删除規則
想要删除剛才插入filter表中INPUT中的一條規則,應該怎麼做?
兩種辦法
1.可以根據規則的編号去删除
2.可以根據具體比對的動作删除
檢視filter表中INPUT鍊中的規則:
删除第三條規則:
-D選項表示删除指定鍊中的某條規則
根據比對條件和動作删除規則,比如,删除源位址為10.10.10.16,動作為ACCEPT的規則:
-s選項指定源位址為比對對象;-j選項表示對應的動作
删除指定表中或鍊中所有規則的指令:iptables -t [表名] -F [鍊名]
在生産環境中,此條指令慎用!!!
如果想把源位址為10.10.10.16作為比對條件,動作DROP改為ACCEPT,怎麼改?
需要使用-R選項修改指定的鍊中的規則,在修改規則時指定規則對應的編号
如果上述的指令中沒有使用-s指定對應規則中原本的源位址,那麼在修改完之後,修改的規則中的源位址會自動變成0.0.0.0/0,即比對所有網段的IP位址。
我們還可以修改指定鍊的“預設政策”
每張表中的每條鍊中,都有自己的預設政策,或者說預設動作。
當封包中沒有被鍊中的任何規則比對到時,防火牆會按照預設動作處理封包。
修改預設政策:
-P選項指定要修改的鍊
儲存配置
在預設情況下,我們對防火牆的配置都是臨時的,當重新開機iptabels伺服器或重新開機伺服器後,修改的配置都會消失,為了防止這種清空的發送,我們需要将規則“儲存”。
1.centos6:
使用
iptables iptables save
指令即可儲存;預設儲存在"/etc/sysconfig/iptables"檔案中。
2.centos7:
iptables-save指令,同樣适用于centos6
iptables-save >> /etc/sysconfig/iptables
重載規則:
iptables-restore < /etc/sysconfig/iptables
指令總結
1.添加規則
ptables -t 表名 -A 鍊名 比對條件 -j 動作
# 在對應鍊的末尾增加規則
iptables -t 表名 -I 鍊名 比對條件 -j 動作
# 在對應鍊的開頭插入規則
iptables -t 表名 -I 鍊名 規則序号 比對條件 -j 動作
# 在指定位置添加
iptables -t 表名 -P 鍊名 動作
# 設定表的預設動作
2.删除規則
iptables -t 表名 -D 鍊名 規則序号
# 按照序号删除規則
iptables -t 表名 -D 鍊名 比對條件 -j 動作
# 按照具體的比對條件與動作删除規則
iptables -t 表名 -F 鍊名
# 删除指定表的指定鍊中的所有規則
3.修改規則
# 使用-R選項修改規則中的動作,必須指明原規則中的比對條件
# 指令文法
iptables -t 表名 -R 鍊名 規則序号 規則原本的比對條件 -j 動作
# 其他修改方法:先通過編号方式删除規則,然後在原編号位置插入一條規則
# 修改指定表中指定鍊的預設動作:
iptables -t 表名 -P 鍊名 動作
4.儲存規則
預設将規則儲存至/etc/sysconfig/iptables檔案中
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables
iptables-restore < /etc/sysconfig/iptables