分类: LINUX
2011-03-16 01:03:45
在许多可以应用于Ubuntu安全的方法中,有一种被称作文件完整性监视(文件完整性检验)。 对关键的系统二进制文件和配置文件进行完整性监视和校验的目的是确保这些关键文件没有被进行未授权的改变。对系统特定文件的未授权改变是对系统进行攻击和 危害活动的表现之一。文件完整性监视是一种积极的方法,可以使你及时了解到系统重要文件的改变。同大多数的工具一样,在GNU/Linux社区中,有许多 不同的应用程序可用于对你的Ubuntu系统文件的完整性进行监视和校验。
这篇指南会涉及到其中一些工具在Ubuntu系统上的安装、配置和使用。
虽然严格来说,有许多方法可用于监视和校验GNU/Linux系统关键文件的完整性,但是这份指南只对名为"高级入侵检测环境"的工具进行介绍。
不过,其它可用于监视和校验文件完整性的工具,会在本文的“相关资源”一节中列出。浏览和使用这些工具是一种练习,读者可以自己去实践。
AIDE
“高级入侵检测环境”(AIDE)是一个自由,是流行的文件完整性校验工具Tripwire的替代品。它通过读取配置文件中的一系列正则表达式来建立一个数据库,当数据库初始化后,就可以用来对关键系统文件和一些用户自定义文件的完整性进行校验了。
AIDE 使用许多流行的信息摘要算法(md5、sha1、rmd160、tiger、haval等)来检查文件的完整性。额外的算法也很容易被添加进去。所有传统文件系统属性的一致性也会被检查。
Installing AIDE
在终端模式下进行安装之前,请确认您的网络连接良好,然后请在终端中输入以下命令:
sudo apt-get install aide
根据系统提示输入您的密码,如果ubuntu验证通过,AIDE安装包将会被下载并自动开始安装。 在安装过程中,一个配置信息窗口会出现,提示你每天的报告会默认发送给root用户,但是你可以通过编辑配置文件 /etc/default/aide来进行修改。请按下回车键来确认这则消息。
然后系统会询问你是否现在进行AIDE数据库的初始化。现在,请输入Yes,并按下回车键。下一个对话框会询问你是否要覆盖已存在的数据库。如果这是你第一次安装AIDE,请选择Yes并按回车键。
Configuring AIDE
AIDE有两个主要的配置文件。
/etc/default/aide | The AIDE general configuration file(AIDE的一般属性配置文档) |
/etc/aide/aide.conf | The AIDE rules configuration file(AIDE检查规则配置文件) |
一些AIDE属性和行为可以通过编辑配置文件/etc/default/aide来进行修改。例如:如果你想把AIDE每天产生的报告都发送至breandon用户而不是默认的root用户,只须使用你喜欢的文本编辑器简单的对下面这行进行修改。
MAILTO=root
这一行显示出你选择的用户(在这个例子中是breandon):
MAILTO=breandon
阅读/etc/default/aide的注释来看一看其他配置项用来控制什么,然后就可以根据你的需求进行修改。另一个配置文件/etc/aide/aide.conf用来控制目录、文件和文件属性的检查规则,在扫描的时候AIDE根据这些规则来判断文件是否被更改。
例如,在默认的/etc/aide/aide.conf中,对于所有属于组BinLib的目录、文件,AIDE要检查它们的访问权限 (permissions)、节点(inode)、被链接数(number of links)、所属用户(user)、所属组(group)、大小(size)、块数目(block count)、修改时间(mtime)、建立时间(ctime)、md5校验值(md5 checksum)、sha1校验值(sha1 checksum)是否改变(p+i+n+u+g+s+b+m+c+md5+sha1),而对于所有属于组Databases的目录和文件,AIDE只检 查它们的访问权限、被链接数、所属用户、所属组是否改变(p+n+u+g)。
每行可以定义一个属于特定组的目录,其格式如下:
directory Group definition
例如,要把目录/opt/local/bin加入到BinLib组的定义中,只要在/etc/aide/aide.conf中合适的章节添加如下的行:
/opt/local/bin BinLib
另一个善于使用AIDE的例子是用它监视系统任务计划文件(crontabs)。系统任务计划文件定义计划好的通过cron daemon执行的任务。为了确保这些文件不会被自动的、按计划执行的恶意程序所修改,只需简单的使用sudo命令,用你喜欢的编辑器编辑/etc /aide/aide.conf,找到下面这行:
# Check crontabs
将Check crontabs块下所有以/var/spool开头的行的注释取消掉,然后存盘。为了进一步的应用AIDE,您应当仔细的阅读/etc/aide /aide.conf(尤其是那些被注释掉的块)和aide.conf的手册,您也可以阅读AIDE手册的HTML版本来进一步的了解这个配置文档的使用 方法。
如果您希望对配置文件的修改马上生效,请在终端下执行下面的命令来更新AIDE的配置:
sudo update-aide.conf
如果您不这样做,AIDE每天会自动进行这项工作,所以如果您作了修改,不需要马上手动执行上述的命令。你可以放心,通过使用crontab,配置会在AIDE每天运行前被自动的更新。
Using AIDE
要使用AIDE,您必须确认数据库存在:
ls /var/lib/aide
如果在ls命令的输出中可以看到aide.db,那么可以进行初始化的工作了,反之,如果您看到了aide.db.new你就必须使用下面的命令把aide.db.new重命名为aide.db:
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
AIDE数据库准备好后,您就可以对数据库进行初始化了,请在终端中输入下面的命令:
sudo aide --init
在初始化完成后,您应当可以看到下面这行:
### AIDE database initialized
您可以开始检查/etc/aide/aide.conf中定义的目录和文件,请在终端中输入下面的命令:
sudo aide --check
如果所有目录都是正常的,并且所有文件都在监视中,在检查结束后,您可以看到下面的提示:
### All files match AIDE database. Looks okay!
AIDE可以通过/etc/cron.daily/aide每天启动。AIDE的输出会发送给特定的用户,这个用户可以在/etc/default/aide文件中的“MAILTO=”处进行定义,就像前面描述的一样。
关于AIDE、文件完整性监视和校验的一些资源可见下表:
本地资源
man aide | System manual page for the aide command(aide命令的手册) |
man aide.conf | System manual page for the aide.conf configuration file(aide.conf的手册) |
man aideinit | System manual page for the aideinit command(aideinit命令的手册) |
man update-aide.conf | System manual page for the update-aide.conf command(update-aide.conf的手册) |
/usr/share/doc/aide/manual.html | The AIDE manual in HTML format(AIDE手册的网页版本) |
/etc/default/aide | The AIDE general configuration file(AIDE的一般属性配置文件) |
/etc/aide/aide.conf | The AIDE rules configuration file(AIDE检查规则配置文件) |
/etc/cron.daily/aide | Daily AIDE cron scripts(AIDE的计划任务脚本) |
其他文件完整性监视和校验工具
* BSign : Corruption and Intrusion Detection using embedded hashes
*Integrit : Small footprint, unattended monitoring of file integrity with cascading rulesets Integrit Website ()
*Samhain : Standalone, or Client-Server file integrity monitoring solution Samhain Website ()
*Systraq : Monitors, and alerts on file changes Systraq Website ()