ZeroShell Firewall 說明
由於 ZeroShell 為 Linux-based firewall,在 Linux firewall 中,有三個 table(mangle、nat、filter) 可供管理者進行進階的管理與設定,但為了簡化設定工作,ZeroShell 的 web 管理介面僅提供 filter table 的設定,因此預設只有三個 chain,分別是 FORWARD、INPUT 以及 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 加入規則中,就完成設定了:
沒有留言:
張貼留言