会话视图

编辑

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

会话视图具有以下功能

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

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

启用会话视图数据

编辑

会话视图使用 Elastic Defend 集成收集的进程数据,但默认情况下并非始终收集此数据。要确认已启用会话视图数据

  1. 在导航菜单中查找策略,或使用全局搜索字段
  2. 选择一个或多个 Elastic Defend 集成策略进行编辑。
  3. 选择策略设置选项卡,然后向下滚动到页面底部的 Linux 事件收集部分。
  4. 选中进程事件的复选框,然后打开收集会话数据切换开关。
  5. 如果要在会话视图中包含文件和网络警报,请选中网络文件事件的复选框。
  6. 如果要启用终端输出捕获,请打开捕获终端输出切换开关。

会话视图只能显示启用收集会话数据时 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
  • 执行用户更改徽章突出显示执行用户更改,例如用户升级到 root 时

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

    The Output badge

终端输出视图 UI

编辑

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

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

要启用终端输出数据捕获

  1. 在导航菜单中查找策略,或使用全局搜索字段
  2. 选择一个或多个 Elastic Defend 集成策略进行编辑。
  3. 策略设置选项卡上,向下滚动到页面底部的 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 实例而匹配一个大型的多行日志文件,而不会识别该实例出现在文件中的哪个位置。