維護資訊使用守則 建立安全管制政策
以開源碼實作不當網頁 過濾系統

2010-02-26
相信很多企業主,對於Web是又愛又恨,愛的是它無遠弗屆的資訊分享能力,恨的是它常使員工流連忘返,不但降低工作效率且平白浪費企業網路資源。除此之外,員工瀏覽不當網頁(如內含惡意程式的惡意網站)或下載偽裝的惡意軟體,也常造成企業的資安危機,而讓網管人員頭痛不已。因此,一套能夠管理網路資源並能夠阻擋網頁威脅的系統,將會是網管人員的得力利器。
本文將以開源碼的解決方案來實作一個過濾不當網頁的系統,並希望能達到下列的功能:可記錄客戶端曾瀏覽過的網站,並將記錄的資料以Web的方式呈現,方便管理者查詢;提供URL Filter功能,可設定不允許瀏覽網站列表;可設定客戶端不能瀏覽內容含有某些關鍵字(如情色、SEX)的網站;限制客戶端不能下載某些類型的檔案(如ppt、pdf等等)。

實作說明

一般而言,要完成網頁過濾的功能,通常需要HTTP Proxy(代理伺服器)的支援。Proxy是一種中介者程式,介於使用者與Internet間;擔任使用者與Internet間的中介層。當使用者欲連線到外部網站時,將會先查詢Proxy是否有相關的資訊,如果有相關的資訊,則會直接從Proxy下載相關資訊。

反之,即先由Proxy伺服器至外部網站取得相關資訊,再由使用者經由Proxy取回資訊,如下圖示。

由上述說明,可以得知Proxy具有Cache的功能,所以常被用來網頁加速用。而從另一角度來看,由於往來的網頁資訊均會存在Proxy伺服器中,因此只要在Proxy伺服器上再加上一層過濾機制(如過濾URL),即可實作出網頁過濾的功能。一個網頁過濾的基本架構圖,如下頁圖示。

使用者瀏覽網頁流程如下:
1. 使用者開啟瀏覽器Proxy功能。
2. 使用者將要求瀏覽網站的HTTP要求送往Proxy(在本例中為Squid)。
3. Squid再將HTTP要求送往過濾軟體(在本例中為DansGuardian)依據設定的過濾條件來判別是否欲瀏覽的網頁為不當網頁,若是則阻擋使用者瀏覽該網頁,否則使用者即可正常的瀏覽該網頁。

綜上所述,要完成網頁過濾的功能,必須要有Proxy及過濾軟體的支援。而在開源碼社群均有相關的軟體提供,下表即為所使用的軟體。

這裡假設讀者已安裝完成網站Apache伺服器,而且網站根目錄為「/usr/local/apache2/htdocs/」,相關安裝過程如下:

安裝Squid

在Fedora系統中可利用yum機制來自動的安裝所需軟體。在系統下達「yum install squid」指令後,即會自動安裝Squid軟體。安裝成功後,須調整Squid的參數,以符合所需。基本上,Squid在這個方案中僅扮演Proxy的角色,因此僅須調整以下幾項設定:

1. Squid服務的埠(使用預設3128)

2. 允許那些來源IP可使用此Proxy(可設定家裡用的主機IP或設定允許所有的IP均能使用,在本例中為了實作方便,會設定為所有的IP都能使用,但在現實應用上,建議還是限定IP使用)

3. 設定log存放的位置,以供SARG軟體分析使用,以便取得使用者的上網紀錄。利用編輯器(如vi)編輯Squid的設定檔(/etc/Squid/squid.conf)並更改下列參數:

http_port 3128                 #設定Squid HTTP服務埠
http_access  allow  all      #允許所有IP皆能使用
access_log /var/log/squid/access.log squid   
#log存放的位置(提供SARG分析之用)

其他部分採用預設的參數即可。在設定完成後,利用「/etc/init.d/Squid start」來啟動Squid。啟動後可利用「netstat -an | grep 3128」來檢查Squid是否啟動成功,如下圖示。

安裝SARG軟體

首先,先到官方網站擷取最新版本的原始碼。將其解壓縮後,利用configure、make、make install等指令安裝。安裝完成後,設定「/usr/local/etc/sarg.conf」組態檔,更動如下的參數:

language English       #報表的語系採用英文
access_log  /var/log/squid/access.log   

#Squid的access log,sarg即是分析此檔案來產生報表 title "Squid User Access Reports"        #報表的標題
temporary_dir /tmp           #Sarg分析時資料暫存位置 output_dir /usr/local/apache2/htdocs/report 
#指定Sarg分析後圖表輸出路徑(要直接設定在網站根 目錄下)

設定完成後執行指令「sarg」,就會產生瀏覽過的網頁報表,如下圖所示。

至此,以IE 8為例來示範如何使用Squid和SARG來記錄客戶端曾經瀏覽過的網站並製做成報表型式。必須先設定IE使用Proxy。依序點選IE功能表【工具】→【網際網路選項】,開啟「網際網路選項」設定視窗後,切換至〔連線〕活頁標籤,然後按下〔區域網路設定〕按鈕。接著,如下圖般設定Proxy Server的IP位址及連接埠「3128」。

利用IE 8隨意瀏覽一些網站後,輸入「sarg」重新執行SARG來產生相關報表,如果一切正常,即可利用IE瀏覽相關的分析報表。

點選上述連結之後,即會出現統計相關流量的統計資訊。

點選上圖中的紅框部分,即可顯示下圖般曾瀏覽過的網站資訊。

安裝DansGuardian

執行指令「yum install dansguardian」安裝DansGuardian。安裝完成後,將「/etc/dansguardian/dansguardian.conf」設定檔修改成如下的內容:

language = 'chinesebig5'        #設定顯示訊息的語系
filterport = 8080            #設定DansGuardian運作埠

proxyip = 127.0.0.1    
#設定Proxy伺服器的所在位址即Squid運作的主機,在本例中由於與DansGuardian在同一台機器上,所以可設為本機
proxyport = 3128          #設定Proxy伺服器的運作埠,即Squid的運作埠,預設為3128

設定完成後,執行指令「/etc/init.d/dansguardian start」即可啟動DansGuardian。隨後,可利用「netstat -an | grep 8080」查看主機上是否已開啟8080埠,如下圖所示。

此時,須重新設定IE的Proxy設定,與之前的設定步驟相同,但連接埠須改為「8080」(DansGuardian的服務埠)。

DansGuardian主要是利用檔案來設定限制瀏覽網頁的規則,由於這裡只想要達到「禁止瀏覽某些網站」、「禁止瀏覽含有某些關鍵字的網頁」、「禁止下載某些類型的檔案」三項功能,因此本文中僅會介紹相關的設定檔,其餘相關設定檔就留待有興趣的讀者自行研究。相關設定檔位於「/etc/dansguardian/lists/」目錄下,可參考表1。

在左下方的設定檔中,除了直接設定的條件參數外,尚包含下列參數:

●時間參數

可限定規則時間生效的時間,格式如下:

time: <start hour> <start minute> <end hour> <end  minute> <days>

為開始時間(時)
為開始時間(分)
代表結束時間(時)
是結束時間(分)
:0-6代表星期一至星期天

如果設定規則僅在星期一至星期五早上8:00至下午5:00生效,可設定為「8 0 17 0 01234」。倘若沒有設定時間參數,即表示該規則為永久生效。

●Include參數

如果要設定的條件過多,例如須設定好幾個欲禁止瀏覽的網站,可將設定的條件寫入檔案,再利用Include將該檔案含括進來。

.Include<檔名>

接下來,將以國內知名新聞網站「www.udn.com」為例來示範相關的功能。

限制使用者瀏覽某個網站

以限制使用者瀏覽「www.udn.com」為例,首先將「www.udn.com」寫入bannedsitelist,然後執行指令「/etc/init.d/dansguardian start」重新啟動DansGuardian。之後,當瀏覽器瀏覽www.udn.com時,即會出現如下圖示,而無法瀏覽該網頁。

限制使用者瀏覽網頁資訊中含有情色的網頁

首先,說明關鍵字的設定方法,共分為下列幾種型式:

●<關鍵字>

須完全符合關鍵字,如,即網頁有sex關鍵字即符合。

●< 關鍵字 >

網頁的字串中含有該關鍵字即符合,例如,即網頁有sexual字串即符合。

●<關鍵字1>,<關鍵字2>..

網頁資訊中須含有關鍵字1與關鍵字2…,方可符合。

接著,將<情色>寫入bannedphraselist,然後再重新啟動DansGuardian。隨後,只要瀏覽網頁資訊中含有情色,即會出現如下圖,而無法瀏覽該網頁。

限制使用者可下載的檔案類型

以禁止使用者下載ppt檔為例進行說明。先將副檔名.ppt寫入bannedextensionlist,再重新啟動DansGuardian。之後,利用瀏覽器下載ppt,將會出現如下圖示,而無法下載該檔案。

結語

本文利用開源碼的解決方案實作不當網頁的過濾,以及記錄曾瀏覽過的網址。可用來分析使用者瀏覽的歷程資訊,並限制使用者瀏覽不當網頁。但在實際應用中,如果使用者的瀏覽器未開啟Proxy功能,這個解決方案就無法有效地監控網頁和瀏覽歷程的資訊。斧底抽薪的解決方案是自行結合Linux的iptables機制實作Transparent Proxy,或者退由求其次在設定IE的Proxy設定後,更改Registry設定,讓使用者無法自行更動。這些就留待讀者自行去研究了。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!