Audit是什么
Audit是Linux中的审计程序,主要的作用可以看做审计日志,功能全面,可以说市面上大部分Linux探针都绕不开Audit,且Audit有着实时性很强的特性,因此可以替代部分Linux Hook操作及监控操作。
Audit主要监测的内容包含但不限于
- 文件监控(文件操作日志,创建,删除,增加,修改,权限 …)
- 网络监控 (connect,close,bind)
- 进程监控 (execve)(按pid监控)
本文主体也按照如上几种常见探针功能描述
Audit使用方式
audit 启动
如何使用肯定是第一话题,现在绝大部分的Linux主机都内置了Audit
通过命令启动即可 /etc/init.d/auditd start
audit会在目录 /var/log/audit/
下生成log文件,通过解析audit的原始log可以拿到非常多的审计日志信息
Netlink监控,通过netlink也可以监控audit信息
audit 日志配置
列举一些常见配置
监控execve,也可用作进程启动1
-a exit,always -F arch=b64 -S execve -k ProcStart
系统关键目录监控1
2
3-w /etc/hosts -p w -k HostChange
-w /etc/services -p w -k ServicesChange
-w /etc/sysconfig/network-devices/ -p w -k NetCardChange
套接字监控1
-a always,exit -F arch=b64 -S socket -k SocketChange
连接监控1
-a always,exit -F arch=b64 -S connect -k ConnectChange
发送消息监控1
-a always,exit -F arch=b64 -S sendmsg -k SendMsgChange
绑定监控1
-a always,exit -F arch=b64 -S bind -k BindChange
接收消息监控1
-a always,exit -F arch=b64 -S recvmsg -k RecvMsgChange
关闭操作监控(量大)1
-a always,exit -F arch=b64 -S close -k CloseChange
过滤日志1
2# 参照如下写法
-A exit,never -F path=/bin/ls -F perm=x
以上部分监控项实则为监控系统调用,查看整个系统的调用可以查看 ausyscall --dump
,不同机型监控也不同
audit 日志配置
1 | # 设置日志文件 |
Audit监控文件
为什么不选择Inotify
inotify应该是应用最广泛的文件监控工具了,针对Linux的思想,一切皆文件,Inotify确实是得天独厚
inotify适用的场景不同,inotify使用epoll,性能更佳,但inotify只能监控文件的部分信息,无法做到审计,也就是操作进程的信息和操作用户信息,作为一个优秀的EDR,必然需要审计分析能力,因此Inotify只能作为部分监控项所用,如果需要溯源,audit更适合
如何判断文件的操作行为
根据不同的文件制定不同的key,如果key是唯一的那么可以通过key来识别文件,或者根据audit日志中的path来识别
操作行为可以通过系统的syscall来判断 增删改查,需要监控文件时增加文件监控属性 -p rwax
Audit监控网络访问
必须配置对应的采集配置
Audit监控进程启动
必须配置对应的采集配置
进程监控建议增加过滤,否则会积压很多Audit日志
关于探针
探针采集内容目前非常稳定,各类进程,网络,文件,防火墙(适配多种主流防火墙),系统信息,系统状态,外设,硬件设备….
欢迎交流~