7.2. 使用 IPTables

使用 IPTables 的第一步驟便是啟動 IPTables 服務,可以由下列指令來完成:

service iptables start

警告警告
 

必須要使用下列指令來關閉 IP6Tables 服務才能正確地使用 IPTables 服務:

service ip6tables stop
chkconfig ip6tables off

如要於系統開機時預設啟動 IPTables,您必須使用 chkconfig 來更改服務的執行等級狀態。

chkconfig --level 345 iptables on

IPTables 的語法被劃分為許多層級,主要的層級是 chain,一個 chain 可指定 一個封包將被處理的狀態,用法如下:

iptables -A chain -j target

-A 將會增加一個規則到目前既有之規則組的最後,chain 便是一個規則的鏈結名稱。 IPTables 三個嵌入的鏈結(也就是影響穿越網路之每一個封包的鏈結)為 INPUT, OUTPUT 與 FORWARD,這些鏈結是永久性的,您不能刪除它們。

重要重要
 

當您要建立一個 IPTables 規則組時,請特別注意順序是很重要的。 舉例來說,假如一個鏈結指定任何來自 本地端 192.168.100.0/24 子網路的封包都丟棄(DROP),然後此鏈結再加上(-A) 允許來自 192.168.100.13 的封包(此網路是位於封包將被丟棄的限制子網路中),那麼所加上的規則將會被 忽視。 您必須設定一個規則先允許 192.168.100.13,然後再於該子網路設定一個丟棄(DROP)的規則。

如要在一個既有的鏈結規則中強制插入一個規則,請使用 -I 後面再加上 您想要插入之規則的鏈結,以及一個您想要此規則放置位置的規則號碼(1,2,3,...,n),例如:

iptables -I INPUT 1 -i lo -p all -j ACCEPT

此規則將被放入 INPUT 鏈結的第一個規則,以允許本機的 loopback 裝置流量。

7.2.1. 基本的防火牆方針

一開始所建立的一些基本的政策可以用來當作一個建立更詳細且使用者定義之規則的基礎,IPTables 使用政策 (-P)來建立預設的規則。 擁有安全性警覺的系統管理員通常會選擇丟棄 (DROP)所有的封包來當作一個政策,而且只允許個別例子的特定封包。 下列的規則將會阻擋在一個網路閘道器 上所有流入與流出的封包。

iptables -P INPUT DROP
iptables -P OUTPUT DROP

除此之外,也建議您拒絕任何的轉送封包 — 從防火牆轉送到目的地節點的網路 封包 —,以限制內部的用戶端不經意地暴露在網際網路中。 如要如此做,請使用下列的規則:

iptables -P FORWARD DROP 

注請注意
 

當您使用附加的規則時,REJECTDROP 目標動作是有分別的,REJECT 目標將會拒絕存取並且傳回一個 connection refused 的錯誤訊息給想要連線到服務的使用者,而 DROP(如名稱所示)將會丟棄 封包,而不給予 telnet 使用者任何的警告訊息。 系統管理員可以自行決定如何使用這些 目標,然而為了要避免使用者的困惑,而試著要繼續進行連線,建議您使用 REJECT

在設定好政策鏈結後,請為您特定的網路與安全性需求建立新的規則,下列的部份列出當您要建立您的 IPTables 防火牆時,您也許會實作的一些規則。

7.2.2. 儲存與回復 IPTables 規則

防火牆規則只在電腦開機時才有效,假如系統重新開機,規則將會自動清除並且重設,如要儲存規則,以便您 將來使用,請使用下列的指令:

/sbin/service iptables save

這些規則將會儲存在 /etc/sysconfig/iptables 檔案中,然後在服務啟動或重新啟動後 套用,也包含機器重新開機後。