*NIX入侵檢測方法(轉)

post0發表於2007-08-11
*NIX入侵檢測方法(轉)[@more@]

  因為*NIX系統經常承當著關鍵任務,所以它經常是入侵者攻擊的首選目標。於是檢測入侵、保護系統安全是管理員的最為重要的任務之一。那麼,在沒有其它工具幫助的情況下,如何去判斷系統當前的安全性?如何去發現入侵呢?下面給大家介紹一些常用到的檢查方法,以LINUX和solaris為例:

1、檢查系統密碼檔案

 首先從明顯的入手,檢視一下passwd檔案,ls –l /etc/passwd檢視檔案修改的日期。

 輸入命令 awk –F:’$3==0 {print }’ /etc/passwd來檢查一下passwd檔案中有哪些特權使用者,系統中uid為0的使用者都會被顯示出來。順便再檢查一下系統裡有沒有空口令帳戶: awk –F: ‘length()==0 {print }’ /etc/shadow

2、檢視一下程式,看看有沒有奇怪的程式

 重點檢視程式:ps –aef | grep inetd

 inetd是UNIX系統的守護程式,正常的inetd的pid都比較靠前,如果你看到輸出了一個類似inetd –s /tmp/.xxx之類的程式,著重看inetd –s後面的內容。在正常情況下,LINUX系統中的inetd服務後面是沒有-s引數的,當然也沒有用inetd去啟動某個檔案;而solaris系統中也僅僅是inetd –s,同樣沒有用inetd去啟動某個特定的檔案;如果你使用ps命令看到inetd啟動了某個檔案,而你自己又沒有用inetd啟動這個檔案,那就說明已經有人入侵了你的系統,並且以root許可權起了一個簡單的後門。

 輸入ps –aef 檢視輸出資訊,尤其注意有沒有以./xxx開頭的程式。一旦發現異樣的程式,經檢查為入侵者留下的後門程式,立即執行kill –9 pid 開殺死該程式,然後再執行ps –aef檢視該程式是否被殺死;一旦此類程式出現殺死以後又重新啟動的現象,則證明系統被人放置了自動啟動程式的指令碼。這個時候要進行仔細查詢:find / -name 程式名 –print,假設系統真的被入侵者放置了後門,根據找到的程式所在的目錄,UNIX下隱藏程式有的時候透過替換ps檔案來做,檢測這種方法涉及到檢查檔案完整性,一會我們再討論這種方法。接下來根據找到入侵者在伺服器上的檔案目錄,一步一步進行追蹤。

3、檢查系統守護程式

 檢查/etc/inetd.conf檔案,輸入:cat /etc/inetd.conf | grep –v “^#”,輸出的資訊就是你這臺機器所開啟的遠端服務。一般入侵者可以透過直接替換in.xxx程式來建立一個後門,比如用/bin/sh 替換掉in.telnetd,然後重新啟動inetd服務,那麼telnet到伺服器上的所有使用者將不用輸入使用者名稱和密碼而直接獲得一個 rootshell。

4、檢查網路連線和監聽埠

 輸入netstat -an,列出本機所有的連線和監聽的埠,檢視有沒有非法連線。

 輸入netstat –rn,檢視本機的路由、閘道器設定是否正確。

 輸入 ifconfig –a,檢視網路卡設定。

5、檢查系統日誌

 命令last | more檢視在正常情況下登入到本機的所有使用者的歷史記錄。但last命令依賴於syslog程式,這已經成為入侵者攻擊的重要目標。入侵者通常會停止系統的syslog,檢視系統syslog程式的情況,判斷syslog上次啟動的時間是否正常,因為syslog是以root身份執行的,如果發現 syslog被非法動過,那說明有重大的入侵事件。

 在linux下輸入ls –al /var/log

  在solaris下輸入 ls –al /var/adm

  檢查wtmp utmp,包括messgae等檔案的完整性和修改時間是否正常,這也是手工擦除入侵痕跡的一種方法。

6、檢查系統中的core檔案

 透過傳送畸形請求來攻擊伺服器的某一服務來入侵系統是一種常規的入侵方法,典型的RPC攻擊就是透過這種方式。這種方式有一定的成功率,也就是說它並不能100%保證成功入侵系統,而且通常會在伺服器相應目錄下產生core檔案,全域性查詢系統中的core檔案,輸入find / -name core –exec ls –l {} ; 依據core所在的目錄、查詢core檔案來判斷是否有入侵行為。

7、檢查系統檔案完整性

 檢查檔案的完整性有多種方法,通常我們透過輸入ls –l 檔名來查詢和比較檔案,這種方法雖然簡單,但還是有一定的實用性。但是如果ls檔案都已經被替換了就比較麻煩。在LINUX下可以用rpm –V `rpm –qf 檔名` 來查詢,查詢的結果是否正常來判斷檔案是否完整。在LINUX下使用rpm來檢查檔案的完整性的方法也很多,這裡不一一贅述,可以man rpm來獲得更多的格式。

 UNIX系統中,/bin/login是被入侵者經常替換作為後門的檔案,接下來談一下login後門 :

 UNIX裡,Login程式通常用來對telnet來的使用者進行口令驗證。入侵者獲取login的原始碼並修改,使它在比較輸入口令與儲存口令時先檢查後門口令。如果使用者敲入後門口令,它將忽視管理員設定的口令讓你長驅直入:這將允許入侵者進入任何賬號,甚至是root目錄。由於後門口令是在使用者真實登入並被日誌記錄到utmp和wtmP前產生的一個訪問,所以入侵者可以登入獲取shell卻不會暴露該賬號。管理員注意到這種後門後,使用” strings”命令搜尋login程式以尋找文字資訊。許多情況下後門口令會原形畢露。入侵者又會開始加密或者更改隱藏口令,使strings命令失效。所以許多管理員利用MD5校驗和檢測這種後門。UNIX系統中有md5sum命令,輸入md5sum 檔名檢查該檔案的md5簽名。它的使用格式如下:md5sum –b 使用二進位制方式閱讀檔案;md5sum –c 逆向檢查MD5簽名;md5sum –t 使用文字方式閱讀檔案。

 在前面提到過守護程式,對於守護程式配置檔案inetd.conf中沒有被註釋掉的行要進行仔細比較,舉個簡單的例子,如果你開放了telnet服務,守護程式配置檔案中就會有一句:telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd

 可以看到它所使用的檔案是 /usr/sbin/in.telnetd,檢查該檔案的完整性,入侵者往往透過替換守護程式中允許的服務檔案來為自己建立一個後門。

 LINUX系統中的/etc/crontab也是經常被入侵者利用的一個檔案,檢查該檔案的完整性,可以直接cat /etc/crontab,仔細閱讀該檔案有沒有被入侵者利用來做其他的事情。

 不替換login等檔案而直接使用程式來啟動後門的方法有一個缺陷,即系統一旦重新啟動,這個程式就被殺死了,所以得讓這個後門在系統啟動的時候也啟動起來。通常透過檢查/etc/rc.d下的檔案來檢視系統啟動的時候是不是帶有後門程式。

 說到這裡,另外提一下,如果在某一目錄下發現有屬性為這樣的檔案:-rwsr-xr-x 1 root root xxx .sh,這個表明任何使用者進來以後執行這個檔案都可以獲得一個rootshell,這就是setuid檔案。執行 find –perm 4000 –print對此類檔案進行全域性查詢,然後刪除這樣的檔案。

8、檢查核心級後門

 如果你的系統被人安裝了這種後門,通常都是比較麻煩的,首先,檢查系統載入的模組,在LINUX系統下使用lsmod命令,在solaris系統下使用 modinfo命令來檢視。這裡需要說明的是,一般預設安裝的LINUX載入的模組都比較少,通常就是網路卡的驅動;而solaris下就很多,沒別的辦法,只有一條一條地去分析。對核心進行加固後,應禁止插入或刪除模組,從而保護系統的安全,否則入侵者將有可能再次對系統呼叫進行替換。我們可以透過替換 create_module()和delete_module()來達到上述目的。另外,對這個核心進行加固模組時應儘早進行,以防系統呼叫已經被入侵者替換。如果系統被載入了後門模組,但是在模組列表/proc/module裡又看不到它們。出現這種情況,需要仔細查詢/proc目錄,根據查詢到的檔案和經驗來判斷被隱藏和偽裝的程式,當然目錄也可能不是隱藏的。

 手工的入侵檢測行為對於系統安全來說只是治標而不治本,多半還是依靠管理員的技巧和經驗來增強系統的安全性,沒有,也不可能形成真正的安全體系,雖然好過沒有,可以檢測和追蹤到某些入侵行為,但如果碰上同樣精通系統的入侵者就很難抓住蹤跡了。搭建真正的安全體系需要配合使用入侵檢測系統,一個優秀的入侵檢測系統輔以系統管理員的技巧和經驗可以形成真正的安全體系,有效判斷和切斷入侵行為,真正保護主機、資料。

來 源: 紅客聯

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945548/,如需轉載,請註明出處,否則將追究法律責任。

相關文章