会话视图
Elastic Stack Serverless Security
Session View 是一款调查工具,可让您按照 Linux 逻辑事件模型以树状结构检查 Linux 进程数据,并按父子关系和执行时间组织进程。它以受终端启发的、高度可读的格式显示事件。这使其成为监控和调查 Linux 基础架构上的会话活动以及理解用户和服务的行为的强大工具。
确保您拥有相应的 Elastic Stack 订阅 或 Serverless 项目套餐。
Session View 具有以下功能
- 交互式和非交互式进程:具有或不具有控制终端的进程和服务。
- 用户信息:执行每个会话或进程的 Linux 用户,以及任何 exec 用户更改。
- 进程和事件遥测:包含在 Linux 逻辑事件模型中的进程信息。
- 嵌套会话:由进入会话的子进程启动的会话。
- 警报:在导致它们的事件的上下文中,进程、文件和网络警报。
- 终端输出:会话中与每个进程关联的终端输出。
Session View 使用 Elastic Defend 集成收集的进程数据,但此数据并非总是默认收集。要确认 Session View 数据已启用
- 在导航菜单中找到“策略”,或使用 全局搜索字段。
- 选择一个或多个您的 Elastic Defend 集成策略进行编辑。
- 选择“策略设置”选项卡,然后向下滚动到页面底部附近的 Linux 事件收集部分。
- 勾选“进程事件”复选框,然后打开“收集会话数据”切换开关。
- 如果您希望在 Session View 中包含文件和网络警报,请勾选“网络”和“文件”事件复选框。
- 如果您希望启用终端输出捕获,请打开“捕获终端输出”切换开关。
Session View 只能显示 Elastic Defend 在启用“收集会话数据”时收集的数据。启用此设置后,Elastic Defend 会在捕获的进程、文件和网络事件中包含其他进程上下文数据。有关启用此设置时收集的其他字段的更多信息,请参阅 Linux 事件模型 RFC。
Session View 可从“主机”、“警报”和“时间线”页面以及警报详细信息弹出窗口和“Kubernetes”仪表板访问。您可以在 Session View 中调查的事件和会话在“操作”列中有一个矩形的“打开 Session View”按钮。例如
在“警报”页面,向下滚动以查看“警报”表。查找“操作”列中具有“打开 Session View”按钮的警报
在“主机”页面(“探索”→“主机”),选择“会话”或“事件”选项卡。从这两个选项卡中的任何一个,为事件或会话点击“打开 Session View”按钮。
Session View UI 具有以下功能
- “关闭会话”和“全屏”按钮。
- 搜索栏。用于查找和突出显示当前会话中的搜索词。左右箭头允许您在搜索结果之间导航。
- “显示设置”按钮。点击以切换时间戳和详细模式。启用详细模式后,Session View 会显示会话中创建的所有进程,包括 shell 启动、shell 完成和由内置命令引起的 fork。它默认为“关闭”,以突出显示最可能是用户生成和非标准的。数据。
- “详细信息面板”按钮。点击它以切换详细信息面板,该面板出现在按钮下方,并显示有关所选进程的祖先和主机以及任何关联警报的广泛额外信息。要选择 Session View 中的进程,请单击它。
- 启动进程。在此示例中,它显示该会话是一个 bash 会话。它还显示 Linux 用户“Ubuntu”启动了该会话。
- “子进程”按钮。点击以展开或折叠进程的子进程。您还可以展开折叠的警报和脚本(如果它们出现)。当其内容与搜索匹配时,折叠的进程将自动展开。
- “警报”按钮。点击以显示由父进程引起的警报。在此示例中,
(2)表示有两个警报。请注意事件左侧的红线,该事件导致了警报。由此事件引起的两个警报都是进程警报,如齿轮图标所示。 - “终端输出”按钮。将鼠标悬停以查看已从会话捕获了多少输出数据。单击以打开终端输出视图,该视图在下面详细描述。
- “刷新会话”按钮。点击以检查当前会话是否有任何新数据。
Session View 包含其他未在此处显示的徽章
当单个事件导致多种类型的警报时,会出现多个警报的警报徽章(
表示进程警报,
表示文件警报,
表示网络警报)
“Exec 用户更改”徽章突出显示 exec 用户更改,例如用户升级为 root 时
“输出”徽章出现在生成终端输出的命令旁边。单击它可以在终端输出视图中查看该命令的输出。
- 会话输出只能从内核版本 5.10.16 或更高版本且启用了 eBPF 的 Linux 操作系统收集。
一般而言,终端输出是出现在交互式 Linux shell 会话中的文本。这通常包括用户输入的文本(终端输入),这些文本以输出的形式显示以方便编辑命令,以及已执行程序的文本输出。在某些情况下(例如输入密码时),终端输入不会作为输出捕获。
从安全角度来看,终端输出很重要,因为它提供了一种数据泄露的方式。例如,像 cat tls-private-key.pem 这样的命令可能会输出 Web 服务器的私钥。因此,终端输出视图可以增进您对用户或对手执行的命令的理解,并协助审计和合规。
启用终端输出数据捕获
- 在导航菜单中找到“策略”,或使用 全局搜索字段。
- 选择一个或多个您的 Elastic Defend 集成策略进行编辑。
- 在“策略设置”选项卡上,滚动到页面底部附近的 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值,在这种情况下,它可能会更早发送)。
- 搜索栏。用于查找和突出显示当前会话中的搜索词。左右箭头允许您在搜索结果之间导航。
- 右侧滚动条。与底部滚动条一起使用,以导航屏幕上显示不下的输出数据。
- 播放控件和进度条。用于前进或后退会话的命令和输出。单击进度条上的任意位置即可跳转到会话的该部分。条上的标记表示生成了输出的进程。单击它们或“上一个”和“下一个”按钮以在进程之间跳转。
- “适应屏幕”、“放大”和“缩小”按钮。用于调整文本大小。
使用 Session View 的“全屏”按钮(位于“关闭会话查看器”按钮旁边),以更好地适应带有长行的输出,例如对于 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实例而匹配一个大型的多行日志文件,而不会识别该实例在文件中的位置。