Audit在应急响应中常用的命令汇总
整理应急响应中经常会用到的Audit审计命令,方便排查使用。
auditctl命令参数解释
[root@localhost ~]# auditctl -h
用法: auditctl [选项]
-a <l,a> 将规则追加到列表<l>的末尾,并执行动作<a>
-A <l,a> 将规则添加到列表<l>的开头,并执行动作<a>
-b <backlog> 设置允许的最大未完成审计缓冲区数
默认值=64
-c 继续执行规则中的错误
-C f=f 比较收集到的字段(如果可用):
字段名, 运算符(=,!=), 字段名
-d <l,a> 从列表<l>中删除规则,并执行动作<a>
l=task,exit,user,exclude
a=never,always
-D 删除所有规则和监视
-e [0..2] 设置启用标志
-f [0..2] 设置失败标志
0=silent 1=printk 2=panic
-F f=v 构建规则:字段名, 运算符(=,!=,<,>,<=,>=,&,&=) 值,例如-F arch=b64 - 过滤条件:仅监控64位架构的系统调用
-h 帮助
-i 从文件读取规则时忽略错误
-k <key> 在审计规则上设置过滤器键
-l 列出规则
-m text 发送用户空间消息
-p [r|w|x|a] 在监视上设置权限过滤器
r=read, w=write, x=execute, a=attribute
-q <mount,subtree> 使子树成为挂载点的目录监视的一部分
-r <rate> 设置每秒消息数的限制 (0=无限制)
-R <file> 从文件读取规则
-s 报告状态
-S syscall 构建规则:系统调用名称或编号
-t 修剪目录监视
-v 版本
-w <path> 在 <path> 插入监视
-W <path> 移除 <path> 的监视
--loginuid-immutable 使 loginuid 一旦设置就不可更改
--reset-lost 重置丢失记录计数器
监控网络连接
网络操作类:
socket– 创建套接字connect– 当程序主动向外建立连接时触发(如客户端连接服务器)accept, accept4– 当程序接受传入连接时触发(如服务器接受客户端连接)bind– 绑定地址listen– 监听端口send, sendto, sendmsg– 发送数据recv, recvfrom, recvmsg– 接收数据
auditctl -a always,exit -F arch=b64 -S connect,accept -F key=network_connections
执行后查看审计结果。
ausearch -k network_connections --format text

这样的输出可能会非常多,我们可以按照进程名来去重。
ausearch -k network_connections --format text | awk '!seen[$NF]++'
每个进程只保留一条记录,方便判断哪些进程有过网络连接,再做进一步筛选。

按进程名去重会筛选掉大量重复的进程网络请求。
监控目录/文件访问
监控文件访问:
auditctl -w /etc/passwd -p rwxa -k file_access

监控目录访问:
auditctl -w /var/log -p rwxa -k dir_access

ausearch -k file_access --format text ausearch -k dir_access --format text
如果输出太多也可以先按进程名去重方便查看。
ausearch -k file_access --format text | awk '!seen[$NF]++' ausearch -k dir_access --format text | awk '!seen[$NF]++'
监控进程创建
auditctl -a always,exit -F arch=b64 -S execve -k process_creation auditctl -a always,exit -F arch=b64 -S clone,fork,vfork -k process_fork
fork/clone/vfork是”生孩子”(创建新进程,新的PID),execve是”换脑子”(在现有进程中加载新程序,PID不变)。


ausearch -k process_fork --format text ausearch -k process_creation --format text
删除Audit规则
每次排查完及时删除audit规则,否则日志量非常大。
删除所有规则:
auditctl -D
删除特定规则:
auditctl -l

找到要删除的规则,复制整行内容,将开头的 -a 改为 -d,或将 -w 保持不变但加上 -d。
注意:删除命令必须与添加命令的参数完全匹配,auditctl -l 显示的就是需要用来删除的确切格式。
微信赞赏
支付宝赞赏
发表评论