2008年12月17日 星期三

[ZeroShell] Firewall 設定

ZeroShell Firewall 說明

由於 ZeroShell 為 Linux-based firewall,在 Linux firewall 中,有三個 table(manglenatfilter) 可供管理者進行進階的管理與設定,但為了簡化設定工作,ZeroShell 的 web 管理介面僅提供 filter table 的設定,因此預設只有三個 chain,分別是 FORWARDINPUT 以及 OUTPUT

雖然僅有三個 chain 可供使用,但還是可以透過 FORWARD chain 管理流經 ZeroShell 的網路封包;也可以透過 INPUT 與 OUTPUT chain 來管理流入 ZeroShell 與從 ZeroShell 流出的網路封包。

以下是 ZeroShell firewall 的設定畫面:

 

Firewall Chain 的管理

首先要先瞭解 Chain 要如新增與刪除,並在 Chain 中增加自訂的規則,用以下圖來說明:

系統預設有 FORWARD、INPUT 與 OUTPUT 三條 chain,若要新增可以按「New」,若要移除則按「Remove」;而若要針對 chain 中的規則進行新增、修改或是刪除,則是按中間右邊的「Add」、「Change」、「Delete」三個按鈕。

 

Default Policy 的設定

了解 ZeroShell 預設的 firewall chain 後,接著就是要設定每條 Chain 的 Default Policy;假設要針對雙向的流量進行嚴格控管的話,可以將 FORWARD chain 的 default policy 設定為 DROP。(預設為 ACCEPT)

 

設定案例一:FTP 服務

由於之前架設了 FTP 服務,因此這邊以開放 DMZ 中的 FTP 服務為例,進行設定;而為了方便管理,我們針對不同的服務都各自用不同的 chain 將其分開。

因此,首先按「New」增加一條 chain,名稱為「FTP_TRAFFIC」:
 

接著在 Chain 的選項選到剛剛新增的「ftp_traffic」,並準備增加規則:(Chain 的名稱會自動變成全部小寫)

接著按下「Add」新增防火牆的規則:

以下為幾項設定時要注意的部份:

  • Destination IP:目的地 IP,要指定是 DMZ 中提供 FTP 服務的主機 IP address

  • Protocol Matching:選擇所要過濾的通訊協定種類

  • Source Port:一般 client 都會以 1024 到 65535 間隨機取一個 port 來與 server 進行連線

  • Dest. Port:FTP service 的 port number 為 21

  • Connection State:「NEW」必須要勾選,才可以讓 client 正確的連線

  • ACTION:這個部份必須選擇「ACCEPT」

這裡比較需要注意的是,若是所有設定都省略,僅從 Layer 7 Filter 中選擇 FTP 服務,這樣還是不行的,因為在 client 與 server 建立連線的 3-way handshake 過程中,是無法判斷是那一種 layer 7 的 application,因此這邊還是必須透過設定 protocol 與 port number 的方式來開放特定服務的網路流量。

接著還要回到 FORWARD chain,將 FTP_TRAFFIC 這條 chain 加入規則中:

在 ACTION 的部份要選擇「CHAIN」,並在 Jump to 的選項選擇「ftp_traffic」這一條 chain。

除了加入 ftp_traffic chain 之外,還要在 FORWARD chain 中加入另外一條規則,讓連線建立後,後續的連線可以持續的通過:

為了讓已經建立的連線可以持續的傳輸網路封包,要勾選 Connection State 中的「ESTABLISHED」及「RELATED」兩個選項,並在 ACTION 中選擇「ACCEPT」。

最後,會設定好以下的規則:

 

設定案例二:Web 服務

接著這個部份是要開放電腦瀏覽網頁的權限,首先必須先開放 DNS 服務的網路流量: (DNS_TRAFFIC)

要開放的設定為:

  • TCP port 53

  • UDP port 53

  • Connection State = NEW

再來是開放 HTTP 與 HTTPs 的網路流量:(HTTP_TRAFFIC)

要開放的設定為:

  • TCP port 80 & 443

  • Connection State = NEW

最後在 FORWARD chain 中將這兩條 chain 加入規則中,就完成設定了:

沒有留言:

張貼留言