本文將示範打造一個防駭的網站金鐘罩系統,利用SVN版本控管系統產生網站目錄的初始版本,並採用integrit建立基準狀態資料庫,然後定時透過integrit產生現存狀態資料庫來進行比對,這樣一來不但能夠保存網站目錄被不當變動時的資訊,還可即時地回復網站伺服器原有的內容。
在成功安裝integrit後,接下來繼續設定integrit的設定檔,檔案名稱為integrit.conf,設定檔內容說明如表4所示。
表4 integrit設定檔內容說明
接著測試integrit檔案系統的完整性,將依序測試「檔案新增」、「目錄新增」、「檔案刪除」、「檔案修改」等不同的狀況。以「/tmp/integrit」目錄為例,在該目錄下新增test1、test2兩個檔案。
首先,在「/etc/integrit.conf」內加入以下幾行設定:
第一步先產生基準狀態資料庫,以供後續比對之用,執行指令「integrit -u -C /etc/integrit.conf -N /root/known.cdb」,其中-u為更新,-C為使用組態檔的位置,-N為產生目前系統狀態資料庫。
建立完成後,可透過i-viewdb來查看integrit的資料庫內容,因此執行「i-viewdb /root/known.cdb」指令來查看known.cdb的內容。
建立好基準系統狀態資料庫後,開始測試下列各種不同的狀況。
檔案新增情況
首先利用指令「touch /tmp/integrit/test3」來新增一個檔名為「test3」的檔案,接著執行指令「integrit -u -c -C /etc/integrit.conf」進行檢查(-c參數的意思為check),如下圖示。
當integrit一發現有新增檔案,就會以new標示出該新增檔案。
目錄新增情況
透過指令「mkdir /tmp/integrit/testdir」新增一個檔案,然後執行指令「integrit -u -c -C /etc/integrit.conf」做檢查,如下圖示。
當integrit發現有新增目錄時,會以new來標示該新增目錄。不過,integrit並不會特別說明它是檔案或目錄,這需要使用者自行另外處理。
檔案修改情況
先執行指令「chown johnwu:johnwu /tmp/integrit/test1」,更動檔案test1的擁有者權限,然後利用指令「integrit -u -c -C /etc/integrit.conf」來檢查,如下圖示。
一旦integrit發現檔案被修改(在本例中為擁有者權限被更動),即以changed來標示該檔案已經被修改過。
檔案刪除情況
先利用指令「rrm /tmp/integrit/test1」來刪除檔案,接著執行「integrit -u -c -C /etc/integrit.conf」做檢查。當integrit發現已被刪除檔案時,即以missing來標示該被刪除檔案,如下圖示。
系統實作
網站金鐘罩系統的想法在於,事先將正確網站目錄上的相關網站目錄產生初始版本(利用SVN版本控管系統來控管,版本編號為1),並使用檔案完整性檢查工具,例如本文採用integrit來產生基準狀態資料庫(在此稱為knowndb)。
然後,定時利用integrit產生現存狀態資料庫(在此稱為currdb)進行比對,如果發生有異常變動的情況,就將異常變動情況加入SVN,並產生另一個版本回存至SVN版本控管系統(版本編號可從2..n開始)。
隨後,再取出SVN版本控管系統中的初始版本(版本編號為1)。如此一來,不但可以保存網站目錄被不當變動的資訊,也能夠即時地回復網站伺服器原有的內容。