构建安全Linux日志库需确保日志可信任、可追溯、不可抵赖,聚焦“谁、何时、以何身份、做了什么、影响哪些资源”四要素闭环;须统一chrony时间同步、集中管理audit规则、强制外发日志并验证行为链完整性。

构建符合安全规范的 Linux 日志库,关键不是堆日志量,而是让每条日志可信任、可追溯、不可抵赖。核心要落在“谁在什么时间、以什么身份、做了什么、影响了哪些资源”这四个要素闭环上。单靠 auditd 开启或 rsyslog 转发远远不够——节点时间不同步、规则不一致、本地日志被清空、行为链断开,都会直接导致合规失效。
统一时间锚点,确保跨节点事件可对齐
等保2.0和GDPR明确要求时间戳连续可信。任意两台节点时间偏差超3秒,sudo执行、文件修改、登录登出就无法串成一条完整行为链。
- 所有节点强制使用 chrony(非 ntpd),配置同一组高可信 NTP 源(如内网授时服务器或 pool.ntp.org)
- /etc/chrony.conf 中必须包含 makestep 1 -1,防止主机重启后时间跳变造成 audit.log 时间倒流
- 每日凌晨自动运行 chronyc tracking | grep "Last offset" 抽样检查,偏移超 ±50ms 立即告警
审计规则集中管理,避免手工散落与版本失控
在每台机器上手动改 /etc/audit/rules.d/audit.rules 是最大风险点:漏配、回滚难、无灰度、难审计。
- 用 Git 仓库托管全部规则模板,按角色(control-plane、worker、db-node)分目录维护差异化规则集
- 通过 Ansible 或 SaltStack 推送规则:执行 augenrules --load 前先比对哈希值,仅内容变更才重载
- 新增规则统一加 -k cluster_* 前缀(如 -k cluster_sudo_exec),便于后续在 SIEM 中按集群维度聚合分析
日志外发强绑定,杜绝本地存储单点失效
只写 /var/log/audit/audit.log 就等于没审计——攻击者拿下一台节点,就能清空全部痕迹。
- 禁用所有 auditctl -w 运行时规则,只认 /etc/audit/rules.d/ 下的持久化配置
- rsyslog 配置双通道:本地保留7天供紧急排查;同时通过 @@(o)syslog-collector:514(TCP+TLS)实时外发至独立日志集群
- 每个节点 $SystemName 设为 FQDN,模板中嵌入 %HOSTNAME% %TIMESTAMP% %msg%,从源头杜绝伪造
行为链闭环验证,还原真实操作路径
合规不是“有日志”,而是“能还原一次特权操作的完整路径”。比如用户 ssh 登录 → sudo su - → 修改 /etc/passwd → 退出,这四个动作必须能用同一 loginuid 或 session_id 串起来。
- 确保 PAM 模块正确加载 pam_loginuid.so,且 sshd 配置中含 UsePAM yes
- 关键规则必须带 -F auid!=unset 或 -F loginuid!=4294967295,过滤掉内核线程等无效上下文
- 每月抽检:在 SIEM 中搜索 cluster_sudo_exec,顺藤摸瓜查对应登录、命令执行、文件变更、登出事件,验证时间戳连续性与标识一致性


















