auditd日志过快增长时,核心靠rate_limit限频+max_log_file_action与num_logs自动轮转清理,而非仅依赖logrotate;rate_limit=50限制每秒50条,flush=incremental_async缓解I/O,max_log_file=10MB、num_logs=6实现轮转归档,compress=yes可压缩节省空间。

auditd 日志增长过快时,核心要靠 rate_limit 控制写入频率 + max_log_file_action + num_logs 实现自动轮转与归档清理,而非仅依赖 logrotate。
rate_limit:限制每秒日志条目数(防突发刷爆磁盘)
在 /etc/audit/auditd.conf 中设置:
# 允许每秒最多写入 50 条 audit 日志(默认 0 = 不限) rate_limit = 50 <h1>触发限流时记录警告(便于监控识别是否被限速)</h1><p>flush = incremental_async freq = 20</p>
说明:
• 值设为 0 表示不限速,生产环境不建议;
• 50~200 是常见合理范围,具体需结合业务审计粒度(如只审 exec、user_login 等关键事件,可设低些);
• 配合 flush = incremental_async 可缓解 I/O 压力。
log_file & rotation:本地日志文件大小与轮转策略
同样在 /etc/audit/auditd.conf 中配置:
# 单个日志文件最大 10MB(避免单文件过大难分析)
max_log_file = 10
<h1>达到 max_log_file 后,自动轮转并保留 6 个历史文件(含当前)</h1><p>num_logs = 6</p><h1>轮转动作:rotate(重命名旧日志,生成新文件),非 ignore/suspend/syslog</h1><p>max_log_file_action = rotate</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/ai/1033" title="OmniAudio"><img
src="https://img.php.cn/upload/ai_manual/000/000/000/175680037887108.png" alt="OmniAudio" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/ai/1033" title="OmniAudio">OmniAudio</a>
<p>OmniAudio 是一款通过 AI 支持将网页、Word 文档、Gmail 内容、文本片段、视频音频文件都转换为音频播客,并生成可在常见 Podcast ap</p>
</div>
<a href="/ai/1033" title="OmniAudio" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div><h1>可选:轮转前压缩旧日志(节省空间,需 auditd ≥ 3.0 且编译支持 zlib)</h1><p>compress = yes</p>说明:
• num_logs = 6 意味着最多占用约 6 × 10MB = 60MB 磁盘(未压缩);
• 若启用 compress = yes,实际磁盘占用通常下降 60%~90%,但会略增 CPU 开销;
• max_log_file_action = rotate 是安全选项,suspend 会导致审计中断,应避免。
logrotate 补充:仅用于归档后压缩或异地备份(非主控手段)
auditd 自带轮转能力,logrotate 仅作辅助。若需对已轮转的 audit.log.* 进一步压缩或清理,可配 /etc/logrotate.d/auditd:
/var/log/audit/audit.log* {
weekly
missingok
compress
delaycompress
notifempty
create 0600 root root
sharedscripts
postrotate
# 通知 auditd 重新打开日志(仅对主文件有效,轮转文件无需)
if systemctl is-active --quiet auditd; then
kill -USR1 $(cat /var/run/auditd.pid 2>/dev/null) 2>/dev/null || true
fi
endscript
}
注意:
• 不要对 /var/log/audit/audit.log 本身用 logrotate 的 rotate 或 copytruncate,会干扰 auditd 自身轮转逻辑;
• 仅作用于带数字后缀的归档文件(如 audit.log.1, audit.log.2.gz);
• postrotate 中的 kill -USR1 是可选的,auditd 通常能自行管理主文件句柄。
验证与调试关键点
修改后必须重启服务并确认生效:
- 执行
sudo systemctl restart auditd - 检查状态:
sudo auditctl -s | grep rate(显示当前 rate_limit) - 查看日志路径与大小限制:
sudo auditctl -s | grep "log file\|num logs" - 手动触发轮转测试:
sudo auditctl -e 2 && sudo auditctl -e 1(先锁再解锁,强制 flush 并可能触发轮转) - 观察
/var/log/audit/下文件数量与大小变化(注意权限:属主 root:root,600)









