檔案系統,可以說是作業系統的重要核心,當入侵者利用系統破洞侵入時, 最常做的一件工作就是替換掉重要的系統檔案(例如/bin/login),以利入侵者 下一次的入侵(例如:利用萬用密碼就可以登入系統)。信望愛站在上一次被入 侵的經驗中,就發現入侵者修改了/bin/login這個檔案以及相關的一些開機程序 檔。
然而,入侵者可能替換的系統檔案有很多,我們從何偵測出系統檔案已經被 入侵者替換掉了呢?這就得依賴一些檢驗程式的幫忙,以幫助我們消極的偵測系統 檔案是否被人非法替換掉了。
好的系統檔案完整性檢驗系統必須執行速度夠快,佔額外的空間小,又能夠有 效的避開入侵者蓄意的偽冒。並且檔案系統本質上就是一個時時變動的體系,檔案 完整性的檢驗必須限定在不會更動的特定系統檔案才不會產生一大堆沒有用的報告 ,而依系統設定的差異,系統檔案所處的位置也可能有不同,因此這檔案完整性檢 驗系統必須能夠作適當的控制以符合不同的系統設定方式。
早期信望愛站選擇了tripwire這套系統來擔當此一重任。因為信望愛站使用RedHat Linux系統為基礎來架設,所以我們抓到tripwire-1.2-2.i386.rpm這個rpm來安裝 tripwire(tripwire-1.2-1執行時會發生問題),透過/etc/tw.config來控制不同 的系統檔案所需要做的完整性檢查。第一次是使用 tripwire -initialize 來初始 化檢驗資料庫,以後則直接利用該rmp檔所提供的cron script來作定期檔案完整性 檢查,要作不定期的完整性檢查時,只需以root身份執行tripwire即可。
遇到修改系統檔案後,只要執行 tripwire -interactive即可修改檢驗資料庫。
我們使用tripwire還算相當滿意,不過後來tripwire變成了商業軟體,雖然對 Linux使用者還是免費的,不過我們還是積極的考慮更換成真正Open Source的軟體。 一方面我們也覺得tripwire實在是太過強大了,執行起來有一點慢,信望愛站實在 不需要tripwire這麼複雜的保全功能(基本上我們也只用到最標準的功能罷了)。 不過對於大型的企業來說,tripwire還算是不錯的選擇。
偶然我們由網路上的文件中讀到L5這個可以取代tripwire的工具,經取回試用之後 ,發現這個系統雖然完整性不像tripwire一樣完備,但功能足夠且速度相當快,於是我 們就將系統完整性的檢驗工作換成L5來執行。不過L5功能有限,只是針對檔案系統產生 MD5等相關資料列表的工具罷了,得要配合Unix系統裡面的diff、more等功能才能完成 整個程序。L5像tripwire一樣,要編輯一個「需要檢驗的目錄列表」,然後L5會參照 這個列表來產生相關的資料。這種事情說也說不太清楚,我們在 ftp://ftp.fhl.net/pub/FHL/L5 裡面放置相關的示範script與控制檔,歡迎大家去參考看看。
理論上檢驗資料庫應該放在CDROM等唯讀媒體中以避免入侵者的修改,不過基於 信望愛站的系統檔案常常會作調整修正,並且我們沒有足夠的經費與時間購買燒錄機 燒錄光碟片,所以暫時我們還是存放在一般最常用的唯讀媒體「軟式磁碟片」中。 tripwire的說明文件有提到可以利用secure NFS來將檢驗資料庫存於一台專門的安 全機器上,只有在要檢查的時候才把檢驗資料庫掛上來,根據我們的經驗,這似乎是 太過小題大作了,還不如買個好一點的軟碟片,每台機器放一片,大概用個幾個月 都還不會損壞。我想除非真的需要管理數十台機器,應該用軟碟片就夠了。
系統被入侵者入侵實在是一件防不勝防的事,即使是最勤勞的系統管理者恐怕也 未必來得及補上所有的系統漏洞。為了維護系統的安全,除了定期的察看網際網路的 系統安全報告,儘速補上新發現的漏洞之外,使用系統檔案完整性檢驗程式來作消極 性的安全補強動作,也是相當重要的一件事。