首选在audit规则层用-a never,exit精准屏蔽恶意扫描路径(如/proc、/sys等),比空日志更高效零i/o;次选rsyslog过滤丢弃;辅以systemd资源限制和内核防护机制治本。

直接对恶意扫描路径启用空日志记录器(null logger)是可行的,但需注意:auditd 本身不支持“为某条规则单独禁用日志”,它只支持通过 -a never,exit 规则从源头屏蔽事件——这比“记空日志”更彻底、更高效,且零 I/O 开销。
精准屏蔽恶意扫描路径(推荐首选)
恶意扫描行为(如遍历 /proc、/sys、/dev 或大量临时目录)本质是高频、低价值的系统调用。与其让它触发日志再丢弃,不如在 audit 规则层直接拦截:
- 添加永久屏蔽规则:
sudo auditctl -a never,exit -F path=/proc/sudo auditctl -a never,exit -F path=/sys/sudo auditctl -a never,exit -F path=/dev/shmsudo auditctl -a never,exit -F path=/tmp/ - 写入规则文件持久化(避免重启失效):
追加到/etc/audit/rules.d/99-block-scan.rules,然后执行sudo augenrules --load - 验证是否生效:
sudo auditctl -l | grep "never.*path="应显示对应路径;
手动触发一次扫描(如find /proc -name "status" 2>/dev/null | head -1),再查sudo ausearch -m avc -ts recent或ausearch -m syscall -ts recent,确认无相关事件生成
若必须走日志链路,用 auditd + rsyslog 配合丢弃
极少数场景下(如需保留其他路径日志但隔离扫描路径),可借助 rsyslog 的过滤能力,在日志落地前丢弃:
- 确保 auditd 输出格式为
LOG_FORMAT = RAW或NOLOG(启用异步转发):sudo sed -i 's/^log_format =.*/log_format = NOLOG/' /etc/audit/auditd.conf - 配置 rsyslog 丢弃含特定路径的审计消息:
在/etc/rsyslog.d/50-audit-drop-scan.conf中添加:if $programname == 'kernel' and ($msg contains '/proc/' or $msg contains '/sys/' or $msg contains '/dev/') then stop - 重启服务:
sudo systemctl restart auditd rsyslog - 注意:该方式仍产生少量内核→rsyslog 的 socket 通信开销,I/O 压力远低于默认同步落盘,但不如
never,exit彻底
补充防护:限制扫描行为本身
仅屏蔽日志是治标,结合系统级限制才能治本:
- 用
systemd限制可疑进程资源:
对已知扫描工具(如gobuster、ffuf)设置MemoryMax=100M、IOWeight=10,防止其耗尽 I/O 队列 - 启用内核级路径访问控制:
通过fs.protected_regular=2和fs.protected_fifos=1(写入/etc/sysctl.d/99-protect.conf)阻止非特权进程遍历敏感伪文件系统 - 检查并清理定时任务:
sudo crontab -l、systemctl list-timers --all,删除异常扫描脚本的调度项











