上一次,我告诉了你如何发现是否有入侵者在你的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}命令来重新安装程序包,这就会替换掉受害文件。
替换掉受害文件并不意味着你就解决了这一问题,但是如果你需要尽快让系统恢复运行,这就是一种方法。有的时候,让机器尽快恢复运行要比了解入侵者如何攻破受害机器更为重要。但是这种调查工作肯定应该是你的下一步目标,否则很有可能又会有人再次攻破你的机器。