入侵監測系統的構建( chkrootkit )

  所謂 rootkit ,是一類入侵者經常使用的工具。這類工具通常非常的隱秘、令用戶不易察覺,通過這類工具,入侵者建立了一條能夠常時入侵系統,或者說對系統進行即時控制的途徑。所以,我們用自由軟體 chkrootkit 來建立入侵監測系統,來保證對系統是否被安裝了 rootkit 進行監測。

  chkrootkit 在監測 rootkit 是否被安裝的過程中,需要使用到一些作業系統本身的命令。但不排除一種情況,那就是入侵者有針對性的已經將 chkrootkit 使用的系統命令也做修改,使得 chkrootkit 無法監測 rootkit ,從而達到即使系統安裝了 chkrootkit 也無法檢測出 rootkit 的存在,從而依然對系統有著控制的途徑,而達到入侵的目的。那樣的話,用 chkrootkit 構建入侵監測系統將失去任何意義。對此,我 們在作業系統剛被安裝之後,或者說伺服器開放之前,讓 chkrootkit 就開始工作。而且,在伺服器開放之前,備份 chkrootkit 使用的系統命 令,在一些必要的時候(懷疑系統命令已被修改的情況等等),讓 chkrootkit 使用初始備份的系統命令進行工作。
安裝 chkrootkit


  首先來下載和安裝 chkrootkit 工具。
[root@sample ~]# wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz ← 下載chkrootkit

--03:05:31-- ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
=> `chkrootkit.tar.gz'
Resolving ftp.pangeia.com.br... 200.239.53.35
Connecting to ftp.pangeia.com.br|200.239.53.35|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD /pub/seg/pac ... done.
==> PASV ... done. ==> RETR chkrootkit.tar.gz ... done.
Length: 37,140 (36K) (unauthoritative)
100%[====================================>] 37,140 5.67K/s ETA 00:00
03:05:46 (5.30 KB/s) - `chkrootkit.tar.gz' saved [37140]

[root@sample ~]# tar zxvf chkrootkit.tar.gz  ← 展開被壓縮的原始程式碼

[root@sample ~]# cd chkrootkit*  ← 進入chkrootkit原始程式碼的目錄

[root@sample chkrootkit-0.46a]# make sense  ← 編譯

[root@sample chkrootkit-0.46a]# cd ..  ← 返回上層目錄

[root@sample ~]# cp -r chkrootkit-* /usr/local/chkrootkit  ← 複製編譯後檔所在的目錄到指定位置

[root@sample ~]# rm -rf chkrootkit*  ← 刪除遺留的原始程式碼目錄及相關檔

測試 chkrootkit


  然後測試 chkrootkit 是否能夠正常運行。
[root@sample ~]# cd /usr/local/chkrootkit  ← 進入chkrootkit的目錄

[root@sample chkrootkit]# ./chkrootkit | grep INFECTED  ← 測試運行chkrootkit
稍等片刻…如果沒有顯示“INFECTED”字樣,而直接出現命令列提示符,說明一切OK!

[root@sample chkrootkit]# cd   ← 回到root使用者目錄

讓 chkrootkit 的監測自動化


  用Shell Script編寫一段腳本,通過這個腳本讓chkrootkit的監測自動化。如有rootkit被發現的時候,發送郵件通知root用戶,並且將運行結果保存在/var/log/messages檔中。
[root@sample ~]# vi chkrootkit  ← 建立chkrootkit自動運行腳本

#!/bin/bash
PATH=/usr/bin:/bin
TMPLOG=`mktemp`
# Run the chkrootkit
/usr/local/chkrootkit/chkrootkit > $TMPLOG
# Output the log
cat $TMPLOG | logger -t chkrootkit
# bindshe of SMTPSllHow to do some wrongs
if [ ! -z "$(grep 465 $TMPLOG)" ] && \
[ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
sed -i '/465/d' $TMPLOG
fi
# If the rootkit have been found,mail root
[ ! -z "$(grep INFECTED $TMPLOG)" ] && \
grep INFECTED $TMPLOG | mail -s "chkrootkit report in `hostname`" root
rm -f $TMPLOG

[root@sample ~]# chmod 700 chkrootkit  ← 賦予腳本可被執行的許可權

[root@sample ~]# mv chkrootkit /etc/cron.daily/  ← 將腳本移動到每天自動運行的目錄中

chkrootkit 相關的系統命令的備份


  如前言所述,當chkrootkit使用的系統命令被入侵者更改後,chkrootkit對 rootkit的監測將失效。所以,我們事前將chkrootkit使用的系統命令進行備份,在需要的時候使用備份的原始命令,讓chkrootkit對 rootkit進行檢測。
[root@sample ~]# mkdir /root/commands/  ← 建立暫時容納命令備份的目錄

[root@sample ~]# cp `which --skip-alias awk cut echo egrep find head id ls netstat ps strings sed uname` /root/commands/  ← (連續輸入無換行)備份系統命令到建立好的目錄

[root@sample ~]# /usr/local/chkrootkit/chkrootkit -p /root/commands|grep INFECTED  ← 用備份的命令運行chkrootkit

[root@sample ~]# tar cvf /root/commands.tar /root/commands/ ← 將命令打包

[root@sample ~]# gzip /root/commands.tar  ← 將打包的檔案壓縮
然後將壓縮後的commands.tar.gz用SCP軟體下載到安全的地方

[root@sample ~]# rm -rf commands*   ← 為安全起見,刪除伺服器端備份的系統命令及相關檔

  如果以後想通過備份的原始系統命令來運行chkrootkit的時候,只需用SCP軟體將備份的命令打包壓縮檔上傳至伺服器端已知位置並解壓縮,然後運行在chkrootkit的時候指定相應的目錄即可。例如,假設已經將備份上傳至root使用者目錄的情況如下:
[root@sample ~]# tar zxvf /root/commands.tar.gz  ← 解開壓縮的命令備份

[root@sample ~]# /usr/local/chkrootkit/chkrootkit -p /root/commands|grep INFECTED ← 用備份的命令運行chkrootkit

然後在運行後刪除相應遺留檔即可。

留言

這個網誌中的熱門文章

c語言-關於#define用法

PHP教學 - 資料型態(Data Type) - 上

CMD常用網管指令