Linux入侵检测AIDE-检查文件的完整性
一、背景
我们经常会遇到有些木马会替换常用的系统命令进行伪装,即使我们清理了木马,执行ps、netstat等系统命令时又启动了木马进程。那么我们如何判断哪些文件或命令被木马程序替换了呢?让我们接下来一起探讨以下~
二、AIDE 入侵检测
【注】由于AIDE依赖于基准库,所以需要主机提前部署,如果被入侵后,再部署就起不到检测作用。
AIDE 又称“高级入侵检测环境”,主要用途是检查文档的完整性。通过构建一个基准的数据库,保存文档的各种属性,一旦系统被入侵,可以通过对比基准数据库而获取文件变更记录。
2.1 AIDE安装配置
(1)yum安装AIDE
[root@server ~]# yum install aide -y
(2)修改AIDE配置文件,定义监控文件/文件夹
第一部分:屏蔽默认监控规则
[root@server ~]# vim /etc/aide.conf # 配置文件默认已经定义了很多默认规则,我们可以把默认规则屏蔽掉 …… 99 #/boot/ CONTENT_EX 100 #/bin/ CONTENT_EX 101 #/sbin/ CONTENT_EX 102 #/lib/ CONTENT_EX 103 #/lib64/ CONTENT_EX 104 #/opt/ CONTENT …… 注:操作方法,光标放到99行,vim非编辑模式下,底部输入":,$s/^/#/g" 即,逗号代表当前行、$代表最后一行、s/^/#/g代表将行首替换成#号。综合解读为:将当前行到最后一行的行首都替换成#号。
第二部分:看懂监控参数和默认定义组的使用
# Example configuration file for AIDE. @@define DBDIR /var/lib/aide #定义参数1 @@define LOGDIR /var/log/aide #定义参数2 # The location of the database to be read. database=file:@@{DBDIR}/aide.db.gz #调用定义参数1 # The location of the database to be written. #database_out=sql:host:port:database:login_name:passwd:table #database_out=file:aide.db.new database_out=file:@@{DBDIR}/aide.db.new.gz #调用定义参数1 # Whether to gzip the output to database. gzip_dbout=yes # Default. verbose=5 report_url=file:@@{LOGDIR}/aide.log #调用定义参数2 report_url=stdout #report_url=stderr #NOT IMPLEMENTED report_url=mailto:root@foo.com #NOT IMPLEMENTED report_url=syslog:LOG_AUTH # These are the default rules. # 默认参数代表的含义或者说是监控项 # #p: permissions 监控权限变化 #i: inode: 监控inode变化 #n: number of links #u: user 监控user变化 #g: group 监控user组变化 #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 #haval: haval checksum (MHASH only) #gost: gost checksum (MHASH only) #crc32: crc32 checksum (MHASH only) #whirlpool: whirlpool checksum (MHASH only) FIPSR = p+i+n+u+g+s+m+c+acl+selinux+xattrs+sha256 #默认定义好的规则组,使用该组,AIDE就会监控该组内的所有监控项,下同 #R: p+i+n+u+g+s+m+c+acl+selinux+xattrs+md5 #L: p+i+n+u+g+acl+selinux+xattrs #E: Empty group #>: Growing logfile p+u+g+i+n+S+acl+selinux+xattrs # You can create custom rules like this. # With MHASH... # ALLXTRAHASHES = sha1+rmd160+sha256+sha512+whirlpool+tiger+haval+gost+crc32 ALLXTRAHASHES = sha1+rmd160+sha256+sha512+tiger # Everything but access time (Ie. all changes) EVERYTHING = R+ALLXTRAHASHES # Sane, with one good hash. # NORMAL = sha256 NORMAL = sha256 # For directories, don't bother doing hashes. DIR = p+i+n+u+g+acl+selinux+xattrs # Access control only. PERMS = p+u+g+acl+selinux+xattrs # Access + inode changes + file type. STATIC = p+u+g+acl+selinux+xattrs+i+n+b+c+ftype # Logfiles only check access w/o xattrs. LOG = p+u+g+n+acl+selinux+ftype # Content + file type. CONTENT = sha256+ftype # Extended content + file type + access. CONTENT_EX = sha256+ftype+p+u+g+n+acl+selinux+xattrs # Some files get updated automatically, so the inode/ctime/mtime change # but we want to know when the data inside them changes. DATAONLY = p+n+u+g+s+acl+selinux+xattrs+sha256
第三部分:自定义监控项
[root@server ~]# vim /etc/aide.conf PERMS = p+u+g+acl+selinux+xattrs # 配置文件自带的组 # 自定义监控文件夹 /mnt PERMS # 调用配置文件自带的组
注:可以使用自带的组定义,也可以私人订制自己的组!!!
2.2 初始化AIDE生成基准库
(1)初始化AIDE
[root@server ~]# aide --init AIDE, version 0.15.1 ### AIDE database at /var/lib/aide/aide.db.new.gz initialized. [root@server ~]# mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz #根据配置文件命名规则生成新的数据库文件,需要重命名,以便AIDE读取
(2)首次检测监控文件夹变化
[root@server ~]# aide --check AIDE, version 0.15.1 ### All files match AIDE database. Looks okay! #一切OK文件没有被篡改
2.3 对监控文件夹做出变动
(1)新创建2个文件
[root@server ~]# touch /mnt/file1 [root@server ~]# touch /mnt/file2
(2)再次检测监控文件夹变化
[root@server ~]# aide --check AIDE 0.15.1 found differences between database and filesystem!! Start timestamp: 2021-12-15 23:04:40 Summary: Total number of files: 4 Added files: 2 Removed files: 0 Changed files: 0 --------------------------------------------------- Added files: --------------------------------------------------- added: /mnt/file1 added: /mnt/file2
注:可以发现AIDE已经发现监控目录/mnt在23:04分添加了2个文件,分别是file1和file2。
三、小结
同理如果想监控ps、top等常规运维监控命令是否有被篡改的痕迹,就可以按照上述第三部分的方法,把/usr/bin/目录监控起来。
[root@server ~]# find / -name ps /usr/bin/ps /usr/share/locale/ps [root@server ~]# find / -name top /usr/bin/top [root@server ~]# vim /etc/aide.conf PERMS = p+u+g+acl+selinux+xattrs # 配置文件自带的组有很多,可以根据需要选择一个组或者自己定义一个组 # 自定义监控文件夹 /usr/bin PERMS
作者:UStarGao
链接:https://www.starcto.com/safetool/106.html
来源: STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2021-08-24开源网盘系统Cloudreve容器化部署-开源网盘集锦
- 2022-05-12开源资产管理系统chemex容器化部署
- 2021-02-28Linux账户风险和安全策略
- 2021-07-20CI/CD Pipeline之Gitlab部署
- 2021-11-19Linux本地SSD磁盘IO性能压测教程-fio