任何系统管理员都希望在其生产服务器上部署的首要安全措施之一是检测文件篡改的机制——犯罪分子篡改的不仅仅是文件内容和文件属性。AIDE(全称“AdvancedIntrusionDetectionEnvironment”)是一个基于主机的开源入侵检测系统。AIDE通过检查许多文件属性的不一致性来检查系统二进制文件和基本配置文件的完整性,包括权限、文件类型、索引节点(inode)、链接数、链接名、用户、用户组、文件大小、块计数、修改时间、访问时间、创建时间、访问控制列表(acl)、SELinux安全上下文、xattrs和md5/sha校验和。AIDE通过扫描(未篡改的)Linux服务器的文件系统来构建文件属性数据库。然后它根据该数据库检查服务器的文件属性,如果在服务器运行时索引文件有任何更改,则发出警报。正是出于这个原因,每当出于合法原因更新系统或更改配置文件时,AIDE必须重新索引受保护的文件。对于某些客户,他们的安全策略可能需要在服务器上安装某种入侵检测系统(IDS)。但无论客户是否需要IDS,系统管理员部署IDS都是一个很好的做法。在CENTOS或RHEL上安装AIDEAIDEAIDEAIDE的初始安装(和首次运行)最好在新安装的系统上完成,没有服务暴露在Internet上,甚至没有暴露在LAN上。在这个早期阶段,我们可以将任何来自外部的闯入和篡改的风险降到最低。事实上,这是在AIDE建立其初始数据库时确保系统干净的唯一方法。出于这个原因,在使用#yuminstallaide命令安装AIDE之后,我们需要断开我们的机器与网络的连接并执行一些基本的配置任务,如下所述。配置AIDE默认配置文件位于/etc/aide.conf。该文件提供了多个示例保护规则(例如FIPSR、NORMAL、DIR和DATAONLY),每个规则后跟一个等号和要检查的文件属性列表,或任何预定义规则(以+分隔)。您还可以使用此格式定义任何自定义规则。FIPSR=p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256NORMAL=FIPSR+sha512例如,上面的例子意味着NORMAL规则将检查以下属性的不一致性:权限(p)、inode(i)、链接数(n)、用户(u)、用户组(g)、大小(s)、修改时间(m)、创建时间(c)、访问控制列表(acl))、SELinux(selinux)、xattrs(xattr)和SHA256/SHA512校验和(sha256和sha512)。定义的规则可以灵活用于不同的目录和文件(用正则表达式表示)。条目前面的感叹号(!)告诉AIDE忽略子目录(或目录中的文件),可以为子目录定义另一条规则。在上面的示例中,PERMS是/etc及其子目录和文件的默认规则。但是,没有规则适用于/etc中的备份文件(即/etc/.*~),也没有规则适用于/etc/mtab文件。对于/etc中的某些选择性子目录或文件,应用NORMAL规则而不是默认规则PERMS。定义正确的规则并将它们应用到系统中的正确位置是使用AIDE最困难的部分,但使用良好的判断力是一个好的开始。一条经验是,不要检查不必要的属性。例如,检查/var/log或/var/spool中文件的修改时间必然会导致大量误报,因为有许多应用程序和守护进程会定期写入这些位置。此外,检查多个校验和可能会提高安全性,但会增加AIDE运行时间。此外,如果您使用MAILTO变量指定电子邮件地址,则检查结果可以发送到您的邮箱。将以下行放在/etc/aide.conf中的任意位置。MAILTO=root@localhost首次运行AIDE执行以下命令初始化AIDE数据库:#aide--init/etc/aide.conf生成的/var/lib/aide/aide.db.new.gz文件需要重命名为/var/lib/aide/aide.db.gz以便AIDE可以读取它:#mv/var/lib/aide/aide.db.new.gz/var/lib/aide.db.gz现在,是时候对数据库执行我们的第一次系统检查了。为此,只需运行:#aide当不带任何选项调用时,AIDE假定--check。如果自数据库创建以来没有进行任何更改,AIDE将在完成检查后返回OK消息。在生产环境中管理AIDE在构建初始AIDE数据库之后,作为日常系统管理活动的一部分,您通常需要出于各种合法原因更新受保护的服务器。每次更新服务器时,您都必须重建AIDE数据库以将更改添加到数据库中。为此,请使用以下命令:#aide--update为了使用AIDE保护生产系统,最好安排一个cron任务以定期检查AIDE是否存在任何不一致。例如,安排AIDE每天运行一次并将结果发送到电子邮件地址:#crontab-e00***/usr/sbin/aide--check|/usr/bin/mail-s"AIDErunfor$HOSTNAME"your@email.com测试AIDE检查文件篡改的能力以下测试场景演示了AIDE如何检查文件完整性。测试场景1我们不妨添加一个新文件(比如/etc/fake)。#cat/dev/null>/etc/fake测试场景2我们不妨更改一下文件权限,看看能不能检测到。#chmod644/etc/aide.conf测试场景3最后,我们不妨更改一下文件的内容(比如给/etc/aide.conf添加注释行)。echo"#Thisisacomment">>/etc/aide.conf上面截图中,第一列显示文件属性,第二列显示AIDE数据库中的值,第三列显示值对于那些属性更新后的值。第三列中的空白部分表示属性未更改(本例中为ACL)。结论如果您真的发现自己处于一种情况,您有充分的理由认为您的系统已被篡改,但您无法第一眼判断可能发生了什么变化,则可以使用像AIDE这样的基于主机的入侵检测系统很大的帮助。帮助,因为它可以帮助您尽快弄清楚发生了什么变化,而不是猜测和浪费宝贵的时间。原文地址:http://xmodulo.com/host-intrusion-detection-system-centos.html
