Tlog 是开源 Linux 终端会话记录工具,支持 SSH/本地操作全量捕获与高保真回放,适用于审计合规;通过 systemd-journald 或文件持久化,不依赖 shell 历史;安装后需配置 SSH ForceCommand 并保护日志权限。

Tlog 是一款开源的 Linux 终端会话记录工具,能完整捕获用户在 SSH 或本地终端中的操作行为(包括命令输入、输出、时间戳、TTY 设备等),并支持高保真回放,适用于审计、安全合规和故障复盘场景。它不依赖 shell 历史(~/.bash_history),而是通过系统级日志机制(如 systemd-journald 或文件)持久化记录,安全性与可靠性更高。
安装 Tlog
不同发行版安装方式略有差异,推荐优先使用系统包管理器:
-
RHEL/CentOS 8+ / Rocky/AlmaLinux:运行
sudo dnf install tlog -
Ubuntu/Debian(20.04+):执行
sudo apt update && sudo apt install tlog -
源码编译(通用):从 GitHub 仓库 下载源码,需提前安装
autoconf automake libtool pkg-config libjson-c-dev libsystemd-dev等构建依赖,再依次执行./autogen.sh && ./configure && make && sudo make install
安装后验证:运行 tlog-rec --version 和 tlog-play --version 确认二进制可用。
配置 SSH 会话自动记录
让所有 SSH 登录用户自动启用 Tlog 记录,需修改 SSH 服务配置和用户 shell:
- 编辑
/etc/ssh/sshd_config,确保含ForceCommand /usr/bin/tlog-rec(或对应路径),该配置强制所有 SSH 连接经由tlog-rec启动 - 重启 SSH 服务:
sudo systemctl restart sshd(或sshd,取决于系统) - 可选增强:为避免绕过,将用户默认 shell 替换为
/usr/bin/tlog-rec(需提前确认兼容性),例如用sudo usermod -s /usr/bin/tlog-rec username - 记录目标默认写入 systemd journal;如需存为文件,创建
/etc/tlog/conf.d/10-output.conf并添加:{"output": {"type": "file", "path": "/var/log/tlog/%Y-%m-%d-%h-%u.json"}}
查看与回放操作录像
Tlog 录像本质是结构化 JSON 日志,回放需借助 tlog-play 工具:
-
从 journal 回放指定用户最近一次会话:
sudo tlog-play -u username -
回放某次具体会话(按 ID):先查 ID:
journalctl _COMM=tlog-rec -o json | jq -r '.SYSLOG_IDENTIFIER + " " + .MESSAGE' | grep username,再用tlog-play -I SESSION_ID -
回放本地 JSON 文件:
tlog-play -f /var/log/tlog/2024-06-15-14-john.json - 回放时支持快捷键:空格暂停/继续,
↑↓调整播放速度,q退出
权限与审计注意事项
Tlog 记录本身需受保护,防止篡改或删除:
- 确保日志目录(如
/var/log/tlog/)权限为750,属主为root:adm或专用日志组 - 若使用 journal,启用持久化日志:
sudo mkdir -p /var/log/journal,再sudo systemctl restart systemd-journald - 审计人员应使用独立账号查看日志,避免共用 root;建议配合
sudo日志(/var/log/auth.log或 journal 中sudo单元)交叉验证 - 注意隐私:Tlog 默认记录全部输出(含密码明文),生产环境应禁用
echo敏感命令(如mysql -u root -p),改用配置文件或环境变量传参


















