要让系统日志实时同步到远程安全审计台,关键在于构建防丢、防篡改、可验证、可溯源的传输链路,分四层落地:源头采集规范、传输通道加密、接收端隔离存储、日志完整性保障。

要让系统日志实时同步到远程安全审计台,关键不是“开了转发就行”,而是构建一条防丢、防篡改、可验证、可溯源的传输链路。整个过程分四层落地:源头采集规范、传输通道加密、接收端隔离存储、日志完整性保障。
一、源头日志必须结构化且不依赖本地落盘
默认日志(如 /var/log/secure 或 /var/log/audit/audit.log)直接写磁盘,容易被删改或覆盖。必须绕过文件落盘环节:
- SSH 登录类日志:在
/etc/ssh/sshd_config中启用LogLevel VERBOSE,并确保UsePAM yes,为后续接入auditd打基础 - Auditd 审计日志:用
rsyslog的imfile模块监听/var/log/audit/audit.log,而不是靠 auditd 自己写文件后另起进程读取 - Nginx 等应用日志:禁用
access_log /path/to/file,改用access_log syslog:server=192.168.10.50:601,facility=local7,tag=nginx_sec;直发 syslog - Bash 命令历史:通过
PROMPT_COMMAND+logger写入local3.info,再由 rsyslog 统一转发
二、传输必须走 TLS 加密 TCP,禁用明文协议
UDP 易丢包,普通 TCP 可被中间人劫持或伪造。生产环境只接受带证书校验的 TLS 连接:
- 客户端(被审计主机)配置中,使用
@@(o)表示 TLS 加密 TCP,例如:*.* @@(o)192.168.10.50:6514 - 服务端(审计台)启用
imtcp模块,加载 CA 证书和服务器证书,设置$InputTCPServerStreamDriverAuthMode x509/name强制验证客户端身份 - 禁用所有
imudp和未启用 TLS 的imtcp配置,防火墙只放行6514/tcp(非传统 514)
三、接收端按来源自动分类 + WORM 锁定
日志混在一起就失去审计价值。必须从接收那一刻起就隔离、防改、不可删:
- 用 rsyslog
$template按主机名和程序标签生成路径,例如:$template RemoteSecLog,"/var/log/audit/%HOSTNAME%/%PROGRAMNAME%_sec.log" - 配合
if $programname == 'ssh' then ?RemoteSecLog & ~实现精准路由,避免重复或错投 - 目标目录挂载为 WORM 存储:ZFS 快照 +
chattr +a(仅追加),或对接 MinIO 启用对象版本控制 + 法律保留策略(Retention Policy)
四、每条日志附带数字签名或哈希校验能力
光加密传输还不够——攻击者若控制了客户端,仍可能伪造日志内容。需引入完整性验证机制:
- 在客户端启用
rsyslog-gnutls模块,对每条消息附加 SHA256 签名 - 服务端配置
omfwd或专用模块验证签名,失败日志单独归档并告警 - 或结合 auditd 的
-k规则打标签,配合 ausearch 提取带时间戳与事件哈希的原始记录,作为离线比对依据
不复杂但容易忽略。


















