Osquery
编辑Osquery编辑
Osquery 是一款开源工具,允许您像查询数据库一样查询操作系统,从而让您能够洞悉基础设施和操作系统。使用基本的 SQL 命令,您可以询问有关设备的问题,例如服务器、Docker 容器以及运行 Linux、macOS 或 Windows 的计算机。广泛的架构有助于各种用例,包括漏洞检测、合规性监控、事件调查等等。
借助 Kibana 中的 Osquery,您可以
- 对一个或多个代理运行实时查询
- 安排查询包以捕获操作系统状态随时间的变化
- 查看过去查询及其结果的历史记录
- 保存查询并为特定用例构建查询库
Kibana 中的 Osquery 由Osquery 管理器集成提供支持。有关如何设置Osquery 管理器的信息,请参阅管理集成。
所需权限编辑
要使用Osquery 管理器,您必须被分配到具有以下权限的角色
-
读取
logs-osquery_manager.result*
索引的权限。 - Osquery 管理器的 Kibana 权限。
全部
权限允许您运行、安排和保存查询。读取
权限允许您查看实时和已安排的查询结果,但您不能运行实时查询或进行编辑。
运行实时查询编辑
要检查主机,请针对一个或多个代理或策略运行查询,然后查看结果。
- 打开主菜单,然后单击Osquery。
- 在实时查询视图中,单击新建实时查询。
- 选择运行单个查询还是查询包。
- 选择要查询的一个或多个代理或组。开始在搜索字段中键入内容,您将获得按名称、ID、平台和策略建议的代理。
-
指定要运行的查询或包
-
查询:选择已保存的查询或在文本框中输入新的查询。输入查询后,您可以展开高级部分以设置查询的超时时间,以及查看或设置实时查询结果中包含的映射的 ECS 字段(可选)。
覆盖查询的默认超时时间允许您支持需要更多时间才能完成的查询。超时字段的默认和最小支持值为
60
。最大支持值为900
。 -
包:从可用的查询包中选择。选择包后,将显示包中的所有查询。
有关使用和管理 Elastic 预构建包的信息,请参阅预构建包。
-
-
单击提交。
要保存单个查询以供将来使用,请单击保存以供稍后使用并定义 ID、描述和其他详细信息。
-
查看结果并执行以下任一操作
- 单击在 Discover 中查看()以在Discover中浏览结果。
- 单击在 Lens 中查看()以导航到Lens,您可以在其中使用拖放式Lens编辑器创建可视化。
- 单击添加到案例()以将查询结果添加到新的或现有的案例中。
- 单击查看详细信息图标()以检查查询 ID 和语句。
- 要查看有关请求的更多信息,例如失败,请打开状态选项卡。
查看或重新运行以前的实时查询编辑
实时查询选项卡上的实时查询历史记录部分显示了过去 30 天内运行的查询日志。在“实时查询”表中,您可以
使用包安排查询编辑
包是一组执行类似功能或解决常见用例的分组查询。预构建的 Elastic 包可供下载,可以帮助您开始使用 Osquery 集成。
您还可以使用一个或多个查询创建自定义包。例如,在创建自定义包时,您可以创建一个包来检查 IT 合规性类型问题,以及另一个包来监控恶意软件的证据。
您可以将包作为实时查询运行,也可以安排包针对一个或多个代理策略运行。安排后,包中的查询将按照设置的时间间隔为这些策略中的所有代理运行。
- 单击包选项卡。
- 单击添加包以创建新包,或单击现有包的名称,然后单击编辑以将查询添加到现有包。
- 提供包的名称。简短描述是可选的。
-
安排将包部署在指定的代理策略(策略)上或所有代理策略(全局)上。
包部署详细信息存储在Osquery 配置中。
shard
字段值是使用该包的策略中代理的百分比。如果您选择策略选项,请配置以下字段
定义包部署详细信息时,不能多次配置相同的策略。换句话说,指定策略后,您可以选择将包部署到该策略的所有代理,也可以仅部署到一部分代理。您不能同时选择两者。
- 已安排的 Elastic 代理策略(可选):允许您将包部署到特定的代理策略。默认情况下,该包将部署到注册到您定义的策略的所有 Elastic 代理。
- 部分部署(分片):允许您将包部署到每个指定代理策略上的一部分代理。定义策略后,使用分片滑块设置要部署包的代理数量。例如,指定策略后,您可以通过在滑块上选择 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 字段将设置为输入的值。例如,静态字段可用于将
标签
或您首选的event.category
应用于查询结果。
- 根据需要映射更多字段。要删除任何映射的行,请点击删除图标。
- 保存您的更改。
- 某些 ECS 字段受到限制,无法映射。这些在 ECS 下拉菜单中不可用。
- 某些 ECS 字段仅限于一组允许的值,例如 event.category。使用 ECS 字段参考 在映射字段时获取帮助。
- Osquery 日期字段具有多种数据类型(包括整数、文本或大整数)。将 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_<包名称>_<查询 ID>
。您可以使用此信息来查找已运行的查询。 - 默认情况下,所有查询结果都是表示某个时间点的 快照日志,其中包含一组结果,没有 差异。
- Osquery 数据存储在
logs-osquery_manager.result-<命名空间>
数据流中,结果行数据位于文档的osquery
属性下。