Audit在应急响应中常用的命令汇总

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 显示的就是需要用来删除的确切格式。

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

发表评论