因為UNIX系統經常承當着關鍵任務,是以它經常是入侵者攻擊的首選目标。于是檢測入侵、保護系統安全是管理者的最為重要的任務之一。那麼,在沒有其它工具幫助的情況下,如何去判斷系統目前的安全性?如何去發現入侵呢?下面給大家介紹一些常用到的檢查方法
以LINUX和solaris為例:
1、檢查系統密碼檔案
首先從明顯的入手,檢視一下passwd檔案,ls –l /etc/passwd檢視檔案修改的日期。
輸入指令
awk –F:’$3==0 {print $1}’ /etc/passwd
來檢查一下passwd檔案中有哪些特權使用者,系統中uid為0的使用者都會被顯示出來。順便再檢查一下系統裡有沒有空密碼帳戶:
awk –F: ‘length($2)==0 {print $1}’ /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目錄,根據查找到
的檔案和經驗來判斷被隐藏和僞裝的程序,當然目錄也可能不是隐藏的。
手工的入侵檢測行為對于系統安全來說隻是治标而不治本,多半還是依靠管理者的技巧和經驗來增強系統的安全性,沒有,也不可能形成真正的安全體
系,雖然好過沒有,可以檢測和追蹤到某些入侵行為,但如果碰上同樣精通系統的入侵者就很難抓住蹤迹了。搭建真正的安全體系需要配合使用入侵檢測系統,一個
優秀的入侵檢測系統輔以系統管理者的技巧和經驗可以形成真正的安全體系,有效判斷和切斷入侵行為,真正保護主機、資料。