嵌入式Linux启用auditd需精简配置:日志改存/tmp/、限制大小与数量、用绝对值触发告警、禁用JSON格式;规则聚焦关键路径与二进制,加标签便于过滤;启动脚本动态加载规则并锁定;日志仅人工排查或压缩归档。

嵌入式 Linux 环境下启用 auditd,不能照搬服务器配置——资源受限、存储有限、启动快、无交互终端是核心约束。优化目标很明确:保关键审计能力、压资源开销、防日志撑爆 Flash、规则即用即生效。
精简 auditd.conf 配置
嵌入式系统通常无 swap、RAM 小、eMMC/SD 卡寿命敏感,需大幅收紧守护进程行为:
-
log_file = /var/log/audit.log→ 改为内存文件系统路径(如/tmp/audit.log),避免频繁写入 Flash;若必须落盘,确保挂载为noatime,nodiratime,relatime -
max_log_file = 2→ 设为 1~3 MB,防止单个日志失控占用空间 -
num_logs = 2→ 只保留当前 + 1 个轮转日志,总占用 ≤ 6 MB -
space_left = 5M、admin_space_left = 1M→ 用绝对值替代百分比,避免小容量设备误判 -
flush = INCREMENTAL、freq = 20→ 平衡写入延迟与数据丢失风险,避免SYNC或DATA模式拖慢 I/O -
log_format = ENTRIES→ 禁用 JSON 格式(默认为 RAW),减小日志体积和解析开销
规则策略:只监不录,按需加载
嵌入式场景不追求全量审计,而是“精准打点”:
- 避免
-w /或-a always,exit -S execve这类泛化规则,它们会瞬间产生海量日志 - 优先监控三类高价值路径:
-
/etc/passwd、/etc/shadow、/etc/group(用户权限变更) -
/etc/init.d/、/lib/systemd/system/(服务启停篡改) -
/usr/bin/、/bin/中关键二进制(如busybox、dropbear、udhcpc)的执行或修改
-
- 使用
-p xwa(执行+写+属性)而非-p rwxa,减少读操作噪音 - 所有规则加
-k embedded_<功能>标签(如-k embedded_sshd_start),便于后续ausearch -i -k embedded_sshd_start快速过滤
启动与持久化适配
嵌入式常使用 BusyBox init 或 OpenRC,而非 systemd:
- 规则不放
/etc/audit/rules.d/(该目录依赖augenrules,多数嵌入式未装) - 直接写入
/etc/audit/audit.rules,内容简洁(建议 ≤ 10 行) - 在启动脚本(如
/etc/init.d/S50audit)中执行:auditctl -e 0 # 允许规则动态修改(避免内核锁定) auditctl -f # 清空现有规则 auditctl -R /etc/audit/audit.rules auditctl -e 1 # 锁定规则(防运行时篡改)
- 若需开机自启 auditd,确认
auditd二进制已静态编译并放入/sbin/,且不依赖 glibc 动态库
日志处理轻量化
不部署 aureport 或 audispd-plugins(内存与 CPU 负担大):
- 日志仅用于事后人工排查,用
ausearch -i -ts recent查最近事件即可 - 定期通过 crond 或启动脚本压缩归档(如
gzip /tmp/audit.log && rm /tmp/audit.log),或通过 netconsole 发送到远端日志服务器 - 若无网络,可设置
space_left_action = IGNORE+admin_space_left_action = SYSLOG,让系统在空间不足时仅发警告,不停止审计
不复杂但容易忽略。


















