unix--Tripwire 應用

對unix管理員來講,主機系統的安全一直是個課題,一方面管理員經過更新patch,安裝軟硬件防火牆等手段努力使本身的系統可靠性加強,而另外一方面unix操做系統的漏洞老是不斷被發現並被公佈出來,如BUGTRAQ這樣的安全列表,從這個角度上能夠很絕對的說,互聯網上沒有安全的主機。任何一臺放在Internet上的主機被***的潛在可能性是不可逃脫的,並且,對***者而言,利用漏洞進入系統每每只是第一步,若是想獲得更多的,如超級用戶的密碼,數據庫的口令等,每每須要下點功夫,最便捷也是最有效的就是改動或特洛伊化受侵害的主機上的文件,如放置本身的監聽程序,替代某些關鍵文件,修改編輯可信文件,設置suid文件等。

  一些管理員通unix自帶的命令來檢查文件的安全性,如檢查文件生成的時間戳,但這樣的可靠性微乎其微,有經驗的***者能夠很輕鬆的修改文件生成時間,有興趣的管理員能夠試試如下操做:
  # echo "+ +" > /.rhosts
  這一步生成一個.rhosts文件,看看它的時間。
  # ls -l /.rhosts
  -rw-r--r-- 1 root other 4 Jul 2 16:45 /.rhosts
  好,咱們以下操做看看會怎麼樣?
  # touch -r /bin/sh /.rhosts
  #ls -l /.rhosts
  -rw-r--r-- 1 root other 4 Apr 5 16:32 /.rhosts

  咱們看到時間戳已經變了。變成了一個"老"文件,這樣極可能就會逃脫管理員的視線。好比,***者替換掉了su文件,在正當用戶每次試圖su時,這個特洛伊化的su文件都會讀取口令並將口令記載下來,而後才把控制權交給真正的su程序,口令經過這種途徑泄密了,雖然這不是管理員所指望的,但畢竟unix太大太複雜,發現起來很困難。

  Tripwire就是解決這一問題的經典工具,它是目前最爲著名的unix下文件系統完整性檢查的軟件工具,這一軟件採用的技術核心就是對每一個要監控的文件產生一個數字簽名,保留下來。當文件如今的數字簽名與保留的數字簽名不一致時,那麼如今這個文件一定被改動過了。具體到監控項目,在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 items 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操做系統,它的安裝須要編譯環境,如gcc,cc等,還須要gzip,gunzip等解壓工具。這些工具管理員可從相應站點獲取,這裏不討論。Tripwire可從[url]www.tripwire.com[/url]得到,到它的主頁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" 同時注意的是,在configh文件中還有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 ===   ../src/tripwire -loosedir -c /tmp/twtest/tw.config -d /tmp/twtest/tw.db -i all   === test.update.sh: testing GROWING (safe) files ===   === test.update.sh: testing GROWING (unsafe) files ===   === test.update.sh: testing ADDED files ===   === test.update.sh: testing DeleteD files ===   === test.update.sh: testing CHANGED files ===   === test.update.sh: testing input schemes ===   === test.update.sh: tw.config from stdin   === test.update.sh: database from stdin   === test.update.sh: testing complex Update cases   === test.update.sh: changed ignore-mask (Update file)   === test.update.sh: changed ignore-mask (Update entry)   === test.update.sh: testing UpdateD files (7 cases)   === test.update.sh: case 1: update: add new file ===   === test.update.sh: case 2: update: delete file ===   === test.update.sh: case 3: update: update file ===   === test.update.sh: case 4: nonsense case (skipping) ===   === test.update.sh: case 6: update: delete entry ===   === test.update.sh: case 5: update: add entry ===   === test.update.sh: case 7: update: update entry ===   === test.update.sh: PASS ===   咱們能夠看到,Tripwire對update功能一項項的作檢測,並在最後PASS了,當Tripwire全部的檢測項目都PASS後,編譯就OK了。   步驟4:生成數據庫   成功編譯Tripwire,咱們準備開始對須要監控的文件進行掃描,以生成Tripwire數據庫,在Tripwire 的src目錄下:以下操做。/tripwire -init,則系統會根據tw.conf.sunos5文件內的設置,開始掃描並生成相應的數據庫,上面提到,數據庫文件的路徑是在第二步configh中設置的,在本例中爲/var/tripwire,咱們獲得了名爲tw.db_secu.unix.com的數據庫文件。建議此時將Tripwire可執行文件,數據庫文件,配置文件COPY到軟盤等地方,放到安全的地方。之後須要安全鑑別時直接在軟盤上執行便可。   步驟5:測試   數據庫生成了,咱們來測試一下吧,首先咱們在根下touch生成一個goadd文件,其次咱們把根下的.cshrc文件作一下改動,在裏面加入幾個#註釋號。而後咱們來運行一下Tripwire看如何:   / Tripwire -c ./tw.config.sunos5 -d ./tw.db_secu.unix.com   Tripwire(tm) ASR (Academic Source Release) 1.3.1   File Integrity Assessment Software   (c) 1992, Purdue Research Foundation, (c) 1997, 1999 Tripwire   Security Systems, Inc。 All Rights Reserved。 Use Restricted to   Authorized Licensees。   ### Phase 1: Reading configuration file   ### Phase 2: Generating file list   ./tripwire: /.profile: No such file or directory   ./tripwire: /kernel/unix: No such file or directory   ### Phase 3: Creating file information database   ### Phase 4: Searching for inconsistencies   ###   ### Total files scanned: 4437   ### Files added: 1   ### Files deleted: 0   ### Files changed: 1   ###   ### Total file violations: 2   ###   added: -rw-r--r-- root 0 Jul 3 18:45:31 2000 /goadd   changed: -r--r--r-- root 669 Jul 3 18:46:15 2000 /.cshrc   ### Phase 5: Generating observed/expected pairs for changed files   ###   ### Attr Observed (what it is) Expected (what it should be)   ### =========== ============================= =============================   /.cshrc   st_size: 669 668   st_mtime: Mon Jul 3 18:46:15 2000 Mon Jul 3 09:00:41 2000   st_ctime: Mon Jul 3 18:46:15 2000 Mon Jul 3 09:00:41 2000   md5 (sig1): 3z9gKjlZGq5GbeWOxpYaF9 1Z7K0n3ZKAyuPpAZB1G8uq   snefru (sig2): 1vCDeMR45lpRCChmDithiW 1oRYPpQ:oZA6hVx6Zi4.NG   能夠看到,系統運行通過了5個步驟,首先讀取配置文件,其次生成配置文件中設置爲須要監控,但實際並不存在的文件列表。第三部生成文件信息庫,第四步報告檢查狀況。咱們看到共掃描了4437個文件,其中有一個文件是新增長的,有一個文件發生了改變。在下面它列出了這兩個文件-正是咱們作了手腳的文件!在最後一步Tripwire將發生了改變的文件如今字節數,生成時間,修改時間, md5, snefru簽名及數據庫中的記錄對比列出,是否是很爽?   上面咱們講到的是Tripwire的主要功能,在命令行狀態下敲入tripwire -h 就會有其它使用參數的介紹,有興趣的管理員不妨一試。
相關文章
相關標籤/搜索