Linux如何基于AIDE检测文件系统完整性
一、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
以上就是本文的全部内容,希望对大家的学习有所帮助。
- Golang 序列化之 ProtoBuf
- Golang RPC 之 gRPC
- 解决连通性问题的四种算法
- 使用shell批量生成数据整合式迁移的脚本(r8笔记第52天)
- Jdbc知识点全整理,你值得拥有 (1)
- SSD: Single Shot MultiBox Detector 深度学习笔记之SSD物体检测模型
- dg broker校验失败的一个奇怪问题(r8笔记第50天)
- golang 几种字符串的连接方式
- 整理ING
- dg broker校验失败的一个奇怪问题(二) (r8笔记第51天)
- Jdbc知识点全整理,你值得拥有 (2)
- 抓住“新代码”的影子 —— 基于GoAhead系列网络摄像头多个漏洞分析
- Python 用OPEN读文件报错 ,路径以及r
- python 如何设置多线程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 醒醒神,爱奇艺笔试真题
- Qt音视频开发22-通用GPU显示
- 通吃岛屿问题
- 堂妹问我:Dubbo的服务暴露过程
- LeetCode 657. 机器人能否返回原点
- ! [rejected] master -> master (fetch first)
- Mybatis源码学习(二)Mapper动态代理
- Mybatis源码学习(三)executor
- Mybatis源码学习(四)拦截器与插件原理
- SpringBoot如何使用注解装配Bean
- Spring Boot 如何快速实现定时任务
- Django 实现文件上传下载API
- 【原创】Spring Boot 如何手写stater
- 【原创】Spring Boot 过滤器、监听器、拦截器的使用
- 关于useState的一切