上一次,我告訴了你如何發現是否有入侵者在你的UNIX系統上放置了rootkit。Rootkit是UNIX系統核心命令替換程序的集合,它用於入侵成功後清除痕跡並維持對受害系統的訪問。 你可以使用商用的或者開放源代碼的程序,例如Tripwire或者chkrootkit,來檢查你系統上是否存在rootkit。但是,發現有人攻破了你的UNIX系統是一回事——而清除這個爛攤子完全又是另外一回事。 清除rootkit將是一件復雜的事情。UNIX沒有一個統一的(程序)包標准,這就意味著重新安裝整個操作系統是通常的恢復方法。 這對於很多人來說不是一個好消息,尤其是當受害系統包含有不可替換數據的時候。有了數據備份的幫助,你可以把很多系統清理干淨,而不需要停止它們的運行。 使用小紅帽程序包管理器(Red Hat Package Manager,RPM)的Linux系統能夠以根用戶的權限運行rpm –Va命令,從而迅速地檢查系統文件的完整性。這條命令會輸出一個列表,上列著自從原始版本以來發生過改變的文件和目錄,但是這並不意味著已經被安裝了一個rootkit。要小心的是,對netstat、ifconfig、ps和chsh等命令文件進行更改是rootkit的典型做法,而不論所使用的UNIX操作系統是什麼。 如果你懷疑已經被人安裝了rootkit,那麼要做的第一件事就是拔掉網絡連接,盡快關掉受害機器,並在單用戶模式啟動它。如果你有“急救”啟動磁盤或者光盤,那麼就要用它了。 一旦在單用戶模式啟動了機器,你就可以開始恢復過程了。如果沒有用於你Linux系統的“急救”磁盤,就要在Google上搜尋一個了。 入侵者一般都會更改Linux系統上的rootkit文件的屬性,以防止其他的人替換它們。對受懷疑的文件或者目錄運行lsattr命令會顯示它們同其他可執行程序文件的差別。 標有“不可更改”標記(“i”)的文件總是可疑的。這個標記意味著有人已經使用chattr命令更改了rootkit文件,以防止你刪除或者替換文件。 恢復的關鍵是確信你沒有改錯的文件。Rootkit經常會替換掉/bin、/sbin、/usr/bin和/usr/sbin下面的文件,這些地方放著UNIX命令需要使用的一些主要文件。Rootkit也會把目錄和文件放在這些地方之外,但是除非你絕對確信這些文件屬於rootkit而不是某個合法的應用程序,你就應該不去管它們。 如果找到了一個值得懷疑的rootkit文件,那麼你就需要用一個合法的文件來替換它。如果你的Linux使用RPM,那麼就要用rpm -q -f {file}來尋找替換受害文件的程序包。使用RPM的時候,替換受害文件的最佳方法是重新安裝整個程序包,所以你需要安裝光盤或者是同一Linux版本的程序文件。 但是在你能夠替換程序包之前,你必須對標記為不可更改的受害文件“解鎖”。在Linux上,chattr –I命令用於解鎖,這樣你就能夠刪除或者替換它們。(關於這些命令的更多信息請參看lsattr和chattr的使用手冊。)在給受害文件解鎖之後,你可以使用rpm -Uvh {package}命令來重新安裝程序包,這就會替換掉受害文件。 替換掉受害文件並不意味著你就解決了這一問題,但是如果你需要盡快讓系統恢復運行,這就是一種方法。有的時候,讓機器盡快恢復運行要比了解入侵者如何攻破受害機器更為重要。但是這種調查工作肯定應該是你的下一步目標,否則很有可能又會有人再次攻破你的機器。