Linux如何基于AIDE检测文件系统完整性
作者:小雨淅淅o0 时间:2023-11-03 18:14:23
一、AIDE
AIDE(Advanced Intrusion Detection Environment)是一款针对文件和目录进行完整性对比检查的程序,它被开发成Tripwire的一个替代品。
AIDE如何工作
AIDE通过构造指定文件的完整性样本库(快照),作为比对标准,当这些文件发生改动时,其对应的校验值也必然随之变化,AIDE可以识别这些变化从而提醒管理员。AIDE监控的属性变化主要包括:权限、属主、属组、文件大小、创建时间、最后修改时间、最后访问时间、增加的大小以及链接数,并能够使用SHA1、MD5等算法为每个文件生成校验码。
这款工具年纪也不小了,相对来同类工具Tripwire说,它的操作也更加简单。它需要对系统做快照,记录下HASH值,修改时间,以及管理员对文件做的预处理。这个快照可以让管理员建立一个数据库,然后存储到外部设备进行保管。
当管理员想要对系统进行一个完整性检测时,管理员会将之前构建的数据库放置一个当前系统可访问的区域,然后用AIDE将当前系统的状态和数据库进行对比,最后将检测到的当前系统的变更情况报告给管理员。另外,AIDE可以配置为定时运行,利用cron等日程调度技术,每日对系统进行检测报告。
这个系统主要用于运维安全检测,AIDE会向管理员报告系统里所有的恶意更迭情况。
AIDE的特性
支持消息摘要算法:md5, sha1, rmd160, tiger, crc32, sha256, sha512, whirlpool
支持文件属性:文件类型,文件权限,索引节点,UID,GID,链接名称,文件大小,块大小,链接数量,Mtime,Ctime,Atime
支持Posix ACL,SELinux,XAttrs,扩展文件系统属性
纯文本的配置文件,精简型的数据库
强大的正则表达式,轻松筛选要监视的文件和目录
支持Gzip数据库压缩
独立二进制静态编译的客户端/服务器监控配置装
[root@centos7 ~]$yuminstall-y aide
安装AIDE
下载:http://sourceforge.net/projects/aide
yum install aide
vi /etc/aide.conf
database=file:@@{DBDIR}/aide.db.gz #系统镜像库位置
database_out=file:@@{DBDIR}/aide.db.new.gz #新生成系统镜像库,默认在/var/lib/aide/下
# Next decide whatdirectories/files you want in the database.
/boot NORMAL
/bin NORMAL
/sbin NORMAL
/lib NORMAL
/lib64 NORMAL
#/opt NORMAL #注释不检查目录
/usr NORMAL
/root NORMAL
# These are too volatile ,排除掉个别不检查的目录
!/usr/src
!/usr/tmp
#根据需求在下面添加新的检测目录
/etc/exports NORMAL
/etc/fstab NORMAL
/etc/passwd NORMA
配置文件详解#定义了数据库路径的变量与日志路径的变量
@@define DBDIR /var/lib/aide
@@define LOGDIR /var/log/aide
#开启压缩
gzip_dbout=yes
# 将多个权限定义成规则赋给变量,便于后面引用
CONTENT_EX = sha256+ftype+p+u+g+n+acl+selinux+xattrs
CONTENT = sha256+ftype
PERMS = p+u+g+acl+selinux+xattrs
# 采用哪种规则对哪些文件进行监控
/boot/ CONTENT_EX
/bin/ CONTENT_EX
/sbin/ CONTENT_EX
/lib/ CONTENT_EX
/lib64/ CONTENT_EX #采用CONTENT_EX定义的规则进行监测
/opt/ CONTENT #仅对opt目录进行校验码与文件类型监测
/root/\..* PERMS #PERMS并没有hash校验值,因为/root下的数据会经常变化
# 不监控的文件
!/etc/.*~
#p: permissions
#i: inode:
#n: number of links
#u: user
#g: group
#s: size
#b: block count
#m: mtime
#a: atime
#c: ctime
#S: check for growing size
#acl: Access Control Lists
#selinux SELinux security context
#xattrs: Extended file attributes
#md5: md5 checksum
#sha1: sha1 checksum
#sha256: sha256 checksum
#sha512: sha512 checksum
#rmd160: rmd160 checksum
#tiger: tiger checksum
定义规则
编辑配置文件/etc/adie.conf,定义一个规则变量mon,监控/app目录下所有文件,不监控/app/saomiao.log。
[root@centos7 aide]$ vim /etc/aide.conf
mon = p+u+g+sha512+m+a+c
/app mon
!/app/juli.sh
创建数据库
生成数据库文件,在配置文件中定义各文件计算各校验码放入数据库中,用于以后比对。从提示中看出生成了一个/var/lib/aide/aide.db.new.gz数据库文件,这个数据库文件为初始数据库,如果进行入侵检测将与/var/lib/aide/aide.db.gz数据库文件作比对,如果发现两个数据库不一致则提示被入侵。
[root@centos7 aide]$aide --init
AIDE, version 0.15.1
### AIDE database at /var/lib/aide/aide.db.new.gz initialized.
模拟文件被入侵更改
模拟文件被修改 : 向saomiao.sh文件添加换行,促使更改校验码、Mtime、Ctime
[root@centos7 aide]$ echo >> /app/saomiao.sh
检测:AIDE的检测机制是计算出现在的数据库后与aide.db.gz比对。aide.db.gz默认又不存在,所以要将之前的创建的初始化数据库aide.db.new.gz改名为aide.db.gz。
[root@centos7 aide]$mv aide.db.new.gz aide.db.gz
入侵检测
最后使用aide -C注意是大写,将现在计算出的数据与aide.db.new.gz比对,查看数saomiao.sh文件的Mtime、CtimeSHA512被更改过
设置任务计划,定期检测
crontab –e
30 08 * * * /usr/sbin/aide --check--report=file:/tmp/aide-check-` date +%Y%m%d `.txt #每天早上08:30执行一次
也可以将信息发送到邮件:
30 08 * * * /usr/sbin/aide --check| mail –s “AIDE report“ test@163.co
二、RKHunter
RKHunter工具时专门检测系统是否遭受rootkit的一个工具,他通过自动执行一系列的脚本来全面的检测服务器是否感染rootkit。
RKHunter的功能
检测易受攻击的文件;
检测隐藏文件;
检测重要文件的权限;
检测系统端口号;
安装
[root@centos7 aide]$yum install rkhunter
检测
使用命令rkhunker -c对系统进行检测。RKHunter检测会分几部分,第一部分主要检测系统的二进制工具,因为这些工具时rootkit的首要感染目标。每检测完一部分需要Enter来确认继续。
[ ok ] 表示没有异常
[ no found ] 是没有找到此工具,不用理会
[ warning ] 如果是红色的Warnning那就需要进一步确认这些工具是否被感染或者被替换。
设置任务计划,定期检测
crontab –e
30 08 * * * /usr/sbin/aide --check--report=file:/tmp/aide-check-` date +%Y%m%d `.txt #每天早上08:30执行一次
也可以将信息发送到邮件:
30 08 * * * /usr/sbin/aide --check| mail –s “AIDE report“ test@163.co
二、RKHunter
RKHunter工具时专门检测系统是否遭受rootkit的一个工具,他通过自动执行一系列的脚本来全面的检测服务器是否感染rootkit。
RKHunter的功能
检测易受攻击的文件;
检测隐藏文件;
检测重要文件的权限;
检测系统端口号;
安装
[root@centos7 aide]$yum install rkhunter
检测
使用命令rkhunker -c对系统进行检测。RKHunter检测会分几部分,第一部分主要检测系统的二进制工具,因为这些工具时rootkit的首要感染目标。每检测完一部分需要Enter来确认继续。
[ ok ] 表示没有异常
[ no found ] 是没有找到此工具,不用理会
[ warning ] 如果是红色的Warnning那就需要进一步确认这些工具是否被感染或者被替换。
如果想让程序自动检测而不是每检测完一部分就让用户确认,可以使用
rkhunter --check --skip-keypress
同时如果要想达到每周或者每月自动检测就可以将他加入到计划任务中自动执行
crontab -e
1 10 7 * * * root /usr/bin/rkhunter --check --cronjob
来源:https://www.cnblogs.com/xiaoyuxixi/p/12720480.html