aureport 不输出“安全风险指数”,需基于 execve、bpf、init_module/delete_module 三类高危 syscall 的异常特征人工或脚本加权计算;例如 execve 异常路径≥5次/小时+2分、bpf prog_load 大尺寸≥1次/天+5分、非 root 加载模块+10分,并结合 exe/comm 匹配、key 标签、arch 架构等上下文排除误报,最后导出 CSV 并趋势分析预警。

直接用 aureport 生成 syscall 报表本身不输出“安全风险指数”这个数值,它提供的是原始行为数据。真正的风险评估需基于报表中高频、异常、高危系统调用的组合特征,人工或脚本加权计算得出。核心不是看总数,而是识别偏离基线的危险信号。
提取关键 syscall 风险指标
先用 aureport 聚焦三类高危调用,它们是内核级风险的主要载体:
- execve:查非常规执行路径(如 /tmp、/dev/shm)、非交互式进程发起(comm=python/exe=/usr/bin/perl 启动 /bin/sh)
- bpf:重点过滤 a1=2(BPF_PROG_LOAD)且 a2 > 1MB 的记录,极可能为 eBPF JIT 喷射攻击
- init_module / delete_module:任何用户态加载/卸载内核模块行为,在生产环境几乎都属异常
构建简易风险计分逻辑
对每类指标设定权重和触发阈值,例如:
- execve 异常路径调用 ≥5 次/小时 → +2 分
- bpf prog_load 大尺寸(a2>1048576)≥1 次/天 → +5 分
- 非 root 用户触发 init_module → +10 分(一票否决级)
- 同一 UID 在 10 分钟内连续失败 mmap + execve + openat → +3 分(可疑链式行为)
结合上下文排除误报
单纯统计 syscall 数量会误伤正常运维。必须叠加字段交叉验证:
- 检查 exe= 和 comm= 是否匹配(如 exe=/usr/bin/python3 但 comm=nginx,说明被注入)
- 确认 key= 字段是否为预设安全标签(如 key=safe_backup),有则降权
- 比对 arch= 与系统架构(b32 规则在 b64 系统上命中,大概率是绕过尝试)
导出并可视化趋势
将周期性报表转为结构化数据,便于观察风险漂移:
- 每日导出 bpf/execve/模块类 syscall 的 CSV:sudo aureport -m bpf,execve,init_module,delete_module --failed --summary -ts yesterday --format csv > /var/log/audit/daily_syscall_risk.csv
- 用脚本统计各指标日环比变化,增幅超 200% 自动标红预警
- 配合 ausearch 定位高分事件源头:如发现某 IP 的 execve 异常激增,立即查其完整会话:sudo ausearch -i -m execve -sv no -f /tmp -ui <uid> | head -20

















