搜索

记录会话

download PDF
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 解决方案的信息。

对红帽文档提供反馈

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

通过 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 进行身份验证,您可以在命令行中为用户和组群配置会话记录。

流程

  1. 打开 sssd-session-recording.conf 配置文件:

    # vi /etc/sssd/conf.d/sssd-session-recording.conf
    注意

    在 web 控制台界面中打开配置页面后,sssd-session-recording.conf 文件会自动创建。

  2. 要指定会话记录的范围,请为范围选项输入以下值之一:

    • none 不记录任何会话。
    • some 仅记录指定会话。
    • all 记录所有会话。
  3. 可选:如果您将范围设置为以逗号分隔列表中添加用户和组的名称。
  4. 要启用 SSSD 配置集,请运行以下命令:

    # authselect select sssd with-files-domain

例 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 章 使用 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 控制台界面中查看和播放记录。

先决条件

流程

  1. 创建一个包含以下内容的 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 值指定您只想记录某些用户和组,而不是 allnone
    tlog_users_sssd:: <list_of_users>
    要从其中记录会话的用户的 YAML 列表。请注意,如果角色不存在,则不会添加用户。
  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml

    请注意,这个命令只验证语法,不会防止错误但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml

验证

  1. 检查 SSSD 置入文件的内容:

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

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

  2. 以记录会话的用户身份登录。
  3. 回放记录的会话

其它资源

  • /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_sssdtlog_exclude_groups_sssd 角色变量排除用户或组记录其会话并记录在 systemd 日志中。

playbook 安装 tlog-rec-session,它是一个终端会话 I/O 日志记录程序,它充当用户的登录 shell。该角色会创建一个 SSSD 配置丢弃文件,此文件定义应使用登录 shell 的用户和组。另外,如果系统上安装了 cockpit 软件包,playbook 也会安装 cockpit-session-recording 软件包,它是一个 Cockpit 模块,供您在 web 控制台界面中查看和播放记录。

先决条件

流程

  1. 创建一个包含以下内容的 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 列表。
  2. 验证 playbook 语法:

    $ ansible-playbook --syntax-check ~/playbook.yml

    请注意,这个命令只验证语法,不会防止错误但有效的配置。

  3. 运行 playbook:

    $ ansible-playbook ~/playbook.yml

验证

  1. 检查 SSSD 置入文件的内容:

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

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

  2. 以记录会话的用户身份登录。
  3. 回放记录的会话

其它资源

  • /usr/share/ansible/roles/rhel-system-roles.tlog/README.md file
  • /usr/share/doc/rhel-system-roles/tlog/ directory

法律通告

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.
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.