AIDE(Advanced Intrusion Detection Environment) 通过校验文件和目录的完整性来检测系统是否被入侵。
它有如下特性:
- 支持多种指纹算法: md5, sha1, rmd160, tiger, crc32, sha256, sha512, whirlpool等
- 支持检查各种属性: 文件类型, Inode, Uid, Gid, 权限, 链接名, 文件大小, Mtime, Ctime, Atime等.
- 支持 SELinux, XAttrs, Posix ACL 以及扩展文件系统属性.
- 支持通过正则表达式匹配要校验或者不要校验的文件和目录
- 支持邮件通知
sudo pacman -S aide --noconfirm
通过 --version
选项可以查看AIDE的版本、启用的特性以及配置文件路径
aide --version 2>&1
从中可以看到,我这里的AIDE版本为 0.16.2
配置文件为 /etc/aide.conf
其实 /etc/aide.conf
中的语法挺好猜的,下面是安装好AIDE后的默认配置:
cat /etc/aide.conf
基本上你可以看到下面几类语法:
- #开头的语句
- 很明显是注释
- @@define 常量 值
- 定义常量
- @@{常量}
- 引用常量的值
- 参数=值
- 设置参数值,这些参数都是AIDE预设参数,有特殊的意义
- 规则 = 值
- 定义检查规则,AIDE默认定义了一些基础规则,可以通过+号把规则累加起来
- 文件或目录路径 规则
- 设置指定文件或目录要做哪些检查
- !文件或目录路径
- !开头的路径表示剔除这些文件和目录,而且支持通配符
因此,假如我想把 /usr/bin
纳入检查,但是因为我经常会安装/删除应用,所以其中的文件可能会有新增和删除,那么我们可以这么设置:
- 定义一个新的检查规则
EASYDIR = DIR+ANF+ARF
- 增加一个检查项
/usr/bin EASYDIR
sudo aide --init
注意到生成的数据库路径为 /var/lib/aide/aide.db.new.gz
,跟配置文件中 database_out
的参数一致
# The location of the database to be written. database_out=file:@@{DBDIR}/aide.db.new.gz
不过配置文件中配置使用的指纹数据库是
# The location of the database to be read. database=file:@@{DBDIR}/aide.db.gz
所以我们还需要重命名一下这个新生成的指纹数据库
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
现在我们来试试在 /usr/bin
目录中增加一个文件 a
sudo touch /usr/bin/a
来检查一下
sudo aide --check
你会发现,并没有提示异常,这是因为我们允许对 /usr/bin
目录增加或删除文件。
现在我们来试试在 /bin
目录中增加一个文件 a
sudo touch /bin/b
再来检查一下
sudo aide --check
过了一段时间我们对系统进行操作后需要重新更新指纹库:
sudo aide --update
更新的指纹库还是 /var/lib/aide/aide.db.new.gz
,所以我们还需要再重新移动一次:
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz