Red Hat Training
A Red Hat training course is available for RHEL 8
记录会话
在 Red Hat Enterprise Linux 8 中使用 Session Recording
摘要
使开源包含更多
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。如需了解更多详细信息,请参阅 CTO Chris Wright 信息。
对红帽文档提供反馈
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 单击顶部导航栏中的 Create。
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您的建议以改进。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 RHEL 的 Session Recording 入门
1.1. RHEL 的 Session Recording(会话记录)
Red Hat Enterprise Linux 8 中的 Session Recording 解决方案基于 tlog
软件包。您可以使用 tlog
软件包及其关联的 Web 控制台会话播放器记录和回放用户终端会话。您可以将记录配置为通过 SSSD 服务为每个用户或用户组进行。所有终端输入和输出都会捕获并保存在系统日志中基于文本的格式。
要不截获原始密码和其他敏感信息,终端输入的记录默认禁用。请注意,如果您打开终端输入的记录,则输入的所有密码将以明文形式捕获。
您可以使用此解决方案来审核对安全敏感系统的用户会话,或者在出现安全问题时,检查记录的会话作为分析的一部分。作为管理员,您可以在 RHEL 8 系统中本地配置会话记录。您可以使用 tlog-play
命令从 web 控制台界面或终端查看记录的会话。
1.2. 会话记录的内容
Session Recording 解决方案有三个主要组件: tlog
工具、SSSD 服务和 web 控制台嵌入的用户界面。
- tlog
-
tlog
工具是一个终端输入/输出(I/O)记录和回放程序。它会在用户终端和用户 shell 间插入tlog-rec-session
工具,并记录所有通过 JSON 信息传递的所有工具。 - SSSD
- 系统安全性服务守护进程(SSSD)服务提供一组管理远程目录访问和验证机制的守护进程。在配置会话记录时,您可以使用 SSSD 指定要记录哪些用户或用户组。您可以使用命令行界面(CLI)或者从 RHEL 8 web 控制台界面配置这些设置。
- RHEL 8 web 控制台嵌入的界面
- Session Recording 页面是 RHEL 8 web 控制台界面的一部分,您可以使用它来管理记录的会话。
您需要管理员特权才能访问记录的会话。
1.3. 会话记录的限制
这些是会话记录解决方案的最显著限制。
- root 用户的记录不可靠,因为 root 用户可以绕过记录过程。
-
会话记录不会记录
GNOME 3
图形会话中的终端。不支持在图形会话中记录终端,因为图形会话具有所有终端的单一审计会话 ID,tlog
无法区分终端并防止重复记录。 如果会话记录被配置为记录到
journal
,则记录的用户将看到记录查看系统日志或/var/log/messages
的结果的行为。因为查看会生成日志,然后再在屏幕中打印,从而导致 Session Recording 记录这个动作。这会产生更多记录,并导致大量的输出。您可以使用以下命令来解决这个问题:
# journalctl -f | grep -v 'tlog-rec-session'
您还可以配置 tlog 来限制输出。详情请查看
tlog-rec
或tlog-rec-session
手册页。要记录执行远程访问命令的用户,您必须为目标主机上的该用户配置会话记录。例如,要记录以下远程访问命令,您需要为
客户端
主机上的admin
用户配置会话记录:ssh admin@client rm -f /some/file
-
所有记录都会在重启后丢失,因为
日志
会在 RHEL 8 中默认存储在内存中。要导出记录 ,请参阅将记录的会话导出到文件。
第 2 章 在 RHEL web 控制台中部署 Session Recording
这部分论述了如何在 Red Hat Enterprise Linux web 控制台中部署 Session Recording 解决方案。
要部署 Session Recording 解决方案,您需要安装以下软件包:
-
tlog
- SSSD
-
cockpit-session-recording
2.1. 安装 tlog
安装 tlog
软件包。
流程
使用以下命令:
# yum install tlog
2.2. 安装 cockpit-session-recording
基本 web 控制台软件包是 Red Hat Enterprise Linux 8 的一部分。为了可以使用 Session Recording 解决方案,需要安装 cockpit-session-recording
软件包,并在系统上启动或启用 Web 控制台:
流程
安装
cockpit-session-recording
。# yum install cockpit-session-recording
在系统中启动或启用 Web 控制台:
# systemctl start cockpit.socket # systemctl enable cockpit.socket
或者
# systemctl enable cockpit.socket --now
2.3. 通过 CLI 为用户和组群启用会话记录
如果使用 SSSD 进行身份验证,您可以在命令行中为用户和组群配置会话记录。
流程
打开
sssd-session-recording.conf
配置文件:# vi /etc/sssd/conf.d/sssd-session-recording.conf
注意在 web 控制台界面中打开配置页面后,
sssd-session-recording.conf
文件会自动创建。- 要指定会话记录的范围,请为范围选项输入以下值之一:
-
none
不记录任何会话。 -
some
仅记录指定会话。 all
记录所有会话。-
(可选)如果您将范围设置为
某种程度
,以逗号分隔列表中添加用户和组的名称。
-
(可选)如果您将范围设置为
例 2.1. SSSD 配置
在以下示例中,用户 example1
和 example2
,组 examples
启用了会话记录。
[session_recording] scope = some users = example1, example2 groups = examples
2.4. 通过 Web UI 为用户和组群启用会话记录
如果使用 SSSD 进行身份验证,您可以为 RHEL 8 web 控制台中的用户和组配置会话记录。
流程
-
在浏览器中输入
localhost:9090
或您的 IP 地址 <IP_ADDRESS>:9090
连接到本地的 RHEL 8 web 控制台。 登录到 RHEL 8 web 控制台。
重要您的用户必须具有管理员特权才能查看记录的会话。
- 进入左侧菜单中的 Session Recording 页面。
点右上角的 gear 按钮。
在 SSSD 配置表中设置您的参数。使用逗号分隔用户和组列表。
例 2.2. 配置带有 SSSD 的日志记录用户
2.5. 为没有 SSSD 的用户启用会话记录
红帽不推荐使用这个选项。首选的方法是,通过 SSSD 从命令行界面或直接从 RHEL 8 web 控制台配置记录的用户。
如果您选择手动更改用户的 shell,其工作 shell 将是 tlog-rec-session.conf
配置文件中列出的 shell。
如果您不想使用 SSSD 指定记录的用户或用户组,可以直接将您要记录的用户 shell 改为 /usr/bin/tlog-rec-session
:
更改 shell。
# sudo usermod -s /usr/bin/tlog-rec-session <user_name>
2.6. 将记录的会话导出到一个文件
您可以导出记录的会话及其日志并复制它们。
以下步骤演示了如何导出本地系统中记录的会话。
先决条件
安装
systemd-journal-remote
软件包。# yum install systemd-journal-remote
流程
创建一个目录来存储导出的记录会话,如 '/tmp/dir:
# mkdir /tmp/dir
运行
journalctl -o export
命令导出与 tlog 记录相关的系统日志条目:# journalctl _COMM=tlog-rec _COMM=tlog-rec-sessio -o export | /usr/lib/systemd/systemd-journal-remote -o /tmp/dir/example.journal -
注意由于 15 个字符的限制,
COMM=tlog-rec-sessio
COMM 名称被缩短。
第 3 章 回放记录的会话
有两种回放记录会话的方法:
-
tlog-play
工具 - RHEL 8 web 控制台,也称为 Cockpit。
3.1. 使用 tlog-play
进行回放
您可以使用 tlog-play
工具在终端中播放会话记录。tlog-play
是一个用来回放使用 tlog-rec
工具记录的终端输入和输出的回放工具。它复制了正在运行的终端的记录,但不能改变它的大小。因此,回放终端需要与记录的终端大小匹配才能正确回放。tlog-play
从 /etc/tlog/tlog-play.conf
配置文件加载其参数。您可以使用 tlog-play
手册页中描述的命令行选项覆盖这些参数。
3.2. 使用 Web 控制台回放
RHEL 8 web 控制台有一个管理记录的会话的完整界面。您可以从 Session Recording 页中选择想直接查看会话。记录的会话列表包括在这个页中。
例 3.1. 记录会话列表示例
Web 控制台播放器支持重新定义窗口大小。
3.3. 使用 tlog-play
回放记录的会话
您可以对从导出的日志文件或 Systemd Journal 进行回放的会话记录。
从一个文件进行回放
您可以在记录期间和记录后,从一个文件重新播放一个会话:
# tlog-play --reader=file --file-path=tlog.log
从日志回放
通常,您可以使用 Journal 匹配和时间戳限制为回放选择 Journal 日志条目。包括 -M
或 --journal-match
、-S
或 --journal-since
以及 -U
或 --journal-until
选项。
但在实践情况中,从 Journal 进行的回放通常会针对 TLOG_REC
Journal 字段进行匹配。TLOG_REC
字段包含来自日志 JSON 数据的 rec
字段的副本,这是记录的主机唯一 ID。
您可以直接使用 TLOG_REC
字段的值,或通过 JSON rec
字段中的 MESSAGE
字段获取 ID。这两个字段都是来自 tlog-rec-session
工具的日志消息的一部分。
流程
- 您可以按以下方法回放整个记录:
# tlog-play -r journal -M TLOG_REC=<your-unique-host-id>
您可以在 tlog-play
手册页中找到更多说明和文档。
第 4 章 配置系统以使用 tlog
RHEL 系统角色记录会话记录
使用 tlog
RHEL 系统角色,您可以使用 Red Hat Ansible Automation Platform 为 RHEL 上的终端会话记录配置一个系统。
4.1. tlog
系统角色
您可以使用 tlog
RHEL 系统角色为 RHEL 上的终端会话记录配置 RHEL 系统。
您可以使用 SSSD
服务将记录配置为为每个用户或用户组进行。
其它资源
- 有关 RHEL 中会话记录的详情,请参阅 记录会话。
4.2. tlog
系统角色的组件和参数
Session Recording 的解决方案包括以下组件:
-
tlog
工具 - 系统安全性服务守护进程(SSSD)
- 可选: Web 控制台界面
用于 tlog
RHEL 系统角色的参数有:
角色变量 | 描述 |
---|---|
tlog_use_sssd (default: yes) | 使用 SSSD 配置会话记录,这是管理记录的用户或组的首选方法 |
tlog_scope_sssd (default: none) | 配置 SSSD 记录范围 - all / some / none |
tlog_users_sssd (default: []) | 要记录的用户的 YAML 列表 |
tlog_groups_sssd (default: []) | 要记录的组的 YAML 列表 |
-
有关
tlog
中使用的参数以及tlog
系统角色的附加信息,请查看/usr/share/ansible/roles/rhel-system-roles.tlog/README.md
文件。
4.3. 部署 tlog
RHEL 系统角色
按照以下步骤准备并应用 Ansible playbook,将 RHEL 系统配置为记录会话将数据记录到 systemd 日志中。
先决条件
-
您已设置了 SSH 密钥,用于从控制节点访问将配置
tlog
系统角色的目标系统。 -
您至少有一个要配置
tlog
系统角色的系统。 - Ansible Core 软件包安装在控制机器上。
-
rhel-system-roles
软件包安装在控制机器上。
流程
使用以下内容创建新
playbook.yml
文件:--- - name: Deploy session recording hosts: all vars: tlog_scope_sssd: some tlog_users_sssd: - recorded-user roles: - rhel-system-roles.tlog
其中,
tlog_scope_sssd
:-
some
指定您只记录某些用户和组,而不是全部
用户和组。
-
tlog_users_sssd
:-
recorded-user
指定要记录会话的用户。请注意,这不会为您添加用户。您必须自行设置该用户。
-
另外,还可以验证 playbook 语法。
# ansible-playbook --syntax-check playbook.yml
在清单文件上运行 playbook:
# ansible-playbook -i IP_Address /path/to/file/playbook.yml -v
因此,playbook 会在您指定的系统中安装 tlog
RHEL 系统角色。该角色包括 tlog-rec-session
(终端会话 I/O 日志记录程序),它充当用户的登录 shell。它还创建一个 SSSD 配置丢弃文件,可供您定义的用户和组使用。SSSD 解析并读取这些用户和组,并使用 tlog-rec-session
替换其用户 shell。另外,如果系统上安装了 cockpit
软件包,playbook 也会安装 cockpit-session-recording
软件包,它是一个 Cockpit
模块,供您在 web 控制台界面中查看和播放记录。
验证步骤
要验证 SSSD 配置文件是否在系统中创建了,请执行以下步骤:
进入创建 SSSD 配置丢弃文件的文件夹:
# cd /etc/sssd/conf.d
检查文件内容:
# cat /etc/sssd/conf.d/sssd-session-recording.conf
您可以看到该文件包含您在 playbook 中设置的参数。
4.4. 为排除组或用户列表部署 tlog
RHEL 系统角色
您可以使用 tlog
系统角色支持 SSSD 会话记录配置选项 exclude_users
和 exclude_groups
。按照以下步骤准备和应用 Ansible playbook,以配置 RHEL 系统,以排除用户或组记录其会话并登录 systemd 日志。
先决条件
-
您已设置了从控制节点访问您要配置
tlog
系统角色的目标系统的 SSH 密钥。 -
您至少有一个要在其上配置
tlog
系统角色的系统。 - Ansible Core 软件包安装在控制机器上。
-
rhel-system-roles
软件包安装在控制机器上。
流程
使用以下内容创建新
playbook.yml
文件:--- - name: Deploy session recording excluding users and groups hosts: all vars: tlog_scope_sssd: all tlog_exclude_users_sssd: - jeff - james tlog_exclude_groups_sssd: - admins roles: - rhel-system-roles.tlog
其中,
tlog_scope_sssd
:-
all
:指定您要记录所有用户和组。
-
tlog_exclude_users_sssd
:- 用户名:指定您要从会话记录中排除的用户的用户名。
tlog_exclude_groups_sssd
:-
管理员
指定要从会话记录中排除的组。
-
(可选)验证 playbook 语法;
# ansible-playbook --syntax-check playbook.yml
在清单文件上运行 playbook:
# ansible-playbook -i IP_Address /path/to/file/playbook.yml -v
因此,playbook 会在您指定的系统中安装 tlog
RHEL 系统角色。该角色包括 tlog-rec-session
(终端会话 I/O 日志记录程序),它充当用户的登录 shell。它还会创建一个 /etc/sssd/conf.d/sssd-session-recording.conf
SSSD 配置丢弃文件,供用户和组使用,但您定义为排除的用户和组除外。SSSD 解析并读取这些用户和组,并使用 tlog-rec-session
替换其用户 shell。另外,如果系统上安装了 cockpit
软件包,playbook 也会安装 cockpit-session-recording
软件包,它是一个 Cockpit
模块,供您在 web 控制台界面中查看和播放记录。
验证步骤
要验证 SSSD 配置文件是否在系统中创建了,请执行以下步骤:
进入创建 SSSD 配置丢弃文件的文件夹:
# cd /etc/sssd/conf.d
检查文件内容:
# cat sssd-session-recording.conf
您可以看到该文件包含您在 playbook 中设置的参数。
其它资源
-
请参阅
/usr/share/doc/rhel-system-roles/tlog/
和/usr/share/ansible/roles/rhel-system-roles.tlog/
目录。 - 在 CLI 中使用部署的 Terminal Session Recording 系统角色记录会话。
4.5. 使用在 CLI 中部署的 tlog
系统角色记录会话
在您指定的系统中部署了 tlog
系统角色后,就可以使用命令行界面 (CLI) 记录用户终端会话。
先决条件
-
您已在目标系统中部署了
tlog
系统角色。 -
SSSD 配置丢弃文件在
/etc/sssd/conf.d
目录中创建。请参阅 部署 Terminal Session Recording RHEL 系统角色。
流程
创建一个用户并为这个用户分配密码:
# useradd recorded-user # passwd recorded-user
以您刚才创建的用户身份登录系统:
# ssh recorded-user@localhost
- 当系统提示您输入 yes 或 no 进行身份验证时请输入 "yes"。
插入 record-user 的密码。
系统会显示一条有关记录会话的消息。
ATTENTION! Your session is being recorded!
记录完会话后,请输入:
# exit
系统从用户注销并关闭与本地主机的连接。
用户会话会被记录,并被保存,您可以使用 journal 进行播放。
验证步骤
要在日志中查看您记录的会话,请执行以下步骤:
运行以下命令:
# journalctl -o verbose -r
搜索
tlog-rec
记录的日志条目的MESSAGE
字段。# journalctl -xel _EXE=/usr/bin/tlog-rec-session
4.6. 使用 CLI 监视记录的会话
您可以使用命令行界面(CLI)从日志中执行用户会话记录。
先决条件
- 您已经记录了一个用户会话。请参阅 使用 CLI 中部署的 tlog 系统角色来记录会话。
流程
在 CLI 终端中,播放用户会话记录:
# journalctl -o verbose -r
搜索
tlog
记录:$ /tlog-rec
您可以查看详情,例如:
- 用户会话记录的用户名
-
out_txt
字段,这是记录的会话的原始输出编码 - 标识符号 TLOG_REC=ID_number
- 复制标识符号 TLOG_REC=ID_number。
使用标识符号 TLOG_REC=ID_number 回放记录。
# tlog-play -r journal -M TLOG_REC=ID_number
您可以看到记录的用户会话被回放。