1.
概述与适用场景
· 目标:构建基于证书的跳板机(Jump Host)认证与会话审计流程,适用于混合云与内网运维场景。
· 适用资产:跳板机(IP: 10.0.0.10)、内网主机(10.0.1.20)、CA 管理主机与日志服务器。
· 关键组件:OpenSSH 证书机制、tlog/ttyrec 会话记录、rsyslog/Beats->ELK 或 Splunk 聚合。
· 安全目标:取消共享密码,使用短期签发证书(例如 90 天),并对所有交互进行不可否认的审计。
· 运维边界:示例以 Linux (CentOS/Ubuntu) 为主,端口示例使用 SSH-2222 对外代理。
2.
证书生成(CA 与用户证书)
· 生成 CA 私钥与自签证书:openssl genrsa -out ca.key 4096;openssl req -x509 -new -key ca.key -days 3650 -subj "/CN=JumpCA" -out ca.crt。
· 生成用户密钥对:ssh-keygen -t rsa -b 4096 -f /home/alice/.ssh/id_rsa -N "". 公钥为 id_rsa.pub。
· 使用 ssh-keygen 签发 OpenSSH 用户证书:ssh-keygen -s /etc/ssh/ca_user_key -I alice -n alice -V +52w /home/alice/.ssh/id_rsa.pub 生成 alice-cert.pub。
· 证书策略:证书有效期示例 52 周(约 1 年)或短期 90 天;原则上短期证书更安全。
· 示例文件位置:/etc/ssh/ca_user_key(私钥,严格权限 600),/etc/ssh/ca_user_pub.pem(公钥,sshd 引用)。
3.
跳板机 OpenSSH (sshd) 配置示例
· 基本端口与限制:Port 2222;PermitRootLogin no;MaxAuthTries 3。
· 启用证书认证:TrustedUserCAKeys /etc/ssh/ca_user_pub.pem;AuthorizedPrincipalsFile /etc/ssh/principals/%u。
· 强制审计命令:Match User *,ForceCommand /usr/local/bin/session-record.sh %u %h %p(session-record.sh 调用 tlog-rec 并写入 /var/log/tlog/)。
· 登录示例:ssh -p 2222 -i id_rsa -o CertificateFile=id_rsa-cert.pub alice@jump.example.com。
· 其他建议:UsePAM yes(结合 MFA),AllowUsers 列表化管理,ClientAliveInterval 300 保持会话可控。
4.
会话审计与日志格式示例
· 会话记录工具:推荐 tlog(配合 s2n),或 ttyrec/Asciinema;tlog 支持结构化 JSON 输出并可与 rsyslog 转发。
· 本地存储示例:/var/log/tlog/ 文件名规则 alice_20260501_1015.session。
· 日志转发:rsyslog 配置 -> *.* @@elk.internal:514 或使用 filebeat -> Logstash。
· 命令级审计字段:timestamp、user、src_ip、dst_host、command、duration、session_file。
· 示例审计条目表(演示数据):
| timestamp |
user |
src_ip |
dst_host |
command |
duration(s) |
| 2026-05-01T10:15:23Z |
alice |
203.0.113.45 |
10.0.1.20 |
sudo systemctl restart nginx |
12 |
| 2026-05-02T09:02:01Z |
bob |
198.51.100.12 |
10.0.2.15 |
tail -n 200 /var/log/app.log |
240 |
5.
日志集中与告警策略
· 索引策略:ELK 指数 jump-log-YYYY.MM.dd,保留周期示例 90 天;Splunk 指数名 jump_audit,保留 30 天。
· 告警规则样例:同一源 IP 10 分钟内失败登录 >5 次 -> 发出高优先告警。
· 取证保留:会话原始文件(/var/log/tlog/*.session)至少保留 30 天,关键审计数据保留 1 年。
· 日志传输安全:使用 TLS(rsyslog @@tcp:elk:6514),或 Filebeat->Logstash TLS。
· 性能参数:每分钟写入会话记录峰值预估 200 条,建议磁盘 IOPS >= 200,归档到冷存储降低成本。
6.
真实案例与排查步骤
· 案例概述:2026-04-28 12:03,用户 carol 从 203.0.113.77 登录失败,错误为 "certificate expired"。
· 排查步骤一:查看本地 sshd 日志 /var/log/auth.log:May 28 12:03:00 sshd[1234]: userauth_pubkey: invalid certificate: certificate has expired。
· 排查步骤二:验证证书有效期:ssh-keygen -L -f /home/carol/.ssh/id_rsa-cert.pub -> Valid: from 2025-01-01 to 2026-01-01(已过期)。
· 解决办法:使用 CA 重新签发短期证书(示例:ssh-keygen -s /etc/ssh/ca_user_key -I carol -n carol -V +90d /home/carol/.ssh/id_rsa.pub),并将新证书下发。
· 事后审计:在 ELK 中检索 carol 的会话记录,确认失败/成功节点并将证书过期事件归入安全事件库,调整证书到期提醒(提前 7 天邮件通知)。
来源:运维手册crt ogin跳板机配置 从证书生成到会话审计完整流程示例