生产环境堡垒机审计日志需本地防护、传输加密、归档验证三端同步加固:本地用chattr +a加锁+降权写入+auditd监控;传输启用TLS双向认证;归档时GPG签名+SHA256校验+WORM存储。

生产环境堡垒机的审计日志不可篡改,不能只靠“存下来”或“设权限”,必须从本地防护、传输加密、归档验证三端同步加固。核心是让日志在生成、离开、落盘三个环节都具备防删除、防修改、可验证能力。
本地日志文件加锁 + 降权写入
堡垒机自身产生的操作日志(如 JumpServer 的 /opt/jumpserver/data/core/logs/ 和 /opt/jumpserver/data/replay/)默认由 root 或 jumpserver 用户写入,需立即收紧:
- 对关键日志目录执行 chattr +a(仅追加),例如:
chattr +a /opt/jumpserver/data/core/logs/
避免使用+i(不可变),否则服务重启后无法写新日志 - 确保日志属主为 jumpserver:jumpserver,权限为 750;禁止其他用户读写遍历
- 若堡垒机支持自定义日志输出(如通过 rsyslog 转发),应配置
$PrivDropToUser jumpserver,杜绝以 root 身份写日志
启用 auditd 监控日志目录与关键进程
仅靠文件属性无法防御 root 级恶意覆盖。auditd 可捕获对日志路径的任何写、删、重命名、属性修改行为:
- 添加规则监控 replay 和 logs 目录:
-w /opt/jumpserver/data/replay/ -p wa -k jump_replay_mod-w /opt/jumpserver/data/core/logs/ -p wa -k jump_logs_mod - 同时监控堡垒机主进程(如
./jms start启动的 Python 进程)是否被替换或注入:-a always,exit -F path=/opt/jumpserver/jms -F perm=x -k jump_exec - 规则写入 /etc/audit/rules.d/jumpserver.rules,执行
augenrules --load持久生效
强制 TLS 加密外发 + 双向认证
堡垒机日志必须实时转发至独立日志服务器(非同一台机器),且传输过程禁用明文:
- 在 JumpServer 中启用 LOG_LEVEL=DEBUG 并配置 RSYSLOG_SERVER 地址,或直接部署 rsyslog 客户端 拦截其 stdout/stderr
- rsyslog 配置必须启用 TLS 双向认证:
指定 CA 证书、客户端证书和私钥路径
设置$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.pem
开启tls(peer-verify(yes)) - 防火墙禁止开放明文 514 端口;远程日志服务器仅监听 6514/tcp,且只接受已注册证书的连接
轮转后自动 GPG 签名 + WORM 归档
日志到达远端后仍可能被篡改,因此签名动作必须发生在源端日志轮转完成的瞬间:
- 在堡垒机所在主机的 /etc/logrotate.d/jumpserver 中,于
postrotate段加入:gpg --detach-sign --armor /opt/jumpserver/data/core/logs/*.log.1 2>/dev/null || true - 签名文件(
*.log.1.asc)与原日志一并上传至异地 WORM 存储(如 AWS S3 Object Lock “Governance Mode” 或本地磁带库) - 每次上传后生成 SHA256 校验和,并将
.sha256文件单独存入隔离网络区域,供审计时交叉比对


















