Osquery编辑

Osquery 是一款开源工具,允许您像查询数据库一样查询操作系统,从而让您能够洞悉基础设施和操作系统。使用基本的 SQL 命令,您可以询问有关设备的问题,例如服务器、Docker 容器以及运行 Linux、macOS 或 Windows 的计算机。广泛的架构有助于各种用例,包括漏洞检测、合规性监控、事件调查等等。

借助 Kibana 中的 Osquery,您可以

  • 对一个或多个代理运行实时查询
  • 安排查询包以捕获操作系统状态随时间的变化
  • 查看过去查询及其结果的历史记录
  • 保存查询并为特定用例构建查询库

Kibana 中的 Osquery 由Osquery 管理器集成提供支持。有关如何设置Osquery 管理器的信息,请参阅管理集成

所需权限编辑

要使用Osquery 管理器,您必须被分配到具有以下权限的角色

  • 读取logs-osquery_manager.result*索引的权限。
  • Osquery 管理器的 Kibana 权限。全部权限允许您运行、安排和保存查询。读取权限允许您查看实时和已安排的查询结果,但您不能运行实时查询或进行编辑。

运行实时查询编辑

要检查主机,请针对一个或多个代理或策略运行查询,然后查看结果。

  1. 打开主菜单,然后单击Osquery
  2. 实时查询视图中,单击新建实时查询
  3. 选择运行单个查询还是查询包。
  4. 选择要查询的一个或多个代理或组。开始在搜索字段中键入内容,您将获得按名称、ID、平台和策略建议的代理。
  5. 指定要运行的查询或包

    • 查询:选择已保存的查询或在文本框中输入新的查询。输入查询后,您可以展开高级部分以设置查询的超时时间,以及查看或设置实时查询结果中包含的映射的 ECS 字段(可选)。

      覆盖查询的默认超时时间允许您支持需要更多时间才能完成的查询。超时字段的默认和最小支持值为60。最大支持值为900

    • :从可用的查询包中选择。选择包后,将显示包中的所有查询。

      有关使用和管理 Elastic 预构建包的信息,请参阅预构建包

      Select saved query dropdown name showing query name and description
  6. 单击提交

    要保存单个查询以供将来使用,请单击保存以供稍后使用并定义 ID、描述和其他详细信息

  7. 查看结果并执行以下任一操作

    • 单击在 Discover 中查看在 Discover 中查看图标)以在Discover中浏览结果。
    • 单击在 Lens 中查看在 Lens 中查看图标)以导航到Lens,您可以在其中使用拖放式Lens编辑器创建可视化。
    • 单击添加到案例添加到案例图标)以将查询结果添加到新的或现有的案例中。
    • 单击查看详细信息图标(查看详细信息图标)以检查查询 ID 和语句。
  8. 要查看有关请求的更多信息,例如失败,请打开状态选项卡。

查看或重新运行以前的实时查询编辑

实时查询选项卡上的实时查询历史记录部分显示了过去 30 天内运行的查询日志。在“实时查询”表中,您可以

  • 单击运行图标(指向右侧的三角形)以重新运行单个查询或查询包。
  • 单击表图标(表图标)以检查单个查询或查询包的结果。在结果表中,您还可以找到查询状态

    Results of OSquery

使用包安排查询编辑

包是一组执行类似功能或解决常见用例的分组查询。预构建的 Elastic 包可供下载,可以帮助您开始使用 Osquery 集成。

您还可以使用一个或多个查询创建自定义包。例如,在创建自定义包时,您可以创建一个包来检查 IT 合规性类型问题,以及另一个包来监控恶意软件的证据。

您可以将包作为实时查询运行,也可以安排包针对一个或多个代理策略运行。安排后,包中的查询将按照设置的时间间隔为这些策略中的所有代理运行。

  1. 单击选项卡。
  2. 单击添加包以创建新包,或单击现有包的名称,然后单击编辑以将查询添加到现有包。
  3. 提供包的名称。简短描述是可选的。
  4. 安排将包部署在指定的代理策略(策略)上或所有代理策略(全局)上。

    包部署详细信息存储在Osquery 配置中。shard字段值是使用该包的策略中代理的百分比。

    如果您选择策略选项,请配置以下字段

    定义包部署详细信息时,不能多次配置相同的策略。换句话说,指定策略后,您可以选择将包部署到该策略的所有代理,也可以仅部署到一部分代理。您不能同时选择两者。

    • 已安排的 Elastic 代理策略(可选):允许您将包部署到特定的代理策略。默认情况下,该包将部署到注册到您定义的策略的所有 Elastic 代理。
    • 部分部署(分片):允许您将包部署到每个指定代理策略上的一部分代理。定义策略后,使用分片滑块设置要部署包的代理数量。例如,指定策略后,您可以通过在滑块上选择 50% 来选择将包部署到该策略的一半代理。
  5. 如果您要创建新包,请添加要安排的查询

    • 单击添加查询,然后添加已保存的查询或输入新的查询。每个查询都必须包含唯一的查询 ID 和应运行该查询的时间间隔。或者,设置最低 Osquery 版本和平台,指定超时时间,或映射 ECS 字段。将已保存的查询添加到包时,这将添加该查询的副本。已保存的查询和包之间不保持连接。

      覆盖查询的默认超时时间允许您支持需要更多时间才能完成的查询。超时字段的默认和最小支持值为60。最大支持值为900

    • 通过将.conf查询包拖放到查询表下的放置区来上传查询。要浏览 Osquery 发布的社区包,请单击示例包
  6. 单击保存包。当策略收到更新时,查询将运行。

查看已安排包的状态编辑

  1. 打开选项卡。
  2. 单击包名称以查看状态。

    详细信息包括每个查询上次运行的时间、返回的结果数量以及运行查询的代理数量。如果出现错误,请展开该行以查看详细信息,包括在日志中查看更多信息的选项。

    Shows queries in the pack and details about each query
  3. Discover或拖放式Lens编辑器中查看已安排的查询结果。

保存查询编辑

您可以通过两种方式保存查询

  • 运行实时查询后,单击保存以供稍后使用链接。
  • 已保存的查询选项卡中,单击添加已保存的查询

保存查询后,您只能在已保存的查询选项卡中对其进行编辑

  1. 转到已保存的查询,然后单击添加已保存的查询或编辑图标。
  2. 提供以下字段

    • 唯一标识符(必填)。
    • 简要描述。
    • SQL 查询(必填)。Osquery 支持多行查询。
    • 超时时间段(可选)。增加查询的默认超时时间段,以支持需要更多时间才能完成的查询。超时时间 字段的默认和支持的最小值为 60。支持的最大值为 900
    • 运行查询时要填充的 ECS 字段(可选)。将此查询添加到包时,也会复制这些字段。
    • 将查询添加到包时要设置的默认值。

      • 运行查询的频率。
      • 运行查询所需的 Osquery 最低版本
      • 运行查询所需的操作系统。有关每个表支持的平台的信息,请参阅 Osquery 架构
  3. 点击 测试配置 以测试查询和任何映射的字段。

    • 测试查询 面板中,选择要测试查询的代理或组,然后点击 提交 以运行实时查询。带有 mapping 图标的结果列已映射。将鼠标悬停在图标上可查看映射的 ECS 字段。
  4. 点击 保存更新

预构建的 Elastic 包和查询编辑

预构建的 Osquery 包包含在集成中。添加包后,您可以激活并安排它。

预构建的包编辑

预构建的 Osquery 包包含在集成中,可以选择加载。添加后,您可以激活并安排这些包。

您可以修改预构建包的计划代理策略,但不能编辑包中的查询。要编辑查询,您必须先创建包的副本。

有关可用预构建包的信息,请参阅 预构建包参考

加载和激活预构建的 Elastic 包编辑

请按照以下步骤加载并启用新的或更新的预构建包。

  1. 转到 ,然后点击 加载 Elastic 预构建包
  2. 对于要激活和安排的每个包:

    • 打开 活动 切换开关以确保包持续运行。

      您必须手动运行非活动包。

    • 点击包名称,然后点击 编辑
    • 更新 计划代理策略 以指定应在哪些策略中运行此包。
  3. 点击 更新包

复制预构建的 Elastic 包编辑

要修改预构建包中的查询,您必须先创建包的副本。

  1. 转到 堆栈管理已保存的对象
  2. 按名称搜索要修改的 Osquery 包。
  3. 选中要导出的包的复选框。
  4. 点击 导出 x 个对象
  5. 点击 导入
  6. 选择导入选项 使用随机 ID 创建新对象,然后点击 导入 以导入包。这将创建您可以编辑的包副本。

预构建的查询编辑

一组已保存的查询包含在集成中,可以作为实时查询运行。请注意以下有关预构建查询的信息:

  • 查询不可编辑。
  • 其中一些查询包含默认的 ECS 映射,以标准化结果。
  • 预构建的 Elastic 查询都遵循相同的命名约定,并标识正在查询的信息类型、它支持的操作系统(如果它仅限于一个或多个)以及这些是 Elastic 查询。例如,firewall_rules_windows_elastic

将结果字段映射到 ECS编辑

保存查询或将查询添加到包时,您可以选择将 Osquery 结果或静态值映射到 Elastic Common Schema (ECS) 中的字段。这将标准化您的 Osquery 数据,以便在检测、机器学习和任何其他依赖于符合 ECS 的数据的领域中使用。运行查询时,结果将包含原始的 osquery.<fields> 和映射的 ECS 字段。例如,如果您更新查询以将 osquery.name 映射到 user.name,则查询结果将包含这两个字段。

  1. 编辑已保存的查询或包中的查询以映射字段:

    • 对于 已保存的查询:打开 已保存的查询 选项卡,然后点击要映射的查询的编辑图标。
    • 对于 :打开 选项卡,编辑包,然后点击要映射的查询的编辑图标。
  2. ECS 映射 部分中,选择要映射的 ECS 字段
  3. 列中,使用左侧的下拉菜单选择要映射到 ECS 字段的值类型:

    • Osquery 值:选择一个 Osquery 字段。可用的字段基于输入的 SQL 查询,并且仅包含查询返回的字段。运行查询时,ECS 字段将动态设置为所选 Osquery 字段的值。
    • 静态值:输入一个静态值。运行查询时,ECS 字段将设置为输入的值。例如,静态字段可用于将 标签 或您首选的 event.category 应用于查询结果。
  4. 根据需要映射更多字段。要删除任何映射的行,请点击删除图标。
  5. 保存您的更改。
  • 某些 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 属性下。