发布时间:2018-01-19 来源:网络 上传者:用户html
发表文章全部系统管理员想要在他们生产服务器上首先要部署的安全手段之一,就是检测文件篡改的机制——不只仅是文件内容,并且也包括它们的属性。正则表达式
AIDE (“高级入侵检测环境”的简称)是一个开源的基于主机的入侵检测系统。AIDE经过检查大量文件属性的不一致性来检查系统二进制文件和基本配置文件的完整性,这些文件属性包括权限、文件类型、索引节点、连接数、连接名、用户、组、文件大小、块计数、修改时间、添加时间、建立时间、acl、SELinux安全上下文、xattrs,以及md5/sha校验值在内的各类特征。数据库
AIDE经过扫描一台(未被篡改)的Linux服务器的文件系统来构建文件属性数据库,之后将服务器文件属性与数据库中的进行校对,而后在服务器运行时对被修改的索引了的文件发出警告。出于这个缘由,AIDE必须在系统更新后或其配置文件进行合法修改后从新对受保护的文件作索引。centos
对于某些客户,他们可能会根据他们的安全策略在他们的服务器上强制安装某种入侵检测系统。可是,无论客户是否要求,系统管理员都应该部署一个入侵检测系统,这一般是一个很好的作法。安全
在 CentOS或RHEL 上安装AIDEAIDE的初始安装(同时是首次运行)最好是在系统刚安装完后,而且没有任何服务暴露在互联网甚至局域网时。在这个早期阶段,咱们能够未来自外部的一切闯入和破坏风险降到最低限度。事实上,这也是确保系统在AIDE构建其初始数据库时保持干净的惟一途径。(LCTT 译注:固然,若是你的安装源自己就存在安全隐患,则没法创建可信的数据记录)服务器
出于上面的缘由,在安装完系统后,咱们能够执行下面的命令安装AIDE:网络
# yum install aide咱们须要将咱们的机器从网络断开,并实施下面所述的一些基本配置任务。app
配置AIDE默认配置文件是/etc/aide.conf,该文件介绍了几个示例保护规则(如FIPSR,NORMAL,DIR,DATAONLY),各个规则后面跟着一个等号以及要检查的文件属性列表,或者某些预约义的规则(由+分隔)。你也可使用此种格式自定义规则。ide
例如,上面的例子说明,NORMAL规则将检查下列属性的不一致性:权限(p)、索引节点(i)、连接数(n)、用户(u)、组(g)、大小(s)、修改时间(m)、建立时间(c)、ACL(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中的任何位置便可。
aliyunzixun@xxx.com 首次运行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 --update要使用AIDE保护生产系统,可能最好经过任务计划调用AIDE来周期性检查不一致性。例如,要让AIDE天天运行一次,并将结果发送到邮箱:
# crontab -e0 0 * * * /usr/sbin/aide --check | /usr/bin/mail -s "AIDE run for $HOSTNAME" aliyunzixun@xxx.com 测试AIDE检查文件篡改下面的测试环境将演示AIDE是如何来检查文件的完整性的。
让咱们添加一个新文件(如/etc/fake)。
# cat /dev/null > /etc/fake让咱们修改文件权限,而后看看它是否被检测到。
# chmod 644 /etc/aide.conf最后,让咱们修改文件内容(如,添加一个注释行到/etc/aide.conf)。
echo "#This is a comment" >> /etc/aide.conf上面的截图中,第一栏显示了文件的属性,第二栏是AIDE数据库中的值,而第三栏是更新后的值。第三栏中空白部分表示该属性没有改动(如本例中的ACL)。
结尾若是是合法的修改,那么也会被检测出有问题。此时就须要更新数据了。
[root@A app]# aide -c /etc/aide.conf --update #更新数据库
若是你曾经发现你本身有很好的理由确信系统被入侵了,可是第一眼又不能肯定到底哪些东西被改动了,那么像AIDE这样一个基于主机的入侵检测系统就会颇有帮助了,由于它能够帮助你很快识别出哪些东西被改动过,而不是经过猜想来浪费宝贵的时间。
via: http://xmodulo.com/host-intrusion-detection-system-centos.html
做者:Gabriel Cánepa 译者:GOLinux 校对:wxy
本文由 LCTT 原创翻译,Linux中国 荣誉推出
原文: http://xmodulo.com/host-intrusion-detection-system-centos.html 做者: Gabriel Cánepa
译文: LCTT http://linux.cn/article-4242-1.html 译者: GOLinux