有些事情对我们系统管理员来说至少发生过一次,就是你感觉到你的系统好像不对劲,开始怀疑有人已经突破了你的防御。确定此事是否发生的途径之一就是检查系统文件有没有变化,你需要安装TripWire或者其他审计工具来帮忙。
幸运的是,RedHat的程序员们开发了一个工具,叫作RedHatPackageManager,简称为RPM。在RedHat的Linux系统中是默认存在的。
RPM能为我做些什么?
RPM是一个强大的工具,用来安装、升级和校验RedHat系统上的软件包。它的校验功能可以用来确认文件是否被修改或覆盖,这正是本文所要讨论的。除了文件的大小和时间戳,RPM还能检查文件的信息文摘或MD5签名。
在RFC1321中有MD5的详细描述。简单的说,MD5根据文件的内容用算法产生一个唯一的128位签名,用任何方法改变文件都会导致签名改变。尽管人们一直在讨论修改文件后能保持签名不变的理论可能性,但截止到目前还没有人能够做到。所以在文件使用前后各作一次MD5检查,能够99.9999%的保证文件没有改变。
如何使用RPM来检查文件?
有一些RPM的参数你需要注意。第一个是“-V”,它检查与某一RPM包相关所有文件的完整性。语法为:
rpm-Vpackage_name_to_verify
比如系统上运行了sendmail,通过以下命令检查所有相关文件的完整性:
rpm-Vsendmail
输出看来是这样的:
[root@fubar/root]#rpm-Vsendmail
S.5....Tc/etc/aliases
missing/etc/mail/ip_allow
S.5....Tc