Red Hat Training

A Red Hat training course is available for RHEL 8

记录会话

Red Hat Enterprise Linux 8

在 Red Hat Enterprise Linux 8 中使用 Session Recording

Red Hat Customer Content Services

摘要

本文档集合提供了在 Red Hat Enterprise Linux 8 中使用基于 RHEL web 控制台的 tlog 的 Session Recording 解决方案的信息。

使开源包含更多

红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。如需了解更多详细信息,请参阅 CTO Chris Wright 信息

对红帽文档提供反馈

我们感谢您对我们文档的反馈。让我们了解如何改进它。

通过 Jira 提交反馈(需要帐户)

  1. 登录到 Jira 网站。
  2. 单击顶部导航栏中的 Create
  3. Summary 字段中输入描述性标题。
  4. Description 字段中输入您的建议以改进。包括文档相关部分的链接。
  5. 点对话框底部的 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-rectlog-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 控制台:

流程

  1. 安装 cockpit-session-recording

    # yum install cockpit-session-recording
  2. 在系统中启动或启用 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 文件会自动创建。

    1. 要指定会话记录的范围,请为范围选项输入以下值之一:
  • none 不记录任何会话。
  • some 仅记录指定会话。
  • all 记录所有会话。

    1. (可选)如果您将范围设置为 某种程度,以逗号分隔列表中添加用户和组的名称。

例 2.1. SSSD 配置

在以下示例中,用户 example1example2,组 examples 启用了会话记录。

[session_recording]
scope = some
users = example1, example2
groups = examples

2.4. 通过 Web UI 为用户和组群启用会话记录

如果使用 SSSD 进行身份验证,您可以为 RHEL 8 web 控制台中的用户和组配置会话记录。

流程

  1. 在浏览器中输入 localhost:9090 或您的 IP 地址 < IP_ADDRESS>:9090 连接到本地的 RHEL 8 web 控制台。
  2. 登录到 RHEL 8 web 控制台。

    重要

    您的用户必须具有管理员特权才能查看记录的会话。

  3. 进入左侧菜单中的 Session Recording 页面。
  4. 点右上角的 gear 按钮。

    SSSD 配置按钮
  5. 在 SSSD 配置表中设置您的参数。使用逗号分隔用户和组列表。

    例 2.2. 配置带有 SSSD 的日志记录用户

    SSSD 配置

2.5. 为没有 SSSD 的用户启用会话记录

重要

红帽不推荐使用这个选项。首选的方法是,通过 SSSD 从命令行界面或直接从 RHEL 8 web 控制台配置记录的用户。

如果您选择手动更改用户的 shell,其工作 shell 将是 tlog-rec-session.conf 配置文件中列出的 shell。

如果您不想使用 SSSD 指定记录的用户或用户组,可以直接将您要记录的用户 shell 改为 /usr/bin/tlog-rec-session

  1. 更改 shell。

    # sudo usermod -s /usr/bin/tlog-rec-session <user_name>

2.6. 将记录的会话导出到一个文件

您可以导出记录的会话及其日志并复制它们。

以下步骤演示了如何导出本地系统中记录的会话。

先决条件

  • 安装 systemd-journal-remote 软件包。

    # yum install systemd-journal-remote

流程

  1. 创建一个目录来存储导出的记录会话,如 '/tmp/dir:

    # mkdir /tmp/dir
  2. 运行 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 工具的日志消息的一部分。

流程

  1. 您可以按以下方法回放整个记录:
# 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 软件包安装在控制机器上。

流程

  1. 使用以下内容创建新 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 指定要记录会话的用户。请注意,这不会为您添加用户。您必须自行设置该用户。
  2. 另外,还可以验证 playbook 语法。

    # ansible-playbook --syntax-check playbook.yml
  3. 在清单文件上运行 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 配置文件是否在系统中创建了,请执行以下步骤:

  1. 进入创建 SSSD 配置丢弃文件的文件夹:

    # cd /etc/sssd/conf.d
  2. 检查文件内容:

    # cat /etc/sssd/conf.d/sssd-session-recording.conf

您可以看到该文件包含您在 playbook 中设置的参数。

4.4. 为排除组或用户列表部署 tlog RHEL 系统角色

您可以使用 tlog 系统角色支持 SSSD 会话记录配置选项 exclude_usersexclude_groups。按照以下步骤准备和应用 Ansible playbook,以配置 RHEL 系统,以排除用户或组记录其会话并登录 systemd 日志。

先决条件

  • 您已设置了从控制节点访问您要配置 tlog 系统角色的目标系统的 SSH 密钥。
  • 您至少有一个要在其上配置 tlog 系统角色的系统。
  • Ansible Core 软件包安装在控制机器上。
  • rhel-system-roles 软件包安装在控制机器上。

流程

  1. 使用以下内容创建新 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:

      • 管理员 指定要从会话记录中排除的组。
  2. (可选)验证 playbook 语法;

    # ansible-playbook --syntax-check playbook.yml
  3. 在清单文件上运行 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 配置文件是否在系统中创建了,请执行以下步骤:

  1. 进入创建 SSSD 配置丢弃文件的文件夹:

    # cd /etc/sssd/conf.d
  2. 检查文件内容:

    # cat sssd-session-recording.conf

您可以看到该文件包含您在 playbook 中设置的参数。

其它资源

4.5. 使用在 CLI 中部署的 tlog 系统角色记录会话

在您指定的系统中部署了 tlog 系统角色后,就可以使用命令行界面 (CLI) 记录用户终端会话。

先决条件

流程

  1. 创建一个用户并为这个用户分配密码:

    # useradd recorded-user
    # passwd recorded-user
  2. 以您刚才创建的用户身份登录系统:

    # ssh recorded-user@localhost
  3. 当系统提示您输入 yes 或 no 进行身份验证时请输入 "yes"。
  4. 插入 record-user 的密码

    系统会显示一条有关记录会话的消息。

    ATTENTION! Your session is being recorded!
  5. 记录完会话后,请输入:

    # exit

    系统从用户注销并关闭与本地主机的连接。

用户会话会被记录,并被保存,您可以使用 journal 进行播放。

验证步骤

要在日志中查看您记录的会话,请执行以下步骤:

  1. 运行以下命令:

    # journalctl -o verbose -r
  2. 搜索 tlog-rec 记录的日志条目的 MESSAGE 字段。

    # journalctl -xel _EXE=/usr/bin/tlog-rec-session

4.6. 使用 CLI 监视记录的会话

您可以使用命令行界面(CLI)从日志中执行用户会话记录。

先决条件

流程

  1. 在 CLI 终端中,播放用户会话记录:

    # journalctl -o verbose -r
  2. 搜索 tlog 记录:

    $ /tlog-rec

    您可以查看详情,例如:

    • 用户会话记录的用户名
    • out_txt 字段,这是记录的会话的原始输出编码
    • 标识符号 TLOG_REC=ID_number
  3. 复制标识符号 TLOG_REC=ID_number
  4. 使用标识符号 TLOG_REC=ID_number 回放记录。

    # tlog-play -r journal -M TLOG_REC=ID_number

您可以看到记录的用户会话被回放。

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.