利用Tripwire檢測系統完整性

cnbird發表於2008-01-23

http://school.21tx.com/2005/08/10/13540.html

http://school.21tx.com/2005/08/11/14087_2.html

http://school.21tx.com/2005/08/10/13242_1.html

來源:Isblog.cn

完整性是安全要求的基本要求之一,本文將向讀者詳細介紹如何利用開源完整性檢測工具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

 

來源:Isblog.cn

現在,Tripwire自身已經完全就緒,接下來我們要做的事就是用它來執行完整性檢查。

四、維護策略檔案和配置檔案

如何檢視策略和配置

如果您想瀏覽一下Tripwire的策略和配置情況,但他們是以二進位制的形式存放或當前缺失,請用下列命令:

生成有效配置檔案

# cd /etc/tripwire
# twadmin --print-cfgfile > twcfg.txt

生成有效策略檔案

# cd /etc/tripwire
# twadmin --print-polfile > twpol.txt

因為有效配置檔案和策略檔案已經加密和簽名,所以他們是以密文的形式存放。如果想瀏覽他們的話,需要先解密:將其轉換成明文的形式。為安全起見,一般建議在對他們重新進行簽名之後將明文形式的配置和策略檔案刪除。

需要注意的是,儘管我們可以將twadmin的輸出重定向到任何檔案當中,但安裝指令碼twinstall.sh卻要求明文形式的策略和配置檔名為twcfg.txt和twpol.txt。

修改策略檔案和配置檔案

如果想改變Tripwire所檢查檔案和目錄的話,或者想改變Tripwire的預設行為,那該怎麼辦呢?請按如下所示來進行:

首先,從明文檔案中提取出策略和配置:

# cd /etc/tripwire
# twadmin --print-polfile > twpol.txt
# twadmin --print-cfgfile > twcfg.txt

策略檔案twpol.txt和配置檔案twcfg.txt的修改可以利用常見的文字編輯器來完成。對於修改過的策略檔案twpol.txt和配置檔案twcfg.txt檔案,需要對他們進行再次簽名:

# twadmin --create-cfgfile --cfgfile /etc/tripwire/tw.cfg / 
          --site-keyfile site_key etc/tripwire/twcfg.txt
# twadmin --create-polfile --cfgfile /etc/tripwire/tw.cfg /
          --site-keyfile site_key etc/tripwire/twpol.txt

然後,我們需要重新初始化資料庫:

# tripwire --init
# rm twcfg.txt twpol.txt

需要注意的是,我們只能對明文形式的策略和配置檔案進行編輯,所以除非已有明文檔案,否則必須先將加密簽名的策略和配置檔案轉換成明文形式。另外,當在修改檔案時,可能會遇到以下訊息:

### Error: File could not be opened

這說明Tripwire沒有找到目標檔案,如果是該檔案的確不存在的話,我們就需要從策略和配置檔案中去掉對該檔案的引用(或將其註釋出來也可以),並對策略檔案重新簽名。如果只是在完整性檢查之後簡單地更新一下資料庫的話,那完全沒必要嚴格按上述步驟來處理;但是對策略或配置檔案作了修改後卻必須這樣處理。

五、配置完整性檢測

基本的完整性檢測配置

完整性檢驗的目的在於檢查一下自從上次Tripwire對檔案作了快照以後,我們的檔案是否發生了變動,我們可以簡單通過以下命令來達到此目的:

# tripwire -check

這是一條最基本的命令,它能告訴我們系統是否被修改了。它根據在策略檔案中規定的規則,利用Tripwire資料庫跟檔案系統當前狀態加以對比,之後將比較結果寫入標準輸出,並將其加蓋時間戳、簽名,然後作為一份Tripwire報告存放起來。另外,我們還可以針對資料庫中的單個或多個檔案進行完整性檢查。若Tripwire的策略中包括以下規則:

(
  rulename = "My funky files",
  severity = 50
)
{
  /sbin/e2fsck                         -> $(SEC_CRIT) ;
  /bin/cp                              -> $(SEC_CRIT) ;
  /usr/tmp                             -> $(SEC_INVARIANT) ;
  /etc/csh.cshrc                       -> $(SEC_CONFIG) ;
}

那麼您就可以用以下命令來檢視選中的檔案和目錄:

# tripwire --check /bin/cp /usr/tmp

若要檢視一條規則所對應的所有檔案,用以下命令:

# tripwire --check --rule-name "My funky files"

也可以檢視嚴重性大於等於特定值的所有規則,如下所示:

# tripwire --check --severity 40

關於策略檔案的有關語法,請參閱有關手冊或檢視聯機幫助:

$ tripwire --check --help

更高安全級別的完整性檢測

為了獲得更高的安全性,我們可以將Tripwire最關鍵的檔案存放到諸如CD-ROM之類的只讀介質或有防寫的上磁碟上,這樣能防止它們被篡改。步驟如下:

1.把 site金鑰、local金鑰以及tripwire可執行檔案本身複製到合適的磁碟上,開啟防寫後再裝載,比如將其安裝在目錄/mnt/cdrom。

# mount /mnt/cdrom
# ls -l /mnt/cdrom
total 2564
-r--r-----    1 root     root          931 Jan 21 10:20 site.key
-r--r-----    1 root     root          931 Jan 21 10:20 myhost-local.key
-r-xr-xr-x    1 root     root      2612200 Jan 21 10:19 tripwire

2.生成明文形式的配置檔案

# DIR=/etc/tripwire
# cd $DIR
# twadmin --print-cfgfile > twcfg.txt

3.編輯配置檔案以使之指向這些拷貝

/etc/tripwire/twcfg.txt:
ROOT=/mnt/cdrom
SITEKEYFILE=/mnt/cdrom/site.key
LOCALKEYFILE=/mnt/cdrom/myhost-local.key

4.對修改後的配置檔案進行簽名

# SITE_KEY=/mnt/cdrom/site.key
# twadmin --create-cfgfile --cfgfile $DIR/tw.cfg /
          --site-keyfile $SITE_KEY $DIR/twcfg.txt
5.更新資料庫並解除安裝CD-ROM
# /mnt/cdrom/tripwire --init
# umount /mnt/cdrom
現在,已經萬事具備,如果要進行完整性檢驗的話,只要插入並輸入命令就可以了:
# mount /mnt/cdrom
# /mnt/cdrom/tripwire --check
# umount /mnt/cdrom

site金鑰、local金鑰以及tripwire可執行檔案之所以要加以保護,是因為它們極為重要並且可能受到攻擊。Tripwire的其他檔案,如資料庫、策略和配置等需要用這兩個金鑰和程式來簽名,如果site金鑰、local金鑰以及tripwire可執行檔案是安全的,那麼用它們簽過名的檔案發生的任何變化都能被發現。另外,將/usr/sbin/tripwire拷貝到光碟之前,一定要確保它是靜態連結的,也就是說該程式的執行不依賴任何動態共享庫,因為應用動態共享庫時,動態庫呼叫更容易被攻擊者所劫持。

$ ldd /usr/sbin/tripwire
not a dynamic executable

除了上面的方法外,我們還可以利用遠端進行完整性檢驗來提高安全強度。

為了提高檢驗的安全性,關鍵的Tripwire檔案最好不要存放在被檢驗的機器上面。為此,我們在此引入兩臺機器untrusty和trusty。前者是一臺想要用Tripwire來檢查其完整性的”不可信”機器;後者是一臺安全的機器,理想的情況下只能由它訪問網路,而其他機器這不能訪問它。此外,為了使其他機器不能訪問存放site金鑰、local金鑰以及tripwire可執行檔案的遠端機器,通常使用rsync(SSH下的安全隧道技術)來驗證原件和拷貝的一致性從而觸發完整性檢驗。遠端機器trusty上的原始配置如下所示:

#!/bin/sh
REMOTE_HINE=untrusty
RSYNC=`/usr/bin/rsync -a --progress --rsh=/usr/bin/ssh`
SAFE_DIR=/usr/local/tripwire/${REMOTE_MACHINE}
VITAL_FILES="/usr/sbin/tripwire 
        /etc/tripwire/site.key 
        /etc/tripwire/${REMOTE_MACHINE}-local.key"

mkdir $SAFE_DIR
for file in $VITAL_FILES
do 
        $RSYNC ${REMOTE_MACHINE}:$file $SAFE_DIR/
done

在檢驗本地機器之前,需要首先將site金鑰、local金鑰以及tripwire可執行檔案與它們在遠端機器上的拷貝比較一番,以確定這三個檔案的完整性。然後在trusty上執行下列程式碼(需要注意,這裡的各個變數如REMOTE_MACHINE要與前面指令碼中的保持一致):

#!/bin/sh
cd $SAFE_DIR
rm -f log
for file in $VITAL_FILES
do
        base=`basename $file`
        $RSYNC -n ${REMOTE_MACHINE}:$file . | fgrep -x "$base" >> log
done
if [ -s log ] ; then
        echo `Security alert!`
else
        ssh ${REMOTE_MACHINE} -l root /usr/sbin/tripwire --check
fi

rsync是一個常用來同步兩臺機器上的檔案的實用程式。它實際上通過SSH建立了一條安全隧道,來為我們在兩臺機器之間提供安全的鑑別功能,併為兩者之間的通訊提供加密服務,但前提是您已經在兩臺機器之間設定了SSH設施,否則,rsync就不能提供上述的安全功能。

這裡有幾個常用的選項需要介紹一下:-progress通知rsync只有當本地和遠端檔案不同時才產生輸出;-n選項的作用在於讓rsync不拷貝檔案。

對於fgrep命令,主要用於刪除所有輸出,但可疑的檔名除外。它的特點是用固定的字串而非正規表示式進行匹配,而檔名中恰恰又包含常見於正規表示式的一些特殊字元,如”.”等。fgrep -x對整行(即檔名)進行匹配,因此,當且僅當本地檔案和遠端檔案完全一致時,log檔案才為空,從而觸發完整性檢驗。

那麼是否要遠端儲存資料庫呢?實際上是沒有必要的,因為資料庫是用local金鑰來簽名的,而該金鑰又是”離機的”,因此如果資料庫發生意外變化的話,Tripwire就會發出警報。

Trusty不僅要檢查這些重要的Tripwire檔案,同時還必須趕在untrusty進行完整性檢查之前將他們拷貝給untrusty:

# scp -p tripwire untrusty:/usr/sbin/tripwire
# scp -p site.key untrusty-local.key untrusty:/etc/tripwire/
# ssh untrusty -l root /usr/sbin/tripwire --check

高強度完整性檢測

上面介紹的是常規強度的完整性檢測,但我們還可以繼續提高檢驗強度,但天下沒有免費的午餐,這需要付出速度與方便性為代價的。

因此,我們可以建立一個可引導的CD-ROM,並在其中放上一個微型的Linux系統、Tripwire程式以及您的local和site金鑰。然後,將您的機器與所有網路斷開,從上面製作的可引導光碟引導系統,接著利用光碟上的(而不是硬碟上的)可執行程式來檢查機器磁碟的完整性。之後還要經常備份您的Tripwire的資料庫、配置和策略,以備萬一它們被攻擊者刪除時之用。

這種方法至少需要兩臺機器,其中一個必須是安全可信的機器(稱為trusty),另一個是被檢測的機器(稱為untrusty)。我們的目的是為後者進行安全的Tripwire檢測。

第一步是安全建立可引導CD-ROM,這要求:

在trusty上建立CD-ROM,trusty必須是一個潔淨的Linux系統,它可以是由可信的源或二進位制軟體包構建而成,從來沒有連入網路或被第三方訪問過,此外還要為其打上最新的安全補丁。

配置CD-ROM的啟動指令碼使其禁用所有網路。

直接用可信的源或二進位制軟體包來燒製光碟

在trusty上建立site和local金鑰。

然後,從CD-ROM引導untrusty,裝上本地磁碟並利用CD-ROM上的程式和金鑰來建立untrusty的Tripwire資料庫。因為資料庫、策略和配置檔案已經用CD-ROM的金鑰簽過了名,所以這些檔案在untrusty上的安全性是可信的。接著,您就可以在執行完整性檢查之前從光碟上引導untrusty。另外,若只是從untrusty上載入光碟並從光碟上執行untrusty的話,則會出現以下情況:

如果untrusty是動態連結的話,很難保證共享庫的安全性;

難以保證系統核心的安全性;

難以保證untrusty上掛載點的正確性;

雖然這種方法提供了非常高的安全級別,但做起來非常麻煩,所以只有有特殊安全需求的情況下才採取該措施。為方便起見,我們可以安排一個cron任務,使其在每晚規定的時間從光碟上重引導untrusty,來進行Tripwire檢驗,之後再重引導untrusty。然而,不要讓untrusty本身來執行該任務,因為untrusty是不安全的,所以在其上執行的cron也是不可靠的;相反,應將其安排給trusty來執行,如利用SSH批處理任務來觸發重引導,因為這樣作更為合理一些.
六、完整性檢測的自動化

如果您想讓Tripwire在特定的時刻或每隔一段時間就自動進行檢測的話,可以按照下列提示來完成。例如我們要他每天的下午2點進行一次檢測,那該如何做呢?我們可以利用cron來來協助我們完成此項任務。我們可以在root使用者的 crontab檔案中新增以下一項:

0 2 * * * /usr/sbin/tripwire --check

需要注意的是,cron本身也可能受到攻擊,因而可能出現不執行等意外情況。所以我們最好在一個可信的遠端機器上來執行cron任務。在trusty上的crontab中新增如下一個遠端檢測項:

0 2 * * * ssh -n -l root untrusty /usr/sbin/tripwire --check

但是如果入侵者攻破了untrusty上的sshd的話,那麼覆巢之下,焉有完卵–您的安全性也必將受到威脅!此外,某些rootkits能夠顛覆對Tripwire的遠端exec呼叫。為了獲取最大的安全性,只是執行cron任務是遠遠不夠的,還得在可信機器上進行完整性檢驗。

Red Hat Linux預配置情況下,會在每晚通過cron任務/etc/cron.daily/tripwire-check來執行Tripwire程式。但是,Tripwire資料庫不是由作業系統來提供的,而是由使用者自己來提供一個原件,否則,cron只是定時向超級使用者傳送一封Tripwire呼叫失敗的的電子郵件

七、生成Tripwire報告

上面介紹瞭如何配置Tripwire來進行完整性檢測。但這並不是使用Tripwire的目的所在,我們需要的是完整性檢測的結果,換句話說還得要Tripwire將結果以報告的形式提交給管理人員,這樣我們才能以此判斷系統是否遭到破。具體操作如下所示:

#!/bin/sh
DIR=/var/lib/tripwire/report
HOST=`hostname -s`
LAST_REPORT=`ls -1t $DIR/$HOST-*.twr | head -1`
twprint --print-report --twrfile "$LAST_REPORT"

一般情況下,Tripwire報告存放在什麼地方是由Tripwire配置檔案中的REPORTFILE變數來決定,其常見值為:

REPORTFILE = /var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr

變數HOSTNAME存放的是機器的主機名,變數DATE存放的是時間戳,如。所以,主機untrusty的報告檔名應當為:

/var/lib/tripwire/report/untrusty-20040130-030518.twr

雖然tripwire可以通過電子郵件傳送報告,但不要太信賴電子郵件,因為它很可能被截獲並被篡改後重發。所以,最好由您直接檢查報告為上,要Twprin列印報告,可以按如下操作進行:

# twprint --print-dbfile --dbfile /var/lib/tripwire/`hostname -s`.twd
Tripwire(R) 4.0 Database
Database generated by:        root
Database generated on:        Mon Jan  1 22:33:55 2004
Database last updated on:     Never
... contents follow ...

八、Tripwire資料庫的維護

對於Tripwire資料庫的維護工作,主要包括資料庫的更新、新增和刪除操作,下面我們將分別介紹。

更新資料庫

有時候,我們會對程式作一些正常的修改,這些改動也會反映在最新的Tripwire報告中,但問題是,我們使用Tripwire很大程度上只想讓它報告那些”非法的”修改。那麼,這時我們就需要利用最新的報告來更新一下我們的TripwIEr資料庫,具體操作如下所示:

#!/bin/sh
DIR=/var/lib/tripwire/report
HOST=`hostname -s`
LAST_REPORT=`ls -1t $DIR/$HOST-*.twr | head -1`
tripwire --update --twrfile "$LAST_REPORT"

這裡有一點必須注意,那就是如果你已經修改了某些檔案的話,您不能只是簡單的執行更新就算了事:您必須在此之前首先進行完整性檢驗。進行更新的好處是它比初始化資料庫要快得多!

向資料庫中新增檔案

為了向Tripwire的資料庫中新增檔案和目錄,請執行以下操作:

向有效策略檔案中新增指定的檔案,如/bin/ls:

/bin/ls  -->  $(SEC_BIN) ;

向有效策略檔案中新增整個目錄樹,比如/etc:

/etc     -->  $(SEC_BIN) ;

向有效策略檔案中新增目錄如/etc及其下的檔案,但不包括其子目錄:

/etc     -->  $(SEC_BIN) (recurse=1) ;

向有效策略檔案中新增目錄如/etc,但不包括其下的檔案以及其子目錄:

/etc     -->  $(SEC_BIN) (recurse=0);

然後初始化資料庫。

策略實際上就是存放在策略檔案中的規則表,規則的一般形式如下所示:

filename -> rule ;

它的基本含義就是,如果給定的規則被違反的話,那麼對應的檔案或目錄就被認為是到了安全侵害。例如:

/bin/login -> +pisug ;

上面這條規則的含義是:如果自從上次快照之後,如果/bin/login的檔案許可權(p)、inode號(i)、 尺寸 (s),、使用者(u)或組 (g)發生了變化的話,那麼就應當引起我們的關注。如果想全面深入的瞭解Tripwire語法的話,請參閱Tripwire手冊。在這裡,我們使用了一個預定義的全域性變數SEC_BIN來指出二進位制檔案不得修改。recurse= n的作用在於通知Tripwire在檔案系統中的遞迴深度;當n為零時,其含義為只測試到目錄檔案本身這一層次。

很多時候我們需要修改預設策略檔案,因為它們所提供的策略未必完全適合我們的系統,所以我們需要針對不同的Linux型別和版本,對Tripwire所提供的預設策略進行適當的剪裁,從而滿足我們的要求。
從資料庫中刪減檔案

我們不僅根據需要向資料庫中新增檔案,有時我們還需要對資料庫中的檔案加以刪減。具體操作如下所示:

例如首先向資料庫中新增一個目錄:

/etc -> rule

然後排除掉其中的一些檔案:

!/etc/not.me
!/etc/not.me.either

如果我們想去掉一個子目錄的話:

!/etc/dirname

這裡,感嘆號!的作用在於將給定的檔案或子目錄排除掉。

九、小結

Tripwire是現實中最為常見的一種開源完整性檢測工具,我們對實際工作中的一些常見操作進行了較為全面而不失側重的介紹,如果讀者要想更深入的瞭解本軟體的話,請參閱其使用手冊。

需要注意的是,Tripwire是進行週期性檢測的,因此在兩次檢測間隔內的修改對它來說就顯得有些鞭長莫及了,但我們還可以縮短其週期間隔,使其幾乎以實時的方式執行,但這時的開銷將明顯增加,所以我們要在安全性和系統開銷之間加以權衡,實際工作中可以視具體情況來加以定奪。


相關文章