用RPM校验文件

用RPM校验文件
2011年09月01日
  有些事情对我们系统管理员来说至少发生过一次,就是你感觉到你的系统好像不对劲
  ,开始怀疑有人已经突破了你的防御。确定此事是否发生的途径之一就是检查系统文
  件有没有变化,你需要安装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
  输出看来是这样的:
  #rpm-Vsendmail
  S.5....Tc/etc/aliases
  missing/etc/mail/ip_allow
  S.5....Tc/etc/mail/relay_allow
  S.5....Tc/etc/sendmail.cf
  S.5....Tc/etc/sendmail.cw
  S.5....T/usr/sbin/sendmail
  S.5....T/var/log/sendmail.st
  #
  只有校验失败的文件才被列出,没有列出的文件应该是完好无损的。左边给出了为什
  么校验失败的原因,具体解释如下:
  S=大小改变
  M=权限改变
  5=MD5改变
  L=连接改变
  D=设备改变
  U=用户改变
  G=组改变
  T=日期和时间改变
  missing=文件丢失
  从上面的输出可见,文件aliases,relay_allow,sendmail.cf和sendmail.cw的大
  小、时间日期和MD5发生了改变。由于它们是配置文件,应该没什么关系。但是/usr/
  bin/sendmail的改变就要引起注意了,它是一个监听在25端口的可执行文件,用来接
  受信件。除非你升级了sendmail,否则它不应该校验失败,很明显有人修改或者覆盖
  了原来的sendmail文件,可能带有木马或者后门。
  输出还显示ip_allow文件被删除或者被改名。这是用来检查和控制SPAM的一个文件,
  它的丢失某种程度上表明相关的二进制文件可能被修改。
  当观察RPM输出的时候,在检查日期时间和文件大小的同时,要特别注意MD5是否变化,入侵者经常修改或覆盖某些文件来隐藏他们的踪迹。
  挨个检查软件包很费时间,用“-a”选项可以一次性检查所有RPM包:
  rpm-Va>/root/rpm_chk.txt&
  这条命令让RPM检查服务器上安装的RPM包,结果输出到rpm_chk.txt文件,最后的可选项“&”表示命令在后台运行,给出shell提示符可以作其他事情。
  最后一个技巧,当你想要检查某个文件而不知道它属于哪个RPM包,可以用“-qf”选
  项查看哪个软件包安装了此文件:
  #rpm-qf/usr/sbin/sendmail
  sendmail-8.8.7-20
  #
  这表明此sendmail文件是sendmail-8.8.7-20RPM包的一部分。如果一个文件没有关联
  的RPM包,输出大概是这样的:
  #rpm-qf/sbin/.vile_stuff
  file/sbin/.vile_stuffisnotownedbyanypackage
  #
  小心你系统上运行的不能被校验的程序!
  如何开始?
  首先,你必须有root权限来运行RPM。当以普通用户身份来运行RPM校验时,它的输出信息是不正确的,因为普通用户对某些文件可能都没有read权限。这意味着只有root才能检查整个系统文件的完整性。
  RPM二进制文件在/bin目录下,它的数据库文件在/var/lib/rpm下。
  最安全的方法是在服务器连到Internet之前,把这些数据文件和RPM二进制文件保存到
  软盘或CD上,这能够保证你的工具自身是安全的。
  第一件事是检查/var/lib/rpm,这些数据文件的日期和时间应该和安装系统当时的情
  况一样,如果你发现日期不对,就要小心了。
  其次,我们可以使用RPM来校验自身的完整性:
  #rpm-Vrpm
  #
  没有输出表示RPM应该没有什么问题。但这不是绝对的,因为二进制文件如果本身可疑就很难说。所以要尽可能使用CD上的工具,如果你没有比较安全的工具,用RPM校验自身在一般情况下也足够了。
  现在我们知道RPM自身没有问题了,对整个系统作个检查:
  rpm-Va>/root/rpm_chk.txt&
  一个简单的技巧就是定期检查整个系统,然后比较不同时期的rpm_chk.txt,从而发现
  哪些不正常的文件改动。
  总结
  尽管RPM不是专门设计用来审计文件的,但它可以帮你不少忙。目前RedHatLinux各
  个版本中都默认自带RPM,这意味着你完成RedHatLinux安装以后,就可以使用RPM了,同时MD5提供了一种高精确度的文件校验方法。唯一注意的是要保证RPM自身和它所有数据文件的完整性,以防止入侵者修改它们来隐藏踪迹。
  安装 rpm时安装其依赖的rpm包:
  #rpm -Uvh --aid rpmname
  不过很遗憾
  warning: alsa-lib-devel-1.0.6-5.RHEL4.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
  error: open of /var/spool/up2datepkgconfig-0.15.0-3.i386.rpm failed: No such file or directory
  error: Failed dependencies:
  pkgconfig is needed by alsa-lib-devel-1.0.6-5.RHEL4.i386
  这就说明附属的依赖包要放在 /var/spool/文件夹下
  
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值