1.1 目标:在 Ubuntu/CentOS 跳板机上实现 SecureCRT 客户端必须使用公钥+MFA 登录,并对会话做不可篡改的录制与归档。
1.2 操作:准备一台 Linux 跳板机(建议 Ubuntu 20.04/22.04 或 CentOS 7/8),更新系统:Ubuntu: apt update && apt upgrade -y;CentOS: yum update -y。创建专用跳板用户组与用户:groupadd jump && useradd -m -s /bin/bash -G jump jumpadmin。
2.1 修改 /etc/ssh/sshd_config,关键项示例:Protocol 2, PermitRootLogin no, PasswordAuthentication no, ChallengeResponseAuthentication yes, UsePAM yes, AuthenticationMethods publickey,keyboard-interactive。并在末尾加 Match User 跳板限定:
2.2 示例追加:Match Group jump ForceCommand /usr/local/bin/jump_shell_wrapper.sh AllowTcpForwarding no X11Forwarding no PermitTunnel no
3.1 安装:Ubuntu: apt install libpam-google-authenticator -y;CentOS: yum install google-authenticator -y(或编译)。为每个跳板用户运行 google-authenticator 并保存二维码与密钥。
3.2 PAM 配置:在 /etc/pam.d/sshd 添加一行在 auth 段:auth required pam_google_authenticator.so nullok forward_pass。sshd_config 中保证 ChallengeResponseAuthentication yes,并设置 AuthenticationMethods publickey,keyboard-interactive。

4.1 安装 pam_yubico:Ubuntu: apt install libpam-yubico -y;获取 Yubico API id/key 或部署本地验证服务。配置 /etc/pam.d/sshd 增加:auth required pam_yubico.so id=YOUR_ID key=YOUR_KEY authfile=/etc/yubikey_mappings
4.2 将公钥与 YubiKey 映射写入 /etc/yubikey_mappings(格式:username:cccccc),并测试:ssh 连接时会提示插卡/触碰进行第二因素。
5.1 方案说明:使用 wrapper 强制命令调用 script 或 tlog 记录整个 pty 输出,保存到受限目录并写入审计索引。创建目录 /var/log/jump/%u 并设权限 root:adm 750。
5.2 示例 wrapper 脚本 /usr/local/bin/jump_shell_wrapper.sh(要求 /bin/bash 解释):确保头部 #!/bin/bash 并 chmod 750,内容要点: - 生成文件名:LOGDIR=/var/log/jump/$(whoami); mkdir -p $LOGDIR; F=$LOGDIR/$(date +%Y%m%d%H%M%S)-$$.cast - 使用 script: exec /usr/bin/script -q -f -c "/bin/bash --login" $F - 记录退出码并设置归档权限:chown root:adm $F; chmod 640 $F
6.1 logrotate:创建 /etc/logrotate.d/jump-record,按天或按大小轮转并保留 N 份,配置 postrotate 做权限修复与 rsync 推送。
6.2 集中管理:用 rsync/rsyslog 或 filebeat 将录制文件推送到专用日志服务器并上链路/做只读备份。验证:在跳板机上尝试 ssh 登录,确认 /var/log/auth.log(Ubuntu)或 /var/log/secure(CentOS)与录制文件生成并能用 scriptreplay 回放。
7.1 回答:在 SecureCRT 中导入或生成 SSH 私钥(PuTTY/PPK 或 OpenSSH 格式),会话 -> Connection -> SSH2 -> Authentication 中启用 PublicKey。连接时服务器按 AuthenticationMethods 要求会先提示公钥认证,成功后触发 keyboard-interactive,客户端会弹出提示输入一次性验证码(TOTP),在手机 Google Authenticator 或 YubiKey OTP 上输入即可。
8.1 回答:把录制目录权限设为 root:adm 且 750,wrapper 脚本由 root 启动并以 root 权限创建文件(随后 chown root:adm),普通用户无法直接删除。进一步通过 rsync+远程写入、WORM 存储或上报到只读日志服务器来保证不可篡改。
9.1 回答:按用户与时间在 /var/log/jump/username 下检索文件名(按日期命名),用 scriptreplay 或 asciinema(如果使用 asciicast 格式)回放:scriptreplay filename.cast 或 asciinema play file.json。审计时比对 auth.log 中的登录事件与录制文件时间戳,必要时从集中日志服务器恢复原始录制。