歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> Unix文件安全檢查利器- Tripwire

Unix文件安全檢查利器- Tripwire

日期:2017/2/27 14:16:04   编辑:更多Linux

作者: Yiming Gong -------------- Copyright 2000-2003 by 水銀流動 Yiming Gong([email protected]) All rights reserved. This document may only be reprodUCed (whole or in part) for non-commercial purposes. All reproductions must contain this copyright notice and must not be altered, except by permission of the author. -------------- 1:為什麼會有Tripwire,什麼是Tripwire 對unix管理員來說,主機系統的安全一直是個課題,一方面管理員通過更新patch,安裝軟硬 件防火牆等手段努力使自己的系統可靠性增強,而另一方面unix操作系統的漏洞總是不斷被 發現並被公布出來,如BUGTRAQ這樣的安全列表,從這個角度上可以很絕對的說,互聯網上沒有 安全的主機.任何一台放在Internet上的主機被入侵的潛在可能性是不可逃脫的,而且,對入 侵者而言,利用漏洞進入系統往往只是第一步,如果想得到更多的,如超級用戶的密碼,數據庫 的口令等,往往需要下點功夫,最便捷也是最有效的就是改動或特洛伊化受侵害的主機上的文 件,如放置自己的監聽程序,替代某些關鍵文件,修改編輯可信文件,設置suid文件等. 一些管理員通unix自帶的命令來檢查文件的安全性,如檢查文件生成的時間戳,但這樣的可靠 性微乎其微,有經驗的入侵者可以很輕松的修改文件生成時間,有興趣的管理員可以試試以下 操作: secu.unix.org# echo "+ +" > /.rhosts 這一步生成一個.rhosts文件,看看它的時間. secu.unix.org# ls -l /.rhosts -rw-r--r-- 1 root other 4 Jul 2 16:45 /.rhosts 好,我們如下操作看看會怎麼樣? secu.unix.org# touch -r /bin/sh /.rhosts 有什麼效果? 我們再次ls –l看一下, secu.unix.org# ls -l /.rhosts -rw-r--r-- 1 root other 4 Apr 5 16:32 /.rhosts 我們看到時間戳已經變了.變成了一個”老”文件,這樣很可能就會逃脫管理員的視線.. 又比如,入侵者替換掉了su文件,在正當用戶每次試圖su時,這個特洛伊化的su文件都會讀取口令 並將口令記載下來,然後才把控制權交給真正的su程序,口令通過這種途徑洩密了,雖然這不是管 理員所期望的,但畢竟unix太大太復雜,發現起來很困難. Tripwire就是解決這一問題的文件系統完整性檢查的工具,它采用的技術核心就是對每個要監控 的文件產生一個數字簽名,保留下來。當文件現在的數字簽名與保留的數字簽名不一致時,那麼 現在這個文件必定被改動過了.具體到監控項目,在Tripwire的配置文件中有如下相應說明: Access permissions and file mode settings, including effective execution settings inode number in the file system number of links user ID of the owner group ID of the group of users to which access may be granted size of the item date and time the item was last accessed, the last modification made to the item, and the creation date and time associated with the item's inode 由上,我們可以看到Tripwire對文件的管理面是很寬的。 2: Tripwire的工作原理 當Tripwire運行在數據庫生成模式時,會根據管理員設置的一個配置文件對指定要監控的文件進行 讀取,對每個文件生成相應數字簽名,並將這些結果保存在自己的數據庫中,在缺省狀態下,MD5和 SNCFRN(Xerox的安全哈希函數)加密手段被結合用來生成文件的數字簽名.除此以外,管理員還可使 用MD4,CRC32,SHA等哈希函數,但實際上,使用上述兩種哈希函數的可靠性已相當高了,而且結合MD5 和sncfrn兩種算法(尤其是sncfrn)對系統資源的耗費已較大,所以在使用時可根據文件的重要性做 取捨.當懷疑系統被入侵時,可由Tripwire根據先前生成的,數據庫文件來做一次數字簽名的對照,如 果文件被替換,則與Tripwire數據庫內相應數字簽名不匹配, 這時Tripwire會報告相應文件被更動,管理員就明白系統不”干淨”了. 有一點要注意,上述保障機制的重點在於數據庫內的數字簽名,如果數據庫是不可靠的,則一切工作


都喪失意義.所以在Tripwire生成數據庫後,這個庫文件的安全極為重要.比較常見的做法是將數據 庫文件, Tripwire二進制文件,配置文件單獨保留到”可拿走並鎖起來”的介質上,如軟盤,將上述文件復制 到軟盤後,關閉寫保護口,鎖到保險櫃中.除軟盤外, 一次性介質,如cd-r也是很好的選擇,這樣即使侵入者拿到盤也無計可施. 除這種辦法外,利用PGP等加密工具對上述關鍵文件進行數字簽名也是一個很好的選擇. 當然,當管理員自身對某些文件更動時, Tripwire的數據庫必然是需要隨之更新的, Tripwire考慮到了這一點,它有四種工作模式:數據庫生成,完整性檢查,數據庫更新.交互更新.當管 理員更動文件後,可運行數據庫更新模式來產生新的數據庫文件。 3:下載Tripwire,安裝前的准備工作 Tripwire支持絕大多數Unix操作系統,它的安裝需要c編譯環境,如gcc,cc等,還需要gzip,gunzip等解 壓工具.這些工具管理員可從相應站點獲取,這裡不討論. Tripwire可從www.tripwire.com獲得,到它的主頁download部分,可以看到當前可免費download的 Tripwire1.3 ASR版本,下載下來就是. 4:安裝Tripwire Tripwire的tar包解開後,我們可以看到如下目錄結構,建議先看看根下的README文件,對Tripwire有個 整體的了解.隨後,我們就可以一步步的安裝這個軟件了. 步驟1:匹配主機環境 在Tripwire的根下有Ported這個文件,它是對支持的系統及相關配置文件的描述,管理員第一步需要 打開這個文件,找到符合自己系統的描述,本文的測試環境是solaris2.6,我們截取相關部分來看看, vendor: Sun Microsystems, Inc. os: SunOS os version: 5.x (Solaris 2.x) compiler: cc cflags: -O ldflags: libs: conf.h: conf-svr4.h tw.config: tw.conf.sunos5 notes: 在這一段描述中,要尤其注意的是conf.h 和tw.config對應的行,在下幾步的配置中需要用到它們兩個對應的文件.此處要注意的是:每種操作 系統這兩個地方所對應的文件是不同的. 步驟2:配置監控目標 進入include目錄,編輯config.h文件,將第一步Ported中conf.h後對應的文件名和路徑寫入 config.h開始#include部分,此例中即為 #include "../configs/conf-svr4.h" 同時注意的是,在config.h文件中還有Tripwire配置文件,Tripwire數據庫文件的放置路徑及生成數 據庫的文件名等設置,管理員按照個人喜好設置即可。 編輯好config.h後,還要根據本機情況編輯修改位於configs目錄下的Tripwire配置文件,也就是上面 Ported 文件中tw.config對應的tw.conf.sunos5,我們知道,對文件,目錄等的監控就是在這裡設置的。我們 一段段的選取一部分這個文件來看看: # # - : ignore the following atributes # + : do not ignore the following attributes # # p : permission and file mode bits a: access timestamp # i : inode number m: modification timestamp # n : number of links (ref count) c: inode creation timestamp # u : user id of owner 1: signature 1 # g : group id of owner 2: signature 2 # s : size of file 注意上述p,I,n,u,g,s,a,c,1,2等,它表示可以對文件,目錄設置的監控項目,管理員可組合使用, 最前面的-,+號表示選取或忽略這些屬性。如下例: /var +pinugsm12-a 它表示對目錄/var下所有文件檢查,監控項目分別有文件屬性,inode,鏈接數,屬組,屬主,修改 時間,生成時間,數字簽名等,但是,對這個目錄下的文件的訪問不加監控,如果訪問也監控的話, 正常的用戶訪問也會被Tripwire捕捉,這沒有必要. 為了方便起見,Tripwire作者把常見組合做成了模板,如下, # # Templates: (default) R : [R]ead-only (+pinugsm12-a) # L : [L]og file (+pinug-sam12) # N : ignore [N]othing (+pinusgsamc12) # E : ignore [E]verything (-pinusgsamc12)

# tw.conf.sunos5這個文件再向下,就是管理員根據情況填寫了,把需要監控的文件及目錄加入列表, 賦予相應屬性即可。如下: / R /.rhosts R # may not exist /.profile R # may not exist /etc/dfs/dfstab R /etc/hosts.equiv R /etc/inet/inetd.conf R /etc/inet/protocols R /etc/inet/services R /etc/init.d R /etc/motd L #/etc/named.boot R # may not exist /etc/opt R /etc/passwd L /etc/profile R 步驟3:編譯 完成上兩步後,就可以編譯了,在Tripwire的根下,執行make,系統即會自動編譯,編譯成功後, 可以再執行make test, Tripwire會自動檢查編譯情況及工作狀態,它會一段一段的測試,我們選取一段如下: === test.update.sh: DESCRIPTION This shell script exercises all the Tripwire integrity checking and database update functionalities. === test.update.sh: Setting up auxiliary scripts === === test.update.sh: BEGIN ===



/etc/hosts.equiv R /etc/inet/inetd.conf R /etc/inet/protocols R /etc/inet/services R /etc/init.d R /etc/motd L #/etc/named.boot R # may not exist /etc/opt R /etc/passwd L /etc/profile R 步驟3:編譯 完成上兩步後,就可以編譯了,在Tripwire的根下,執行make,系統即會自動編譯,編譯成功後, 可以再執行make test, Tripwire會自動檢查編譯情況及工作狀態,它會一段一段的測試,我們選取一段如下: === test.update.sh: DESCRIPTION This shell script exercises all the Tripwire integrity checking and database update functionalities. === test.update.sh: Setting up auxiliary scripts === === test.update.sh: BEGIN ===



Copyright © Linux教程網 All Rights Reserved