auditd磁盘满时无法自动恢复或限速兜底,必须设防御性阈值:space_left=500mb、admin_space_left=100mb且action为suspend,max_log_file=100、num_logs=10、max_log_file_action=rotate,并用logrotate配合usr1信号轮转,隔离存储+root配额加固。

Auditd 在磁盘空间将满或已满时,不能靠“自动恢复”或“限速”来兜底,必须提前设好防御性阈值和响应动作。核心是让 auditd 主动暂停写入,而不是等系统崩溃或日志丢弃。
设置两级磁盘空间预警阈值
编辑 /etc/audit/auditd.conf,重点配置以下三项(单位统一用 MB,避免百分比在小分区误触发):
- space_left = 500:剩余空间 ≤ 500MB 时触发警告动作(如发邮件、写 syslog)
- admin_space_left = 100:剩余空间 ≤ 100MB 时触发强干预动作
-
admin_space_left_action = suspend:暂停审计日志写入,保留系统可用性(高安全场景可设
halt,但慎用)
注意:disk_full_action 和 disk_error_action 也建议设为 SUSPEND,避免磁盘满直接关机。
配合日志轮转防止堆积失控
仅靠空间阈值不够,还要控制单文件大小和轮转行为,否则日志还没触发 warning 就已撑爆分区:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- max_log_file = 100:单个日志最大 100MB(默认仅 8MB,易高频轮转)
- max_log_file_action = ROTATE:必须设为 ROTATE,禁用 IGNORE(否则超限后继续追加,损坏日志)
- num_logs = 10:最多保留 10 个历史轮转文件(不含当前 audit.log),总占用可控
改完执行 sudo systemctl restart auditd 生效。
用 logrotate 补齐归档与通知闭环
auditd 自身不重开文件描述符,必须靠 logrotate 触发轮转并通知它切换句柄:
- 新建 /etc/logrotate.d/auditd,关键项包括:
size 100M、rotate 10、compress delaycompress、create 0600 root root - 必须含
postrotate块:/bin/systemctl kill --signal=USR1 auditd 2>/dev/null || true - 确保
rotate数值与num_logs一致,避免重复保留或清理遗漏
额外加固:隔离存储 + 权限锁定
防止 auditd 日志挤占其他关键路径(如 kdump 或 root 分区):
- 将 /var/log/audit/ 挂载到独立小分区(例如
/dev/sdb1 /var/log/audit ext4 defaults,usrquota 0 0) - 对 root 用户设磁盘配额:
setquota -u root 0 2097152 0 0 /var/log/audit(即硬上限 2GB) - 目录权限设为
700,日志文件为600,SELinux 上下文保持system_u:object_r:auditd_log_t:s0










