Osquery
编辑Osquery
编辑Osquery 是一个开源工具,允许您像数据库一样查询操作系统,从而使您可以了解您的基础设施和操作系统。使用基本的 SQL 命令,您可以询问有关设备(例如服务器、Docker 容器以及运行 Linux、macOS 或 Windows 的计算机)的问题。广泛的架构有助于各种用例,包括漏洞检测、合规性监控、事件调查等。
使用 Kibana 中的 Osquery,您可以
- 为一个或多个代理运行实时查询
- 安排查询包以捕获操作系统状态随时间的变化
- 查看过去查询及其结果的历史记录
- 保存查询并为特定用例构建查询库
Kibana 中的 Osquery 由 Osquery Manager 集成提供支持。有关如何设置 Osquery Manager 的信息,请参阅 管理集成。
所需权限
编辑要使用 Osquery Manager,您必须被分配到具有以下权限的角色
-
logs-osquery_manager.result*
索引的读取
权限。 - 用于 Osquery Manager 的 Kibana 权限。
全部
权限使您可以运行、安排和保存查询。读取
权限使您可以查看实时和计划的查询结果,但您无法运行实时查询或进行编辑。
运行实时查询
编辑要检查主机,请针对一个或多个代理或策略运行查询,然后查看结果。
- 使用导航菜单或 全局搜索字段转到 Osquery。
- 在 实时查询 视图中,单击 新建实时查询。
- 选择运行单个查询或查询包。
- 选择要查询的一个或多个代理或组。在搜索字段中开始键入,您将获得按名称、ID、平台和策略列出的代理建议。
-
指定要运行的查询或包
-
查询:选择一个已保存的查询或在文本框中输入一个新的查询。输入查询后,您可以展开 高级 部分,以设置查询的超时时间,并查看或设置实时查询结果中包含的 映射的 ECS 字段(可选)。
覆盖查询的默认超时时间,可以支持需要更长时间才能完成的查询。超时字段的默认值和支持的最小值是
60
。支持的最大值是900
。 -
包:从可用的查询包中选择。选择一个包后,将显示该包中的所有查询。
请参阅 预构建包,了解有关使用和管理 Elastic 预构建包的信息。
-
-
单击 提交。
要保存单个查询以供将来使用,请单击 保存以供以后使用,并定义 ID、描述和其他 详细信息。
-
查看结果并执行以下任何操作
- 单击 在 Discover 中查看 () 以在 Discover 中浏览结果。
- 单击 在 Lens 中查看 () 以导航到 Lens,您可以在其中使用拖放式 Lens 编辑器创建可视化效果。
- 单击 添加到案例 () 以将查询结果添加到新的或现有的案例中。
- 单击查看详细信息图标 () 以检查查询 ID 和语句。
- 要查看有关请求的更多信息(例如失败),请打开 状态 选项卡。
查看或重新运行以前的实时查询
编辑实时查询历史记录 部分(在 实时查询 选项卡上)显示过去 30 天运行的查询日志。在“实时查询”表中,您可以
使用包计划查询
编辑包是一组执行类似功能或解决常见用例的分组查询。可下载的预构建 Elastic 包可以帮助您开始使用 Osquery 集成。
您还可以创建一个包含一个或多个查询的自定义包。例如,在创建自定义包时,您可能会创建一个检查 IT 合规性类型问题的包,以及另一个监视恶意软件证据的包。
您可以将包作为实时查询运行,或安排包为一个或多个代理策略运行。计划后,包中的查询将按为这些策略中的所有代理设置的时间间隔运行。
- 单击 包 选项卡。
- 单击 添加包 以创建新包,或单击现有包的名称,然后单击 编辑 以向现有包添加查询。
- 提供包的名称。简短描述是可选的。
-
安排该包部署在指定的代理策略(策略)或所有代理策略(全局)上。
包部署详细信息存储在 Osquery 配置中。
分片
字段值是策略中使用该包的代理的百分比。如果您选择 策略 选项,请配置以下字段
在定义包部署详细信息时,您不能多次配置同一策略。换句话说,指定策略后,您可以选择将包部署到该策略的所有代理,或者仅部署到一部分代理。您不能同时选择两者。
- 计划的 Elastic Agent 策略(可选):允许您将包部署到特定的代理策略。默认情况下,该包将部署到注册到您定义的策略的所有 Elastic Agent。
- 部分部署(分片):允许您将包部署到每个指定代理策略中的一部分代理。定义策略后,使用 分片 滑块设置要将包部署到的代理数量。例如,指定策略后,您可以通过在滑块上选择 50% 来选择将包部署到策略中一半的代理。
-
如果要创建新包,请添加要计划的查询
-
单击 添加查询,然后添加已保存的查询或输入新的查询。每个查询都必须包含唯一的查询 ID 和应运行的间隔。您可以选择设置最低 Osquery 版本和平台、指定超时时间或 映射 ECS 字段。将已保存的查询添加到包时,这将添加查询的副本。已保存的查询和包之间不维护连接。
覆盖查询的默认超时时间,可以支持需要更长时间才能完成的查询。超时字段的默认值和支持的最小值是
60
。支持的最大值是900
。 - 通过将包拖到查询表下的放置区,从
.conf
查询包上载查询。要浏览 Osquery 发布的社区包,请单击 示例包。
-
- 单击 保存包。策略收到更新后,查询将运行。
查看计划包的状态
编辑保存查询
编辑您可以通过两种方式保存查询
- 运行实时查询后,单击 保存以供以后使用 链接。
- 从 已保存的查询 选项卡中,单击 添加已保存的查询。
保存查询后,您只能从 已保存的查询 选项卡中编辑该查询
- 转到 已保存的查询,然后单击 添加已保存的查询 或编辑图标。
-
提供以下字段
- 唯一标识符(必填)。
- 简短描述。
- SQL 查询(必填)。Osquery 支持多行查询。
- 超时时间(可选)。增加查询的默认超时时间以支持需要更长时间才能完成的查询。 超时字段的默认值和支持的最小值是
60
。支持的最大值是900
。 - 查询运行时要填充的 ECS 字段(可选)。将此查询添加到包时,这些字段也会被复制。
-
将查询添加到包时要设置的默认值。
- 运行查询的频率。
- 运行查询所需的最低 Osquery 版本。
- 运行查询所需的操作系统。有关每个表支持的平台的信息,请参阅 Osquery 架构。
-
单击 测试配置 以测试查询和任何映射的字段
- 从 测试查询 面板中,选择要测试查询的代理或组,然后单击 提交 以运行实时查询。具有 图标的结果列已映射。将鼠标悬停在图标上以查看映射的 ECS 字段。
- 单击 保存 或 更新。
预构建的 Elastic 包和查询
编辑预构建的 Osquery 包包含在集成中。添加包后,您可以激活并计划它。
预构建包
编辑预构建的 Osquery 包包含在集成中,可以选择加载。添加后,您可以激活并计划这些包。
您可以修改预构建包的计划代理策略,但无法编辑包中的查询。要编辑查询,您必须先创建包的副本。
有关可用的预构建包的信息,请参阅预构建包参考。
加载和激活预构建的 Elastic 包
编辑按照以下步骤加载并开启新的或更新的预构建包
- 转到包,然后单击加载 Elastic 预构建包。
-
对于要激活和计划的每个包
-
打开活动切换开关以确保包持续运行。
您必须手动运行未激活的包。
- 单击包名称,然后单击编辑。
- 更新计划的代理策略以指定此包应在何处运行的策略。
-
- 单击更新包。
复制预构建的 Elastic 包
编辑要修改预构建包中的查询,您必须首先创建包的副本。
- 转到堆栈管理 → 已保存的对象。
- 按名称搜索要修改的 Osquery 包。
- 选择要导出的包的复选框。
- 单击导出 x 个对象。
- 单击导入。
- 选择导入选项创建具有随机 ID 的新对象,然后单击导入以导入该包。这将创建您可以编辑的包的副本。
预构建查询
编辑集成中包含一组已保存的查询,可作为实时查询运行。请注意以下关于预构建查询的信息
- 这些查询不可编辑。
- 其中几个查询包含默认的 ECS 映射,以标准化结果。
- 预构建的 Elastic 查询都遵循相同的命名约定,并标识正在查询的信息类型、它支持的操作系统(如果仅限于一个或多个),以及这些是 Elastic 查询。例如,
firewall_rules_windows_elastic
。
将结果字段映射到 ECS
编辑当您保存查询或将查询添加到包时,您可以选择将 Osquery 结果或静态值映射到Elastic Common Schema (ECS) 中的字段。这可以标准化您的 Osquery 数据,以便在检测、机器学习以及任何其他依赖于符合 ECS 的数据的领域中使用。当查询运行时,结果将包括原始的 osquery.<fields>
和映射的 ECS 字段。例如,如果您更新查询以将 osquery.name
映射到 user.name
,则查询结果将同时包含这两个字段。
-
编辑已保存的查询或包中的查询以映射字段
- 对于已保存的查询:打开已保存的查询选项卡,然后单击要映射的查询的编辑图标。
- 对于包:打开包选项卡,编辑一个包,然后单击要映射的查询的编辑图标。
- 在ECS 映射部分中,选择要映射的ECS 字段。
-
在值列中,使用左侧的下拉菜单选择要映射到 ECS 字段的值类型
- Osquery 值:选择一个 Osquery 字段。可用的字段基于输入的 SQL 查询,并且仅包括查询返回的字段。当查询运行时,ECS 字段将动态设置为所选 Osquery 字段的值。
-
静态值:输入一个静态值。当查询运行时,ECS 字段将设置为输入的值。例如,可以使用静态字段将
tags
或您首选的event.category
应用于查询结果。
- 根据需要映射更多字段。要删除任何已映射的行,请单击删除图标。
- 保存您的更改。
- 某些 ECS 字段受到限制,无法映射。这些字段在 ECS 下拉列表中不可用。
- 某些 ECS 字段被限制为一组允许的值,例如event.category。在映射字段时,请使用ECS 字段参考获取帮助。
- Osquery 日期字段具有多种数据类型(包括整数、文本或 bigint)。将 Osquery 日期字段映射到 ECS 日期字段时,您可能需要在查询中使用 SQL 运算符来获取 Elasticsearch 兼容的日期类型。
Kubernetes 查询的扩展表
编辑除了 Osquery 模式之外,Elastic 提供的 Osquery 版本还包括以下表,以支持 Kubernetes 容器。可以使用实时或计划查询来查询这些表。
-
host_users
-
host_groups
-
host_processes
查询这些表时,期望 /etc/passwd
、/etc/group
和 /proc
在容器中以 /hostfs
的形式可用:/hostfs/etc/passwd
、/hostfs/etc/group
和 /hostfs/proc
。有关这些表中可用字段的信息,请参阅导出的字段参考。
Osquery 状态
编辑查询可以具有以下状态
成功 |
查询已成功完成。 |
失败 |
查询遇到问题,例如查询问题或代理已断开连接,并且可能已失败。 |
尚未响应 |
查询尚未发送到代理。 |
已过期 |
操作请求超时。代理可能处于脱机状态。 |
如果代理处于脱机状态,则当 Kibana 重试请求时,请求状态将保持待定。默认情况下,查询请求在一分钟后超时。当查询未在该间隔内完成时,将返回操作超时错误。
Osquery 结果
编辑当您运行实时或计划查询时,结果会自动存储在 Elasticsearch 索引中,以便您可以在 Kibana 中搜索、分析和可视化此数据。有关查询结果中可以返回的 Osquery 字段列表,请参阅导出的字段。如果查询定义了 ECS 映射,则查询结果还可以包括 ECS 字段。
Osquery 响应包括以下信息
- 以
osquery.
开头的所有内容都是查询响应的一部分。默认情况下,这些字段不会映射到 ECS。 - 结果默认包括一些 ECS 字段,例如
host.*
和agent.*
,它们提供有关被查询的主机的信息。 - 对于实时查询,
action_data.query
是发送的查询。 - 对于包中的计划查询,
action_id
的格式为pack_<pack-name>_<query-ID>
。您可以使用此信息来查找运行的查询。 - 默认情况下,所有查询结果都是快照日志,表示某个时间点的结果集,没有差异。
- Osquery 数据存储在
logs-osquery_manager.result-<namespace>
数据流中,结果行数据位于文档中的osquery
属性下。