歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

利用Tripwire檢測系統完整性(1)

完整性是安全要求的基本要求之一,本文將向讀者詳細介紹如何利用 開源 完整性檢測工具Tripwire來檢查系統的完整性。 一、系統的完整性 我們知道,系統的正常運行要靠系統程序的正常運轉,而程序的運行又與其可執行文件休戚相關。所以,維護系統完整性是確保

完整性是安全要求的基本要求之一,本文將向讀者詳細介紹如何利用開源完整性檢測工具Tripwire來檢查系統的完整性。

一、系統的完整性

我們知道,系統的正常運行要靠系統程序的正常運轉,而程序的運行又與其可執行文件休戚相關。所以,維護系統完整性是確保系統安全的一項基本工作。我們這裡的系統完整性是指系統中可執行文件的完整性,也就是說系統中的程序文件沒被非法修改。

如果可執行文件被惡意修改的話,如改變、插入或刪除等,將直接威脅到系統的安全性。大多數情況下,黑客滲入到系統後會立即修改某些系統文件以創建後門,如用准備好的替代物換掉系統中原有的/bin/login文件以便使其不用口令便能登陸系統;然後再修改某些文件,例如/bin/ls等,以便隱藏其行徑。如果我們沒能發現這些改變的話,那無異於身處險境卻還以為很安全,這就為黑客的長期入侵提供了非常有利的條件,同時也意味著我們的損失將更大!為了改變這種被動的局面,我們需要一種文件完整性檢查工具,使得當系統文件被惡意修改後能及時發現,從而為進一步處理創造條件。

二、Tripwire概述

Tripwire的運行機理

Tripwire是一款最為常用的開放源碼的完整性檢查工具,它生成目標文件的校驗和並周期性的檢查文件是否被更改。下面我們簡單介紹一下Tripwire的運行機理。與大多數完整性檢查程序相同,對於需要監視的文件,Tripwire會使用校驗和來為文件的某個狀態生成唯一的標識(又稱為"快照"),並將其存放起來以備後用。當Tripwire程序運行時,它先計算新的標識,並於存放的原標識加以比較,如果發現不匹配的話,它就報告系統管理人員文件已經被修改。接下來,系統管理員就可以利用這個不匹配來判斷系統是否遭到了入侵。例如,如果Tripwire已經為/bin/login和/bin/ls存放了快照,那麼對它們的尺寸、inode號、權限以及其他屬性的任何修改,都逃不過Tripwire的火眼金睛。尤其是對於文件內容的修改,即使只改變了一個字節,Tripwire也能察覺得到,因為校驗和是針對文件整體的。

通過對以上運行機制的了解我們不難發現,完整性檢查工具的安裝時機非常重要,最好是在交付用戶使用和連入網絡之前的Linux系統初裝時進行。因為完整性檢查工具只有保留了系統文件的初始狀態(快照),才能確保系統文件的完整性;如果在系統使用一段時間後再取其快照的話,它很可能已經不再是原系統文件的映象(如已經遭到破壞),所以這時的完整性檢測的可靠性已經打了折扣。

Tripwire的組成

Tripwire主要由策略和數據庫組成。策略不僅指出Tripwire應檢測的對象即文件和目錄,而且還規定了用於鑒定違規行為的規則。一般情況下,對於/root、/bin和/lib目錄及其中文件的任何修改都應視為違規行為。數據庫則用來存放策略中規定的檢測對象的快照。只要建立了策略和數據庫,我們就可以隨時用快照來比較當前的文件系統,然後生成一個完整性檢測報告,從而判斷系統的完整性是否受到攻擊。除了策略和數據庫外,Tripwire還有一個配置文件,用以控制數據庫、策略文件和Tripwire可執行程序的位置等。

為了防止被篡改,Tripwire對其自身的一些重要文件進行了加密和簽名處理。這裡涉及到兩個密鑰:site密鑰和local密鑰。其中,前者用於保護策略文件和配置文件,如果多台機器具有相同的策略和配置的話,那麼它們就可以使用相同的site密鑰;後者用於保護數據庫和報告,因此不同的機器必須使用不同的local密鑰。

三、Tripwire的安裝和設置

Tipwire的安裝

Tripwire的下載地址為http://www.tripwire.org。如果您使用的是Red Hat Linux的話,可以下載該站點上的RPM格式的程序(當前最新版本為rpm4-tripwire-2.3-47.i386.tar.gz),假設將其下載到/A目錄的話,安裝過程如下所示:

rpm -ivh /A/rpm4-tripwire-2.3-47.i386.tar.gz


如果從源代碼中進行軟件安裝,先下載tar格式源程序並解包。接下來在相應目錄中執行如下操作:

./configure make make install


安裝後的設置

在安裝Tripwire之後,可以進行如下的設置:

# cd /etc/tripwire # ./twinstall.sh # 
tripwire --init # rm twcfg.txt twpol.txt


這裡,腳本twinstall.sh的作用在於執行下列任務:

1) 創建site和local密鑰,這時會要求輸入口令;如果這兩個密鑰業已存在,則可以跳過此步驟。其中,site密鑰存放在site.key文件中,而local密鑰則存放在hostname-local.key(這裡的hostname是指該機器的主機名)文件之中。

2) 利用site密鑰對默認配置文件twcfg.txt進行簽名,並將簽名(而非被簽名的文件twcfg.txt)存放於文件tw.cfg之中。

3) 利用site密鑰對默認策略文件twcfg.txt進行簽名,並將簽名(而非被簽名的文件twcfg.txt)存放於文件tw.pol之中。

此外,您還可以手工方式來安裝,尤其是在由於某種原因,您的系統沒帶twinstall.sh文件等情況下則必須手工完成這項工作:

設置常見的變量:

DIR=/etc/tripwire SITE_KEY=$DIR/site.key 
LOCAL_KEY=$DIR/`hostname`-local.key


創建site密鑰

# twadmin --generate-keys --site-keyfile $SITE_KEY


生成local密鑰

# twadmin --generate-keys --local-keyfile $LOCAL_KEY


為配置文件簽名

# twadmin --create-cfgfile --cfgfile $DIR/tw.cfg \ 
--site-keyfile $SITE_KEY $DIR/twcfg.txt


為策略文簽名

# twadmin --create-polfile --cfgfile $DIR/tw.cfg \
--site-keyfile $SITE_KEY $DIR/twpol.txt


設置權限

# cd $DIR # chown root:root $SITE_KEY $LOCAL_KEY tw.cfg tw.pol
# chmod 600 $SITE_KEY $LOCAL_KEY tw.cfg tw.pol


需要說明的是,上述配置是以您的默認配置和策略文件已經存在並分別為twcfg.txt 和 twpol.txt為前提的。一般情況下,為了使這兩個文件能更好的滿足我們的系統要求,還必須對其進行相應的修改(見下文)。此外,策略和配置文件的名稱必須為twcfg.txt 和 twpol.txt,因為腳本代碼就是用的這兩個名稱。

然後,為tripwire建立數據庫並用local進行簽名,命令如下所示:

# tripwire -init


需要說明的是,完成此項操作,需要輸入local密鑰的口令;如果tripwire出現類似"Warning: File System Error"之類的錯誤消息的話,那麼可能是由於默認策略引用了並不存在的文件所引起的。

為了安全起見,我們還需要刪除明文形式的策略和配置文件,命令如下所示:

# rm twcfg.txt twpol.txt

Copyright © Linux教程網 All Rights Reserved