用開源modsecurity 實作WAF網頁防火牆

大概每隔一段時間,總會有類似「某家廠商的網站被駭客入侵,大量的個人資料隨之外洩」的消息傳出,在實行個人資料保護法後,被駭的廠商可能會面臨高額的求償。在不改動原先網站伺服器架構的原則下,本文將實作Proxy型式的網頁防火牆,為在實際服務中的網站伺服器前端,阻擋相關的網頁惡意攻擊。

在大部分的網站被入侵的案例中,都屬於網頁程式撰寫不當而造成危機,一般為預防此類漏洞,大多會購買WAF(Web Application Firewall,網頁防火牆),但類似的產品,價格往往相當的昂貴,絕非一般中小企業所能負擔。

因此,本文將介紹如何利用開源碼社群中的mod_security模組(支援Apache的模組)來實作出一個WAF,所需套件如表1所示。

表1 所需套件

簡介Proxy伺服器

Proxy伺服器介於使用者與真實的網路服務中間,提供一個中介的服務,由於Proxy伺服器會先至真實的網路服務取得相關資料後,置於本身的服務器上,一旦使用者所需的資訊已在Proxy伺服器上,即無須再至實際的網路服務伺服器上取得,所以可以有效提升讀取的效率。這也是Proxy伺服器最主要的功能,也是一般所認知的Proxy功能。

但如果從安全的角度思考,由於使用者並不會直接接觸到真實的網路服務伺服器,而均須透過Proxy伺服器與網路服務伺服器溝通,因此,若可在Proxy伺服器加上偵測過濾機制,即可具備防火牆的功能。

Proxy依型式區分可分為Forward Proxy與Reverse Proxy兩種,簡述如下:

Forward Proxy(正向代理Proxy伺服器)

Proxy可以應用在任何的網路服務,如FTP、HTTP等等,而在本文中泛指HTTP Proxy。Forward Proxy可說是經常使用的型式,使用者設定瀏覽器上的Proxy設定,即可利用該Proxy至真正的網站伺服器上取得相關資料,而不必真的直接連接該網站伺服器。

如果所需要的資訊已被下載到該Proxy伺服器上,即可不必實際連接該網站伺服器,因而能有效地節省時間。

另外一個好處,即是所謂的「越界」,由於透過Proxy伺服器對外連線時,對於外界而言,自己的IP即是該Proxy伺服器IP位址,也因此當某些網站可能有限定允許連接的國別時(如僅限定美國境內的IP可連接),即可利用位於美國的Proxy伺服器進行連接。

如此對於該網站而言,此連接是來自美國(即該Proxy伺服器的IP位址)。Forward Proxy的架構如圖1所示。


▲圖1 Forward Proxy示意圖。

Reverse Proxy(反向代理Proxy伺服器)

相對於Forward Proxy是由使用者端對Forward Proxy伺服器提出要求,再由Forward Proxy伺服器向實際伺服器要求資訊再回覆給使用者。Reverse Proxy則是將實際的網站伺服器隱藏在Reverse Proxy的背後。

對於外界使用者而言,他們僅看得到Reverse Proxy伺服器,而如果外界使用者欲瀏覽網站內容,即需由Reverse Proxy伺服器向背後服務的網站伺服器提出要求,再將回覆的結果,回傳給外界的使用者。

Reverse Proxy架構的好處是,可將提供服務的網站伺服器與外界網路實體區隔,外界無法直接接觸網站伺服器,因而避免直接面對第一線的風險。

在本文中即是要利用Apache的Proxy模組所提供的Reverse Proxy功能,搭配mod_security模組之過濾惡意HTTP封包的功能,實作一個網頁防火牆,串接於原先的網站伺服器之前,在不改變原有的網路架構的前提下,保護自身的網站伺服器。

安裝Apache with Proxy

由於mod_security及mod_proxy要求Apache必須支援某些特殊選項,而一般預設安裝的Apache伺服器並無相關的設定,因此以下將使用原始碼編譯的方式進行安裝。首先,下載Apache原始碼(本文採用2.2.22版本),步驟如下:



追蹤我們Featrue us

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

我知道了!