本文將示範如何在Google雲端服務上建置一個常用的LAMP網站解決方案,並為此網站伺服器加入以開放原始碼開發的網頁防火牆軟體(WAF),以提高網站伺服器的防護能力。
當使用者在存取網站伺服器時,先經過ModSecurity模組過濾,再交由Apache伺服器進行處理。
在此不多談ModSecurity模組的用法,僅說明如何安裝ModSecurity模組。先下載ModSecurity原始碼(在此使用2.9.2版本),並依據如下指令進行安裝:
在安裝完成後,即可設定httpd.conf來啟用ModSecurity,如下設定為偽裝成IIS:
在重啟Apache後,利用下列方式來驗證ModSecurity是否能夠正常地運作。
以PHP程式來驗證
撰寫一個簡單的程式先行測試,設定內容如下:
隨後以瀏覽器來瀏覽此程式,如果ModSecurity已正常運作,就會出現如圖8所示的輸出。可藉由檢查Apache Version欄位是否為IIS,以及Load Modules欄位是否有mod_security2字樣來判斷。
|
▲圖8 確認ModSecurity已經正常運作。 |
過nmap進行驗證透
可利用「nmap -sV 127.0.0.1」來觀察通訊埠80的輸出是否已改為IIS,藉此確認ModSecurity模組是否有正常地運作,如圖9所示。
|
▲圖9 確認ModSecurity模組是否正常地運作。 |
安裝MySQL
原本筆者以為只要在上述所建立的虛擬機器安裝MySQL軟體後就可以使用資料庫的功能,後來才發現Google並不允許如此的用法,而是必須使用他們所提供的雲端資料庫功能來建立,換句話說,就是要另外建立一個虛擬機器給資料庫使用,整個建立過程如下所述。
首先,點選gcp consol端(https://console.cloud.google.com/)的SQL,來建立執行個體。
緊接著選擇資料庫的類型,在此選擇MySQL,如圖10所示。
|
▲圖10 選用MySQL資料庫類型。 |
然後,設定SQL的相關組態,必須設定下列的幾項組態:
‧根密碼:設定MySQL的root使用者的密碼
‧區域:建議設定「asia-east1-a」(位於台灣彰化)
‧授權網路:設定允許連接到此資料庫的來源IP
其餘的組態多為系統資源的配置,根據自身的需求進行配置即可,如圖11~12所示。
|
▲圖11 配置系統資源之一。 |
|
▲圖12 配置系統資源之二。 |
在設定完成後,就能夠建立專供MySQL使用的虛擬機器,如圖13所示。
|
▲圖13 專供MySQL使用的虛擬機器已建立完成。 |
至此,一個含有網頁防火牆的雲端LAMP環境即告完成!
<本文作者:吳惠麟,多年資安經驗,喜好利用開源碼建構相關解決方案,著有「資訊安全原理與實驗」等書。>