天天看點

Iptables規則管理

首先,清空centos6的預設規則,使用

iptables -F INPUT

指令清空filter表INPUT鍊中規則
Iptables規則管理

清空INPUT鍊以後,filter表中的INPUT鍊已經不存在任何的規則,但是INPUT鍊預設的政策是ACCEPT,會接受所有封包。

此時,我們使用另外一台機器ping本機,檢視是否能通;本機IP位址為10.10.10.15,ping指令機器的IP位址為10.10.10.16

Iptables規則管理

增加規則

配置一條規則,拒絕10.10.10.16上的所有封包通路本機;規則由比對條件和動作組成,那麼“拒絕10.10.10.16上的所有封包通路本機”這條規則中,封包的源位址為“10.10.10.16”則屬于比對條件,而“拒絕”這個封包,就屬于對應的動作了。

Iptables規則管理

上圖,-t指定要操作的表

-I選項,指定将規則插入到哪個鍊中 insert

-s選項,指定“比對條件”中的“源位址” source

-j選項,指定“比對條件”被滿足時,所對應的動作,DROP丢棄

此時,再通過10.10.10.16去ping15,已經不能ping通;ping指令一直沒有得到回應。

Iptables規則管理

如果,此時在INPUT鍊中增加一條接受來自10.10.10.16主機中的封包,iptables是否會接受來自16主機的封包呢?

Iptables規則管理

-A選項為append;-A表示在鍊的尾部追加規則,-I表示在鍊的首部插入規則

此時,再進行ping操作,發現仍然是不通的

Iptables規則管理

那麼試着從頭部插入一條規則呢

Iptables規則管理

發現已經能夠ping通

Iptables規則管理

由此可見,規則的順序十分重要

如果封包已經被前面的規則比對到,iptabels則會對封包執行對應的動作,即使後面的規則也能比對到目前封包,很有可能也沒有機會在對封包執行相應的動作了;以上圖為例,封包先被第一條規則比對到了,于是目前封包被“放行”了,因為封包已經被放行,第二條規則即使能夠比對到剛才放行的封包,也沒有機會進行丢棄操作了;這就是iptables的工作機制。

删除規則

想要删除剛才插入filter表中INPUT中的一條規則,應該怎麼做?

兩種辦法

1.可以根據規則的編号去删除

2.可以根據具體比對的動作删除

檢視filter表中INPUT鍊中的規則:

Iptables規則管理

删除第三條規則:

Iptables規則管理

-D選項表示删除指定鍊中的某條規則

根據比對條件和動作删除規則,比如,删除源位址為10.10.10.16,動作為ACCEPT的規則:

Iptables規則管理

-s選項指定源位址為比對對象;-j選項表示對應的動作

删除指定表中或鍊中所有規則的指令:iptables -t [表名] -F [鍊名]

在生産環境中,此條指令慎用!!!

如果想把源位址為10.10.10.16作為比對條件,動作DROP改為ACCEPT,怎麼改?

需要使用-R選項修改指定的鍊中的規則,在修改規則時指定規則對應的編号

Iptables規則管理

如果上述的指令中沒有使用-s指定對應規則中原本的源位址,那麼在修改完之後,修改的規則中的源位址會自動變成0.0.0.0/0,即比對所有網段的IP位址。

Iptables規則管理

我們還可以修改指定鍊的“預設政策”

Iptables規則管理

每張表中的每條鍊中,都有自己的預設政策,或者說預設動作。

當封包中沒有被鍊中的任何規則比對到時,防火牆會按照預設動作處理封包。

修改預設政策:

Iptables規則管理

-P選項指定要修改的鍊

儲存配置

在預設情況下,我們對防火牆的配置都是臨時的,當重新開機iptabels伺服器或重新開機伺服器後,修改的配置都會消失,為了防止這種清空的發送,我們需要将規則“儲存”。

1.centos6:

使用

iptables iptables save

指令即可儲存;預設儲存在"/etc/sysconfig/iptables"檔案中。

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           

繼續閱讀