如果公司的網站頁面被成惡意攻擊者置換掉,那麼對公司商譽的損傷是難以彌補的,而整個IT團隊也會顏面盡失,如何制止這類事件的發生就變得非常重要了。對此,這裡將介紹如何透過Linux系統的Inotify機制,並搭配inotify-tool及incron軟體,來建構一個可即時監控系統變動的解決方案。
身為網站管理者,內心最大的恐懼應該不會是服務中斷,畢竟如果只是服務中斷,大部分的情況只要重啟服務就可解決,即使重啟失敗,只要平時備份工作有落實,通常在重灌系統及回復資料之後,就能恢復服務。
但如果是因系統安全的漏洞,而使得惡意的攻擊者在網站伺服器上插旗,即所謂的網頁置換(將頁面置換成惡意攻擊者的頁面),那對公司商譽的損傷是難以彌補的,而這才是網站管理者最?心的情況。
要預防此種情況的發生,除了積極的修補系統漏洞外,換另一個角度思考,網頁被置換,其實就是一種系統檔案系統變動的動作,如果有個機制能夠即時監控系統的檔案系統變動的動作,一旦發現有異常的檔案系統動作,就即時地觸發相關事件,例如寄送電子郵件通知管理者,將可為系統提供更進一步的安全防護。
對此,本文將介紹Linux系統上可以監控系統檔案系統變動的Inotify機制(僅適用於Linux系統且核心版本需為2.6.13以上),並且搭配inotify-tool或是incron工具。接著,就來實作一個可即時監控系統變動動作的解決方案,所需套件如表1所示。
表1 實作所需套件
什麼是Inotify
Inotify是一種檔案系統附加的功能子系統,主要用來偵測當檔案系統發生變動時,例如當檔案(目錄)新增或修改事件發生等,觸發相關事件來通知應用
程式。
系統核心(Kernel)的版本必須是2.6.13之後,才支援Inotify子功能,使用者可利用下列指令來檢查系統是否支援Inotify子功能,如圖1所示。
|
▲圖1 檢查系統是否支援Inotify子功能。 |
如果執行結果為「CONFIG_INOTIFY_USER=y」,這就表示系統核心已支援Inotify子功能,使用者可以利用此項功能來監控系統上檔案系統的變化。
這裡要特別提出的一點是,Inotify子功能僅僅只能夠偵測實體的檔案或是目錄,而對於系統上的一些虛擬的目錄(通常此類目錄是用來存放系統上的裝置資訊,例如sysfs或procfs等等相關目錄)以
及網路檔案系統(Network File System,例如NFS檔案系統)是無法完整地偵測其檔案系統變動的
情形。
在確認系統核心已經支援相關功能之後,接下來先來定義幾個在Inotify機制上經常會使用到的名詞:
‧ 實例(Instances):可視為是一個監控作業,能夠將多個監控檔案或目錄的監控作業,以一個實例(Instances)來代表,在設定完成後,即會將相關的監控作業置入隊列(Queue)中等待系統的執行。
‧ 監看(Watches):即實際要監控系統中的某個檔案或目錄。
Inotify機制提供幾個相關組態檔(位於「/proc/sys/fs/inotify」目錄內)來調整Inotify所使用的預設值,相關說明如表2所示。
表2 Inotify相關組態檔使用說明
使用者可利用圖2中所示的指令,來取得目前系統上的相關預設值:
|
▲圖2 取得目前系統內相關的預設值。 |