2008年12月8日 星期一

功能強悍的防火牆 ZeroShell

之前使用 Untangle,發現實在是一套不錯的軟體,功能相當強大,已經達到 UTM 可以作到的程度了!

但是唯一的缺憾就是還不能對 Layer 7 application 進行 Qos 的管理,也許未來會推出相關套件也不一定…

因此就在網路上另外找到這套「ZeroShell」,他不大,可至官方網站下載 Live CD 來使用,也可以安裝至硬碟上(IDE only,如果主機板支援將 SATA 轉為 Legacy mode 應該也是可以)

而 ZeroShell 有哪些功能呢? NAT、DHCP、DNS、VPN、L7-Filter、Qos、RADIUS、LDAP、Load Balance、X.509 …等等一狗票的功能,詳細的功能可以到官方網站去看。

只是他恰巧符合我需要的 L7-Filter + QoS 的功能,因此目前選中他作為測試!

而 ZeroShell 中所提供的所有功能,幾乎都是從 open source 的專案來的,例如:OpenVPNOpenLDAPl7-filter …等等,因此要找到支援與協助應該不是太困難。

 

以下列出最近測試時,發現到要注意的設定重點:

設定資訊的儲存

上面有提到 ZeroShell 是以 Live CD 的方式啟動的,因此每次重開機設定都會不見;查了一下官方網站,有說到只要設定完成後,進入「SYSTEM –> Setup –> Profiles」將 profile 備份即可,進入時他會偵測電腦上的硬碟與分割,讓管理者可以自行決定 Profile 要放哪。

但真的有那麼美好嗎? 我實際測試是沒有……只有對外網卡的設定會保留下來,其他都還是跑掉,這讓我很困擾,因此最後我還是把他裝到硬碟上去了…(裝到硬碟上後,也不用儲存 profile 了,因為設定不會跑掉)


NAT

原本以為設定好每個 NIC 的 IP address 跟 default gateway,自動產生 routing table 之後,NAT 也會跟著起來,但實際上並沒有……

但設定並不困難,只要進到「NETWORK –> Router –> NAT」,把對外的那一張網卡加到「NAT Enabled Interfaces」即可。


憑證(certificate)的啟用

若要使用憑證相關的服務(例如:OpenVPN),就需要將憑證啟用,啟用要從「SECURITY –> X.509 CA」中選擇要啟用的憑證,將其啟用。

而啟用的方式比較特別,需要先 revoke 之後再 renew,才能將憑證正式啟用。


OpenVPN

在 server 的部份,只要進入「NETWORK –> VPN」將這個功能啟動即可,而認證方式有三種(密碼、密碼 + 憑證、憑證)可以自由選擇,而若要加入密碼的認證,則必須指定外部的 RADIUS 或是 LDAP server 進行認證。

而 client 的部份,需要從官方網站下載連線設定檔,並修改裡面的設定(OpenVPN server 位址、憑證位置、金鑰位置)。

另外 CA 憑證的部份可以從 ZeroShell 的登入頁下載。

而 client 的憑證則可以到「USERS –> Users –> X509」中將金鑰資訊 export 出來。


QoS

設定 Qos 必須注意,Qos 僅能管理從特定網路介面出去的流量,無法管制進來的流量;雖然如此,透過針對不同網卡的管控,還是可以作到上下傳的頻寬控管。

另外載設定的部份就稍微複雜一點,就跟直接設定防火牆差不多,需要以下三個步驟:(下面的設定都在「NETWORK –> QoS 中」)

  1. 設定 QoS Class
    在「Class Manager」中,可設定傳輸的優先權(Priority),最大傳輸頻寬(Max)以及保證頻寬(Guaranteed)。

  2. 將 Qos Class 與網路介面進行繫結
    不一定設定的規則都要套用在每一個網路介面上,因此可以到「Interface Manager」中指定要將 QoS Class 套用到那一個網路介面。

  3. 設定規則,並指定其屬於哪個 Qos Class
    設定了頻寬的限制、所要管理的網路介面後,就要設定規則與其匹配了,而規則設定需要到「Classifier」中進行設定,而 ZeroShell 提供的設定選項很多,幾乎 iptables 支援的功能他都做到 web 介面上了,當然也包含了 Layer 7 的選項囉!

 

L7 Filter 的更新

目前 ZeroShell 還沒有提供線上更新 Layer 7 pattern 的功能,若要更新的話,可以從 l7filter 的官方網站下載最新的 protocol definition,並將檔案命名為「l7-protocols.tgz」後,放到「/var/register/system/net/L7」資料夾內,重新開機即可。

1 則留言:

  1. 請問:
    您對ZeroShell的評價如何?
    用來做MultiWan Router是否可靠?
    若用此架一個對外的WebSite,是否可行?
    要注意那些問題呢?
    看您的部落,您真是神人,會的東西包山包海,真了不起!

    回覆刪除