系统一旦安装和配置,除非安全更新,通常没有理由改变大部分文件和目录,数据除外。因此,要注意确保文件没有改变:任何非预期的变化都值得探究。本节介绍几个可以在非预期变化发生时监视文件并警告管理员(或者只列出变化)的工具。
14.3.3.1. 审核软件包:debsums
及其限制
debsums
是一个很有趣的工具,它能找出哪些安装文件被(潜在攻击者)修改了,但是应该有所保留。首先,并非所有的 Debian 软件包都提供了该程序需要的指纹信息(可以在
/var/lib/dpkg/info/package.md5sums
文件中找到,如果该文件存在)。
提示:指纹是一个数值,通常是数字(甚至是十六进制),包含文件内容的签名。该签名使用某种算法(众所周知的是 MD5 或 SHA1)在某种程度上能确保文件内容微小的变化也能反映在指纹上;称为“雪崩效应”。这样就可以将数字指纹作为试金石来检测文件的内容是否被改变。这些算法是不可逆的;换句话说,它们中的大多数,知道指纹并不能得出相应的内容。近期的数学研究似乎削弱了这些原则的绝对性,但是到目前为止,还不能称之为问题,因为创建指纹相同而内容不同的文件是一个相当艰巨的任务。
另外,md5sums
文件存储在硬盘上;攻击者会更新这些文件以包含被篡改文件的检核和。
第一个缺点可以通过设定 debsums
基于 .deb
软件包检测,而非依赖 md5sums
文件。但是,这样首先需要下载相应的 .deb
:
#
apt-get --reinstall -d install `debsums -l`
[ ... ]
#
debsums -p /var/cache/apt/archives -g
同样值得注意的是,在默认配置中,如果使用 APT 安装软件包,debsums
将自动产生缺失的 md5sums
文件。
其他问题可以通过类似方法避免:检查必须基于素 .deb
文件。这意味着所有已安装的软件包都要有 .deb
文件,并确保它们的完整性,最简单的方法就是从 Debian 镜像抓取。这一过程是缓慢而冗长的,因此不应作为定期使用的主动技术。
#
apt-get --reinstall -d install `grep-status -e 'Status: install ok installed' -n -s Package`
[ ... ]
#
debsums -p /var/cache/apt/archives --generate=all
注意本例使用 dctrl-tools 软件包中的 grep-status
命令,该命令默认情况下没有安装。
AIDE(Advanced Intrusion Detection Environment )工具可以检查文件完整性,侦测系统之前文件镜像的任何变化。这种影响以数据库(/var/lib/aide/aide.db
)形式储存,包含了系统上所有文件的相关信息(指纹,权限,时间戳,等等)。该数据库使用 aideinit
命令初始化;然后每天(通过 /etc/cron.daily/aide
脚本)检查有无任何相关改变。如果探测到变化,AIDE 会将其记入文件(/var/log/aide/*.log
)并将发现通过邮件发送给管理员。
/etc/default/aide
中的很多选项可以用于调整 aide 软件包行为。AIDE 配置存储在 /etc/aide/aide.conf
和 /etc/aide/aide.conf.d/
(实际上,这些文件只用于 update-aide.conf
生成 /var/lib/aide/aide.conf.autogenerated
)。配置指明哪些文件的哪些特性需要检查。譬如,日志文件的内容会有常规更新,只要这些文件的读写权限保持不变,那么就可以忽略这些变化。但是,可执行程序的内容和权限必须是不变的。虽然不是很复杂,但是配置的语法不是很直观,推荐阅读 aide.conf(5) 手册。
新版本的数据库每天生成在 /var/lib/aide/aide.db.new
;如果所有记录的变化都是合法的,就可以用它替代参考数据库。