之前的文章曾介紹過mod_security模組,這是一套開源碼社群中頗負盛名的WAF軟體,其主要功能在於阻擋如SQL injection、X.S.S等惡意行為的網頁攻擊行為。其實mod_security模組除了在防禦惡意網頁攻擊行為具有優異的表現外,在網站Log紀錄的處理方面也具有相當強大的功能,不但可依設定分門別類處理不同種類的網站Log紀錄,甚至還能提供儲存至遠端資料庫的功能。
什麼是waf-fle
waf-fle是以PHP語言所寫的的mod_security console程式,負責接收從mlogc所回傳的Log的資訊,並將該Log資訊置入MySQL資料庫中,由於waf-fle支援MySQL資料庫與Geo(地理資訊系統)及APC(Alternative PHP Cache)等額外新增功能,所以在此採原始碼編譯的方式來安裝符合需求的PHP。
本文撰稿時,APC函數並不支援PHP 5.4及5.5系列的版本,所以本文使用PHP 5.3.28版本,在此假設Apache伺服器已安裝在「/usr/local/apache2/」目錄,而MySQL資料庫則安裝於「/usr/local/mysql/」目錄下,實際安裝步驟如下所述。
安裝PHP
首先,執行指令「tar xvzf php-5.3.28.tar.gz」解壓縮PHP原始碼,然後輸入指令「cd php-5.3.28」,切換至PHP原始碼的目錄內。接著,執行以下指令來安裝PHP並設定支援pdo-mysql:
最後,執行指令「make && make install」,編譯並安裝PHP模組。
安裝GeoIP
一開始,先使用指令「yum install GeoIP GeoIP-data GeoIP-devel」安裝GeoIP相關的套件,然後執行指令「wget -c http://pecl.php.net/get/geoip-1.0.8.tgz」取得Geo軟體。接著,透過指令「tar xvzf geoip-1.0.8.tgz」來解壓縮GeoIP。
隨即使用指令「cd geoip-1.0.8」進入geoip原始碼目錄,然後以「Phpize」來設定編譯為PHP額外模組所需的相關環境。緊接著組態GeoIP,執行指令「./configure --with-php-config=/usr/local/bin/php-config --with-geoip」。
最後,執行指令「make && make install」編譯並安裝相關模組。最後結果如果成功,將會在相關目錄之下(視系統而定)產生一個名為geoip.so的模組。
安裝APC
首先執行指令「tar xvfz APC-3.1.9.tgz」來解壓縮APC,再透過指令「cd APC-3.1.9」進入APC原始碼目錄。
接著,利用「Phpize」設定編譯為PHP額外模組所需的相關環境。緊接著開始組態APC,因此執行指令「./configure -with-php-config=/usr/local/bin/php-config --enable-apc」。
然後,執行指令「make && make install」來編譯並安裝相關模組。如果成功,將會在相關目錄下(視系統而定)產生一個名為「apc.so」的模組。
讀者可將所產生的模組檔案複製到特定的目錄下以利設定。在此,筆者將這兩個檔案複製到「apache2/modules/」目錄下。
在編譯完成後,最後一個步驟即為設定php.ini來載入相關的模組:
安裝waf-fle
先執行指令「tar xvzf waf-fle_0.6.0.tar.gz」解壓縮waf-fle,然後建立資料庫。這裡將建立一個名稱為「waffile」的資料庫。
在「/extra」目錄下有一個檔名為「waffle.mysql」的檔案,其內容有相關欲建立的資料庫表格,依此檔案內容建立相關內容。
接著,利用指令「mv config.php.example config.php」,更名waf-fle所提供的組態檔名稱為「config.php」。然後更改config.php內容,資料庫相關資訊設定,如下:
DB_HOST:設定資料庫所在的主機
DB_USER:設定資料庫使用者
DB_PASS:設定資料庫連線密碼
DATABASE:資料庫名稱
SETUP:True代表利用線上設定,False表示不利用線上設定。