真正防范敏感审计信息泄露需分层管控:auditd才是敏感日志源头,应剥离其输出、严格限权、禁用冗余日志、启用远程转发与规则锁定。

直接调低内核日志等级并不能过滤敏感审计信息,反而可能让关键事件被忽略。真正防范敏感审计信息泄露,靠的不是“压低日志级别”,而是精准控制输出目标、隔离存储路径、限制访问权限、禁用非必要输出。内核日志(printk)本身不包含用户行为级审计数据(如谁改了/etc/passwd),这类内容由 auditd 生成,属于用户空间审计框架;混淆二者会导致策略失效。
内核日志等级本身不决定“是否敏感”,只决定“是否显示”
KERN_DEBUG(7)、KERN_INFO(6)等是调试/信息性消息,比如驱动初始化、硬件探测,并不记录密码、命令行、文件内容等敏感操作。真正的敏感审计日志来自 auditd,存于 /var/log/audit/audit.log,它独立于 printk 机制,不受 dmesg -n 或 console_loglevel 影响。
把 auditd 日志从控制台和通用日志流中剥离
默认情况下,某些发行版会通过 rsyslog 将 auditd 消息转发到 /dev/console 或 /var/log/messages,这会造成敏感事件意外暴露在终端或普通日志文件中。应主动切断这条通路:
- 编辑
/etc/rsyslog.d/50-audit-filter.conf,添加:if $programname == 'kernel' and $msg contains 'audit:' then stop if $programname == 'auditd' then /var/log/audit/audit.log & stop
- 确保
/etc/systemd/journald.conf中ForwardToConsole=no(避免 journal 转发到 tty) - 重启服务:
sudo systemctl restart rsyslog systemd-journald
严格限定 audit.log 的访问权限与生命周期
审计日志本身就是敏感资产,防护重心在其存储环节:
- 设置目录权限:
sudo chmod 700 /var/log/audit - 设置日志文件权限:
sudo chmod 600 /var/log/audit/audit.log - 配置轮转时保留最小副本数、启用压缩与自动删除:编辑
/etc/logrotate.d/auditd,确保含rotate 4、maxsize 20M、compress、olddir /var/log/audit/archive - 禁止普通用户执行
ausearch或aureport:移除其对/sbin/ausearch的执行权限,或用 sudoers 限制仅授权人员使用
关闭内核无关的冗余输出,减少攻击面
虽然不直接防泄露,但减少控制台刷屏可降低误操作与信息无意暴露风险:
- 临时:
dmesg -n 3(只显示 ERR 及以上,屏蔽 NOTICE/INFO/DEBUG) - 永久:在 GRUB 参数中设
console_loglevel=3,同时保留loglevel=4(保证 dmesg 仍能查完整缓冲) - 屏蔽特定设备日志(如 USB、ACPI 噪音):加内核参数
usbcore.autosuspend=-1 acpi_enforce_resources=lax,再配合modprobe.blacklist=屏蔽非必要模块
不依赖日志级别做安全隔离,而用机制分层管控
敏感审计信息的防护本质是“谁生成 → 存哪 → 谁能看 → 谁能传”。printk 级别只是输出开关,auditd 才是源头。真正有效的做法是:
- auditd 规则只监控必要项(避免
-w / -p wa全盘扫描) - 日志不落系统盘,改用远程 TLS 转发至专用审计服务器
- 启用
auditctl -e 2锁定规则,防止运行时篡改 - 定期校验
/var/log/audit/下文件哈希,发现篡改立即告警
不复杂但容易忽略。

















