audit.log 海量日志如何快速过滤出可疑 syscall 的 ausearch 示例

9次阅读

ausearch 可通过限定时间、事件类型、系统调用号及 key 标签快速定位可疑 syscall,配合 grep/awk/aureport 提取关键信息,大幅提升审计效率。

audit.log 海量日志如何快速过滤出可疑 syscall 的 ausearch 示例

ausearch 快速从海量 audit.log 中定位可疑系统调用(syscall),关键在于精准限定时间、事件类型、系统调用号或行为特征,避免全盘扫描拖慢速度。

按高风险 syscall 名称直接过滤

常见危险调用如 execve(执行程序)、openat/open(读敏感文件)、connect(外连)、setuid/setgid(提权)可直接匹配:

  • ausearch -m execve -i | grep -E "(bash|sh|python|nc|curl|wget)" —— 查异常 shell 或下载工具启动
  • ausearch -m openat -i | awk '//etc/shadow/ || //etc/passwd/ || //root// {print}' —— 扫描对关键路径的 open 操作
  • ausearch -m connect -i | grep -v "localhost|127.0.0.1" | head -20 —— 抽样非本地网络连接

结合时间范围与失败事件缩小范围

攻击行为常伴随大量失败操作(如暴力提权、越权访问),加时间窗能极大提速:

  • ausearch -ts yesterday -te now -m avc,syscalls -f | grep "denied" —— 查 SElinux 拒绝事件(需开启 auditd 的 avc 记录)
  • ausearch -ts "2024/06/15 14:00" -te "2024/06/15 14:30" -m syscall -sc 102 --raw | aureport -f -i —— 查指定时段内所有 connect(syscall 102)调用详情
  • ausearch -ts recent -m syscall -sv no -sc 105 | head -10 —— 查最近失败的 chown(syscall 105)操作

用 key 字段快速关联攻击链(推荐)

若审计规则中已为关键操作打标(如 -k ssh_bruteforce-k sensitive_file_access),按 key 检索最快:

  • ausearch -k ssh_bruteforce -i —— 直接拉出所有标记为爆破的事件
  • ausearch -k privileged_exec -m execve -i | awk '{print $1,$2,$13}' —— 提取时间、UID 和执行路径,便于横向比对
  • 配合 aureport -k -i 可查看各 key 的统计摘要,快速识别高频异常 key

导出后用 awk/sed 做轻量二次加工

ausearch 输出较冗长,管道进文本工具可快速提取关键字段:

  • ausearch -m execve -ts today | awk -F': ' '/exe="/ {print $2}' | sort | uniq -c | sort -nr | head -10 —— 统计今日最常被执行的程序
  • ausearch -m syscall -sc 59 --raw | aureport -f -i | grep -E "(/dev/mem|/proc/kcore|/sys/kernel)" —— 查可疑的内核内存/设备访问(syscall 59 = kill 不是重点,这里仅示意 sc 用法;实际查 mem 用 -sc 2fork 配合 ptrace 规则更准)
  • 注意:--raw 输出适合机器解析,-i 适合人读;混用时先 raw 再 aureport,别直接对 -i 输出做正则

不复杂但容易忽略:确保 auditd 已启用 syscall 过滤规则(如 -a always,exit -F arch=b64 -S execve,openat,connect,setuid),否则 ausearch 再快也查不到原始数据。

text=ZqhQzanResources