vlambda博客
学习文章列表

CentOS 8系统安装配置AIDE主机入侵检测软件并检查文件完整性

一、操作目的和应用场景

(一)目的

CentOS 8系统安装配置aide入侵检测软件,并使用aide软件进行文件完整性检查。

 

(二)简介

1. 作用

AIDE(Advanced Intrusion Detection Environment,高级入qin检测环境),主要用于检测文件的完整性。


2. 原理

AIDE软件为系统文件生成初始的散列值数据库,然后每次执行检查命令时,aide会将之前生成的校验码和当前文件的校验码进行对比,并且输出报告,主要检查三类文件(修改过的,新增加的,删除的)。

AIDE数据库能够保存文件的各种属性,包括:权限(permission)、索引节点序号(inode number)、所属用户(user)、所属用户组(group)、文档大小、最后修改时间(mtime)、创建时间(ctime)、最后访问时间(atime)等。AIDE还能够使用下列算法:sha1、md5、rmd160、tiger,以密文形式建立每个文件的校验码或散列值。

在系统安装完毕,要连接到网络上之前,系统管理员应该建立新系统的AIDE数据库。这第一个AIDE数据库是系统的一个快照和以后系统升级的准绳。数据库应该包含这些信息:关键的系统二进制可执行程序、动态连接库、头文件以及其它总是保持不变的文件。这个数据库不应该保存那些经常变动的文件信息,例如:日志文件、邮件、/proc文件系统、用户起始目录以及临时目录。

一旦发现系统被侵入,系统管理员可能会使用ls、ps、netstat以及who等系统工具对系统进行检查,但是所有这些工具都可能被特洛伊木马程序代替了。可以想象被修改的ls程序将不会显示任何有关入侵的文件信息,ps也不会显示任何入侵进程的信息。即使系统管理员已经把关键的系统文件的日期、大小等信息都打印到了纸上,恐怕也无法通过比较知道它们是否被修改过了,因为文件日期、大小等信息是非常容易改变的,一些比较好的rootkit可以很轻松地对这些信息进行假冒。

虽然文件的日期、大小等信息可能被假冒,但是假冒某个文件的一个散列值就非常困难了,更不要说假冒所有AIDE支持的散列值了。在系统被侵入后,系统管理员只要重新运行AIDE,就能够很快识别出哪些关键文件被攻击者修改过了。

不过,要注意这也不是绝对的,因为AIDE可执行程序的二进制文件本身可能被修改了或者数据库也被修改了。因此,应该把AIDE的数据库放到安全的地方,而且进行检查时要使用保证没有被修改过的程序。

tripwire也是入侵检测软件,但是操作比较复杂,aide可以替代tripwire。


二、操作步骤

(一)安装aide

1、 CentOS 8系统安装aide

yum makecache  //更新软件列表

yum install aide  //在线安装


2、查看aide版本和编译选项

aide -v


 
通过查看AIDE的编译选项可了解当前安装的AIDE所支持的检查功能。
 

(二)使用默认配置进行文件完整性检查

1、 创建新的数据库

aide --init  //生成包含文件系统中所有文件的数据库

CentOS 8系统安装配置AIDE主机入侵检测软件并检查文件完整性

aideinit程序将按照 /etc/aide.conf 文件中 DBDIR 的配置,在下面位置创建新的数据库文件:
/var/lib/aide/aide.db.new.gz

2、  安装新的数据库

cp /var/lib/aide/aide.db.new.gz   /var/lib/aide/aide.db .gz

3、  手动使用 aide检查文件完整性

// 默认会检查文件系统中的全部文件和目录,包括 / proc这样的虚拟目录。
aide -c /etc/aide.conf --check

CentOS 8系统安装配置AIDE主机入侵检测软件并检查文件完整性
 
/proc 这样的目录显然是不需要检查的,因此应指定 aide的 检查范围。

4、  指定 aide 检查范围

// 只检查 /bin目录中所发生的变化
aide -c /etc/aide.conf --limit / bin  --check

CentOS 8系统安装配置AIDE主机入侵检测软件并检查文件完整性
 

(三)使用自定义的配置进行文件完整性检查

1、 创建自定义配置文件

vi /home/user1/aide.conf  // 编辑配置文件,加入下面的内容
# 指定数据库创建的路径
@@define DBDIR /var/lib/aide
@@define LOGDIR /var/log/aide
database=file:@@{DBDIR}/aide.db.gz
database_out=file:@@{DBDIR}/aide.db.new.gz
 
# 设置自定义的AIDE规则
MYRULE = p+n+u+g+s+m+c+xattrs+md5+sha512
 
# 指定被监视和并应用规则的目录/文件
/etc MYRULE
/bin MYRULE
/usr/bin MYRULE
 
# 指定排除哪些目录
!/home
!/proc
!/run
!/tmp
保存退出
 
说明:
MYRULE = p+n+u+g+s+m+c+xattrs+md5+sha512的含义为:
p ermissions, n umber of links, u ser, g roup, m odification time, inode/file c hange time, e x tended file attr ibutes, MD5  checksum, SHA512  checksum.

2、  检查配置文件的合法性

aide -c /home/ user1 /aide.conf --config-check

CentOS 8系统安装配置AIDE主机入侵检测软件并检查文件完整性

未返回错误信息,说明配置文件 合法

3、  使用自定义配置文件生成新的数据库

aide --init  -c /home/user1/aide.conf

CentOS 8系统安装配置AIDE主机入侵检测软件并检查文件完整性

4、  安装数据库

cp /var/lib/aide/aide.db.new.gz   /var/lib/aide/aide.db .gz

CentOS 8系统安装配置AIDE主机入侵检测软件并检查文件完整性

5、  使用自定义配置检查文件完整性

aide -c /home/user1/aide.conf --check


由于在被监视的目录中没有变化,所以检查结果显示文件系统和数据库之间没有差异。
 
使用下面的命令对文件系统进行操作:
touch /bin/aide_test   //在被监视目录中创建文件
touch /etc   //修改 /etc 目录的时间
touch /home/aide_test1  // 在被排除的目录中创建文件
touch /usr/share/aide_test2  // 在被监视和被排除的路径之外的目录中创建文件
 
aide -c /home/user1/aide.conf --check   //再次进行完整性检查


检测到在被监视路径中出现的新文件,以及目录的 modify和change 时间的变化。
以上说明 aide可以使用自定义配置正常进行检测。
 

(四)自动化检查文件完整性

crontab -e -u root   //编辑crontab,创建计划任务
0 0 * * * aide -c /home/user1/aide.conf --check
保存退出。
这样,每个午夜的 12点整都会自动进行文件的完整性检查。
 

三、参考网址

https://kifarunix.com/install-and-configure-aide-on-ubuntu-18-04/