会话视图编辑

会话视图是一个调查工具,允许您以树状结构查看 Linux 进程数据,这些数据根据 Linux 逻辑事件模型进行组织,其中进程按父级和执行时间进行组织。它以一种易于阅读的格式显示事件,灵感来自终端。这使得它成为监控和调查 Linux 基础设施上的会话活动以及了解用户和服务行为的强大工具。

会话视图显示:编辑
  • 交互式和非交互式进程: 具有或不具有控制终端的进程和服务。
  • 用户信息: 执行每个会话或进程的 Linux 用户,以及任何 exec 用户更改。
  • 进程和事件遥测: 包含在 Linux 逻辑事件模型中的进程信息。
  • 嵌套会话: 由来自入口会话的后代进程启动的会话。
  • 警报: 在导致它们的事件上下文中出现的进程、文件和网络警报。
  • 终端输出: 与会话中每个进程相关的终端输出。

要查看来自 Kubernetes 基础设施的 Linux 会话数据,您需要设置 Kubernetes 仪表盘

启用会话视图数据编辑

会话视图使用 Elastic Defend 集成收集的进程数据,但此数据并不总是默认收集。要确认会话视图数据已启用

  1. 转到 管理策略,并编辑一个或多个 Elastic Defend 集成策略。
  2. 选择 策略设置 选项卡,然后向下滚动到页面底部附近的 Linux 事件收集部分。
  3. 选中 进程 事件的复选框,并打开 收集会话数据 开关。
  4. 如果要将文件和网络警报包含在会话视图中,请选中 网络文件 事件的复选框。
  5. 如果要启用终端输出捕获,请打开 捕获终端输出 开关。

会话视图只能显示 Elastic Defend 在 收集会话数据 启用时收集的数据。启用此设置时,Elastic Defend 会在捕获的进程、文件和网络事件中包含额外的进程上下文数据。有关启用此设置时收集的附加字段的更多信息,请参阅 Linux 事件模型 RFC

打开会话视图编辑

会话视图可从 主机警报时间线 页面以及警报详细信息弹出窗口和 Kubernetes 仪表盘访问。您可以在会话视图中调查的事件和会话在 操作 列中有一个矩形的 打开会话视图 按钮。例如

  • 在警报页面上,向下滚动以查看警报表格。查找在 操作 列中具有 打开会话视图 按钮的警报

    Detail of the Open Session View button
  • 在主机页面 (浏览主机) 上,选择 会话事件 选项卡。从这两个选项卡中的任何一个,单击事件或会话的 打开会话视图 按钮。

会话视图 UI编辑

会话视图 UI 具有以下功能

Detail of Session view with labeled UI elements
  1. 关闭会话全屏 按钮。
  2. 搜索栏。使用它在当前会话中查找和突出显示搜索词。左右箭头可让您在搜索结果中导航。
  3. 显示设置 按钮。单击以切换时间戳和详细模式。启用详细模式后,会话视图将显示会话中创建的所有进程,包括 shell 启动、shell 完成以及内置命令引起的 fork。它默认设置为 关闭,以突出显示最有可能由用户生成且不标准的数据。
  4. 详细信息面板 按钮。单击它以切换详细信息面板,该面板显示在按钮下方,并显示有关所选进程的祖先和主机以及任何相关警报的各种其他信息。要选择会话视图中的进程,请单击它。
  5. 启动进程。在此示例中,它显示会话是一个 bash 会话。它还显示 Linux 用户“Ubuntu”启动了该会话。
  6. 子进程 按钮。单击以展开或折叠进程的子级。您还可以展开在出现时折叠的警报和脚本。折叠的进程将在其内容与搜索匹配时自动展开。
  7. 警报 按钮。单击以显示由父进程引起的警报。在此示例中,(2) 表示有两个警报。请注意导致警报的事件左侧的红线。由该事件引起的两个警报都是 进程 警报,如齿轮图标所示。
  8. 终端输出 按钮。将鼠标悬停以查看从会话中捕获了多少输出数据。单击以打开终端输出视图,该视图将在下面详细介绍。
  9. 刷新会话 按钮。单击以检查当前会话是否有任何新数据。

会话视图包括上面未显示的其他徽章

  • 当单个事件导致多种类型的警报时,会出现多个警报的警报徽章 (齿轮图标 用于 进程 警报,页面图标 用于 文件 警报,页面图标 用于 网络 警报)

    The alert badge for a command with all three alert types
  • Exec 用户更改 徽章突出显示 exec 用户更改,例如当用户升级到 root 时

    The Exec user change badge
  • 输出 徽章出现在生成终端输出的命令旁边。单击它以在终端输出视图中查看该命令的输出。

    The Output badge

终端输出视图 UI编辑

一般来说,终端输出是在交互式 Linux shell 会话中出现的文本。这通常包括用户输入的文本(终端输入),它以输出形式出现以方便编辑命令,以及执行程序的文本输出。在某些情况下,例如密码输入,终端输入不会作为输出捕获。

从安全角度来看,终端输出很重要,因为它提供了一种数据泄露手段。例如,像 cat tls-private-key.pem 这样的命令可以输出 Web 服务器的私钥。因此,终端输出视图可以帮助您更好地了解用户或攻击者执行的命令,并协助审核和合规。

要启用终端输出数据捕获

  1. 转到 管理策略,然后选择一个或多个 Elastic Defend 集成策略以进行编辑。
  2. 策略设置 选项卡上,向下滚动到页面底部附近的 Linux 事件收集部分,并选择 收集会话数据捕获终端输出 选项。

您可以通过单击页面底部的 高级设置 来配置几个其他设置

  • linux.advanced.tty_io.max_kilobytes_per_process:从单个进程记录的输出的最大千字节数。默认值:512 KB。超过此值的进程输出将不会被记录。
  • linux.advanced.tty_io.max_kilobytes_per_event:作为单个事件发送到 Elasticsearch 的输出的最大千字节数。默认值:512 KB。其他数据作为新事件捕获。
  • linux.advanced.tty_io.max_event_interval_seconds:输出进行批处理的最大间隔(以秒为单位)。默认值:30 秒。输出将在此间隔内发送到 Elasticsearch(除非它首先超过 max_kilobytes_per_event 值,在这种情况下,它可能会更快发送)。
Terminal output view
  1. 搜索栏。使用它在当前会话中查找和突出显示搜索词。左右箭头可让您在搜索结果中导航。
  2. 右侧滚动条。与底部滚动条一起使用以浏览无法在一屏上显示的输出数据。
  3. 播放控件和进度条。使用它来前进或倒退会话的命令和输出。单击进度条上的任何位置以跳转到会话的该部分。条形图上的标记代表生成输出的进程。单击它们或 上一个下一个 按钮以在进程之间跳过。
  4. 适合屏幕放大缩小 按钮。用于调整文本大小。

使用会话视图的 全屏 按钮(位于 关闭会话查看器 按钮旁边)以更好地适合具有长行的输出,例如对于像 vim 这样的图形程序。

终端输出的搜索和警报限制编辑

在基于终端输出数据构建规则之前,您应该了解几个当前的限制

  • 出现在 process.io.text 字段中的终端输出包括 ANSI 代码,这些代码表示除其他事项外,文本颜色、文本粗细和转义序列。这可能会阻止 EKS 查询按预期匹配。此数据的查询将在匹配单个单词时比匹配更复杂的字符串更成功。
  • 此数据的查询应包括前导和尾随通配符(例如 process where process.io.text : "*sudo*"),因为输出事件通常包含多行输出。
  • 终端输出视图中内置的搜索功能也受到类似限制。例如,如果用户不小心输入了sdo而不是sudo,然后按了两次退格键来修正错字,则记录的输出将为sdo\b\budo。这将在终端输出视图中显示为sudo,但搜索终端输出视图中的sudo将不会匹配。
  • 看似连续的输出可能会由于上述高级设置而被分成多个事件,这可能会阻止查询或搜索按预期匹配。
  • 基于输出数据的规则将识别哪个输出事件的process.io.text值与警报查询匹配,而不会识别该值的哪个特定部分匹配。例如,规则查询process.io.text: "*test*"可能会由于test的单个实例而匹配一个大型的多行日志文件,而不会识别该实例在文件中的位置。