linux无原生ssh录屏功能,需分层实现:会话级用tlog或asciinema,命令级用auditd或pam_tty_audit,二者互补满足审计合规;单靠.bash_history或loglevel verbose不可靠。

Linux 没有原生“SSH 录屏”功能,所谓“录屏+命令留存”,本质是分层实现:会话级录制靠 tlog 或 asciinema,命令级留存靠 auditd 或 pam_tty_audit,两者互补才能满足审计合规要求。单靠改 .bash_history 或开 LogLevel VERBOSE 都不可靠——前者可被清空,后者只记登录不记命令。
用 Tlog 实现自动会话录制(推荐生产环境)
Tlog 是专为审计设计的会话录制工具,支持 SSH 登录即触发、结构化 JSON 存储、真实键入节奏还原,适合复盘误操作或调查安全事件。
- 编辑
/etc/ssh/sshd_config,添加一行:ForceCommand /usr/bin/tlog-rec-session,重启 SSH:sudo systemctl restart sshd - 配置日志路径:创建
/etc/tlog/conf.d/10-output.conf,内容为:{"output": {"type": "file", "path": "/var/log/tlog/%Y-%m-%d-%H-%u.json"}} - 确保目录存在且权限受限:
sudo mkdir -p /var/log/tlog && sudo chmod 0700 /var/log/tlog - 测试后执行
ls -l /var/log/tlog/*.json查看文件,用sudo tlog-play -r json-file /path/to/file.json回放
用 auditd 记录所有命令执行(最可靠命令级审计)
auditd 在内核层捕获 execve 系统调用,绕过 shell,连 sudo、su、脚本中执行的命令都会记录,且普通用户无法删除。
- 确认服务运行:
systemctl is-active auditd;若未启动,执行systemctl enable --now auditd - 添加规则:
auditctl -a always,exit -F arch=b64 -S execve -k user_commands(x86_64 系统) - 持久化规则:写入
/etc/audit/rules.d/user-commands.rules,再运行augenrules --load - 查日志用:
ausearch -k user_commands | aureport -f -i,注意comm字段是命令名,exe是二进制路径
用 asciinema 做轻量级交互式录制(适合快速验证)
asciinema 生成 JSON 格式录像,支持 Web 播放、命令搜索、分享链接,对运维协作和培训很实用,但需用户主动触发或配合 shell 初始化脚本。
- 安装:
yum install asciinema(CentOS/RHEL)或apt install asciinema(Debian/Ubuntu) - 录制:
asciinema rec -c "/bin/bash" /var/log/audit/$(whoami)_$(date +%s).cast - 回放:
asciinema play /var/log/audit/john_1718151540.cast,也可上传至 asciinema.org - 如需自动录制,可在用户
.bashrc中加判断逻辑,但仅对交互式 bash 有效,不覆盖ssh user@host cmd场景
用 pam_tty_audit 配合 auditd 审计原始输入流
该模块只记录用户在终端敲下的每一个字符(不含输出),适用于强合规场景,比如金融、政务系统对“操作过程”的原始留痕要求。
- 确认模块存在:
ls /lib64/security/pam_tty_audit.so;auditd 必须已启用并运行 - 编辑
/etc/pam.d/sshd,在session段插入:session required pam_tty_audit.so enable=* - 生效后新 SSH 会话即被审计,日志由 auditd 写入
/var/log/audit/audit.log - 查记录用:
ausearch -m TTY -i | tail -20,按用户查:ausearch -m TTY -ui $(id -u username) -i











