栏目头部广告

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云平台推荐


UCloud新用户专属注册连接

UCloud CDN超值特惠专场

UCloud全球云主机(UHost/VPS)大促页面

UCloud快杰云主机大促页面

文章页广告

随便看看

栏目底部广告
`