這篇文章提供對系統入侵檢測的建議做法,以下共分十點:
1. 檢視連線記錄檔中是否有不尋常的來源位置或不尋常的操作動作。例如, 檢查你最後
的登錄時間, 程序的執行記錄以及syslog所做的記錄。除非你的記錄檔寫在只能新
增資料(append-only)的邊上, 不然這些動作不可忽略。許多的入侵者會修改記錄檔
來隱藏他們的行蹤。
2.找出系統中所有setuid及setgid的檔案(特別是setuid成root的檔案)。入侵者經常喜歡留
下setuid root的/bin/sh或/bin/time, 如此當他以後再登入時便能輕易擁有root的權
限。在
UNIX系統中, find這個指令可以幫我們找出setuid及setgid的檔案。你可以使用以下命
令來找出整個檔案系統中所有setuid root和setgid kmem的檔案
find / -user root -perm -4000 -print
find / -group kmem -perm -2000 -print
上列的例子會搜尋整個檔案系統, 包括NFS及AFS。有些find命令支援一個”-xdev”的參
數,可用來避免搜尋非本機的檔案系統, 如下所示:
find / -user root -perm -4000 -print -xdev
另外我們也可以用ncheck找出某一磁碟分割區中所有setuid的檔案。例如我們可以使用
下列的命令, 找出分割區/dev/rsd0g中所有的setuid檔案:
ncheck -s /dev/rsd0g
3.檢查你系統的執行檔看看它們是否被修改了。入侵者會修改UNIX系統的程式, 如login、
su、telnet、netstat、ifconfig、ls、find、du、df、libc、sync、任何在
/etc/inet.conf
記載的程式及其它重要的網路及系統程式和分享資源的程式庫。用未經修改的備份來和你
目前的系統做比較, 例如你可以用系統安裝片裡的資料來比較。要特別小心挑選你拿來做
比較的備份,不注意的話它可能本身就含有木馬程式。
4.檢查你系統中是否有正在執行網路監聽程式(sniffer)。入侵者可能透過監聽程式取得使
用者帳號及密碼。相關的訊息請參閱CERT advisory CA-94:01,網址:
http://www.cert.org/advisories/CA-94.01.ongoing.network.monitoring.attacks.html
5.檢查系統中所有由”cron”和”at”所執行的程式。入侵者可能會留下後門並由”cron”
或
”at”來執行它。即使你後來在別的程式做了連線位置的限定, 入侵者依舊可以透過這個
後門回到系統中。另外, 我們也要檢查那些被”cron”或”at”執行的程式屬性, 要避免
任
何人都能寫入修改它們。
6.檢查/etc/inetd.conf的資料,注意是否有被更動,尤其是更動成執行shell程式(如
/bin/sh,/bin/csh), 並檢查各服務的對應程式是否正確,已避免被改換成木馬程式。
並檢查/etc/inetd.conf的各種服務是否有原本不提供的服務被開啟。另外你也須檢
查那些正常,但已被你關掉的服務,因為入侵者可能會打開原本你先前關掉的服務,或
者是用木馬程式換掉inetd程式。
7.檢查系統/etc/passwd的內容及檔案屬性的更動。基本上, 察看內容是否有管理者不知道
的新帳號、沒有密碼的帳號或uid與其它使用者相同(特別是uid 0, root) 的帳號。
8.檢查你的系統與網路設定檔。基本上,檢查/etc/hosts.equiv,/etc/hosts.lpd,和所有
.rhosts檔案, 看看是否有”+”(加號)或不應存在的host存在檔案中。並且不可讓任何人
都可以寫入這些檔案。再者,確定這些檔案不是被入侵者所創造的。
9.找出系統不尋常或隱藏的檔案(檔名以”.”開頭或是只用”ls”看不到的檔案),這些有可
能
是用來隱藏工具或資料用的。要在使用者目錄底下放一個隱藏目錄, 通常使用較奇特的檔
名, 如”…” 或”.. “(點、點、空白)或者”..^G”(^G是control-G). 要如何找出這
些檔
呢? 我們可以再使用”find”來幫我們找出這些檔案, 如下:
find / -name ".. " -print -xdev
find / -name ".*" -print -xdev | cat -v
10.當你要檢查機器是否被入侵, 你必須檢查所有區域網路上的機器。大部分的情形是, 假
如一台機器被入侵了,很可能同一網段的其它機器也被入侵了。特別是當你使用NIS或
是使用了/etc/hosts.equiv或.rhosts這些設定檔。
(http://www.fanqiang.com)
進入【UNIX論壇】
|