记录会话
在 Red Hat Enterprise Linux 8 中使用 Session Recording
摘要
对红帽文档提供反馈
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 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
记录所有会话。
-
-
可选:如果您将范围设置为以逗号分隔列表中添加用户和组的名称。
要启用 SSSD 配置集,请运行以下命令:
# authselect select sssd with-files-domain
例 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 章 使用 RHEL 系统角色配置系统以进行会话记录
使用 tlog
RHEL 系统角色以自动方式记录和监控受管节点上的终端会话活动。您可以使用 SSSD
服务将记录配置为为每个用户或用户组进行。
tlog RHEL 系统角色中的会话记录解决方案由以下组件组成:
-
tlog
工具 - 系统安全性服务守护进程(SSSD)
- 可选: Web 控制台界面
4.1. 使用 tlog
RHEL 系统角色为单个用户配置会话记录
准备并应用 Ansible playbook,来配置 RHEL 系统,将数据记录到 systemd
日志。
因此,您可以在用户在控制台中登录或 SSH 时,启用记录特定用户的终端输出和输入。
playbook 安装 tlog-rec-session
,它是一个终端会话 I/O 日志记录程序,它充当用户的登录 shell。该角色会创建一个 SSSD 配置丢弃文件,此文件定义应使用登录 shell 的用户和组。另外,如果系统上安装了 cockpit
软件包,playbook 也会安装 cockpit-session-recording
软件包,它是一个 Cockpit
模块,供您在 web 控制台界面中查看和播放记录。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:--- - name: Deploy session recording hosts: managed-node-01.example.com tasks: - name: Enable session recording for specific users ansible.builtin.include_role: name: rhel-system-roles.tlog vars: tlog_scope_sssd: some tlog_users_sssd: - <recorded_user>
tlog_scope_sssd: <value>
-
some
值指定您只想记录某些用户和组,而不是all
或none
。 tlog_users_sssd:: <list_of_users>
- 要从其中记录会话的用户的 YAML 列表。请注意,如果角色不存在,则不会添加用户。
验证 playbook 语法:
$ ansible-playbook --syntax-check ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook ~/playbook.yml
验证
检查 SSSD 置入文件的内容:
# cat cd /etc/sssd/conf.d/sssd-session-recording.conf
您可以看到该文件包含您在 playbook 中设置的参数。
- 以记录会话的用户身份登录。
- 回放记录的会话。
其它资源
-
/usr/share/ansible/roles/rhel-system-roles.tlog/README.md
file -
/usr/share/doc/rhel-system-roles/tlog/
directory
4.2. 使用 tlog
RHEL 系统角色将某些用户和组从会话记录中排除
您可以使用 tlog
RHEL 系统角色中的 tlog_exclude_users_sssd
和 tlog_exclude_groups_sssd
角色变量排除用户或组记录其会话并记录在 systemd
日志中。
playbook 安装 tlog-rec-session
,它是一个终端会话 I/O 日志记录程序,它充当用户的登录 shell。该角色会创建一个 SSSD 配置丢弃文件,此文件定义应使用登录 shell 的用户和组。另外,如果系统上安装了 cockpit
软件包,playbook 也会安装 cockpit-session-recording
软件包,它是一个 Cockpit
模块,供您在 web 控制台界面中查看和播放记录。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:--- - name: Deploy session recording excluding users and groups hosts: managed-node-01.example.com tasks: - name: Exclude users and groups ansible.builtin.include_role: name: rhel-system-roles.tlog vars: tlog_scope_sssd: all tlog_exclude_users_sssd: - jeff - james tlog_exclude_groups_sssd: - admins
tlog_scope_sssd: <value>
-
all
值指定您要记录所有用户和组。 tlog_exclude_users_sssd: <user_list>
- 要从会话记录中排除的用户用户名的 YAML 列表。
tlog_exclude_groups_sssd: <group_list>
- 要从会话记录中排除的组 YAML 列表。
验证 playbook 语法:
$ ansible-playbook --syntax-check ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook ~/playbook.yml
验证
检查 SSSD 置入文件的内容:
# cat cd /etc/sssd/conf.d/sssd-session-recording.conf
您可以看到该文件包含您在 playbook 中设置的参数。
- 以记录会话的用户身份登录。
- 回放记录的会话。
其它资源
-
/usr/share/ansible/roles/rhel-system-roles.tlog/README.md
file -
/usr/share/doc/rhel-system-roles/tlog/
directory