如何使用BigFix查询收集数据

BigFix®客户是大中型公司,他们使用该产品来管理特定数量计算机的软件和安全性(该数量可能从数十到数万不等)。 其中许多客户要求一种从其环境中快速收集信息的方法,因为BigFix并不是为提供高响应时间而是持久性和有效性而构建的。 在2016年第一季度,BigFix Rome开发团队开发了一种能够满足这些要求的解决方案; 此解决方案是BigFix查询。

先决条件

为了完整地理解本文的内容,需要具备以下先决条件知识:

  • 基本了解BigFix组件,例如CLI和控制台。
  • 如何触发REST API。
  • BigFix用于确定内容和行为的相关语言的基本理解。

总览

IBM BigFix是一套产品,可为合规性,端点和安全性管理提供快速直观的解决方案,并允许组织通过单一基础结构,单一控制台和单一类型的代理查看和管理物理和虚拟端点。

IBM BigFix提供以下功能:

  • 用于连续端点自我评估和策略实施的单个智能代理。
  • 通过单个管理控制台进行实时可见性和控制。
  • 无论位置,连接类型或状态如何,都可以管理数十万个端点。
  • 将特定操作定向到端点配置或用户类型的确切类型。
  • 管理复杂性并降低成本,从而提高准确性并提高生产率。
  • 补丁程序管理,软件分发和操作系统部署。
  • 支持异构平台。
  • 根据国家标准与技术研究院(NIST)标准的自动端点评估和漏洞修复。
  • 实时防御恶意软件和其他漏洞。
  • 服务器自动化。

庞大的产品组合由可扩展的基础架构来保证,该基础架构基于三个主要组件:客户端,中继和根服务器。 图1展示了典型BigFix基础架构的一个示例。

图1. BigFix基础架构示例
如何使用BigFix查询收集数据

BigFix能够通过使用相关性表达式确定内容适用于哪些目标(或哪些计算机需要该内容)。 相关性表达式是内容定义的一部分,其范围是询问托管客户端的硬件和软件属性,以确保例如将补丁程序或维护活动仅应用于需要它的那些计算机,而不应用于其他任何计算机。 。 相关表达式是以人类可读的专有语言(称为相关语言)编写的。

相关性表达式可以触发不同的行为,例如:

  1. Fixlets®
    • 如果某个修订包相关,则表示计算机不符合策略规则。 与Fixlet相关时,您可以运行Fixlet定义中包含的操作来修复问题。 在运行操作之后,将再次评估相关性,以检查漏洞是否已修复。
  2. 任务
    • 相关任务表明计算机违反了配置标准或要求,或者必须运行维护活动。 可以运行任务定义中包含的操作来纠正问题。 操作的所有步骤完成后,该任务在计算机上被标记为不相关,并且“相关性表达式”将不再进行评估。
  3. 分析
    • 定期运行属性查询的项目会根据其查询间隔将结果发送回服务器。 结果将显示在BigFix控制台上。

BigFix查询

更快的结果和更大的灵活性

BigFix Query是IBM BigFix产品组合的一项新功能,它将使客户有机会快速检索与他们的计算机相关的任何信息,例如硬件和软件清单,系统漏洞,文件和路径。

在引入BigFix Query之前,想要从其计算机收集数据的客户必须使用耗时数小时甚至数小时的流程来创建和运行分析。 这将消耗数据库中的大量空间。 相反,BigFix Query会在更短的时间内提供答案,并且由于请求的波动性而没有在数据库中持久存储数据。

使用BigFix Query,由于以下原因,客户可以更快的速度收集数据:

  • 通知机制。
  • 查询使用的新通讯渠道不会干扰用于分析的常规渠道。
  • Fixlets和所有其他报告。
  • 主评估循环不会在客户端上评估查询。

有关所有这些特征的直观图表,请参见图2

提交查询

BigFix Query允许用户提交“查询”,该查询由一系列相关性表达式组成,这些相关性表达式指示需要从客户端检索哪些数据,哪些客户端旨在返回此数据,以及某个客户端是否适用(或不适用)提供答案。

这是提交查询的过程:

  1. 用户从WebUI和REST API界面开始,这些界面允许提交查询并可视化收集的结果。
  2. 用户可以通过Web UI和REST API界面提交查询并可视化收集的结果。
  3. 当用户提交新查询时,服务器将生成一个签名文档,其中包含与该查询相关的所有信息,包括分配的ID。
  4. 然后,根据环境的拓扑,服务器将通知客户端并中继需要处理的新问题。 此类通知包括查询ID和提交查询的操作员。
  5. 客户端收到UDP消息,同时通过HTTP连接通知中继。
  6. 然后,客户端和中继将下载完整的查询有效负载,其中包括查询本身,查询的适用性和定位条件。 中继将查询信息保存在适当缓存中的内存中; 当达到缓存的最大大小时,中继将开始丢弃旧查询。 显然,如果继电器停止,查询将会丢失。

提交查询后

接收到新查询后,客户端将启动“ QnA”的新实例(到目前为止,该实例已用于本地“测试”相关性表达式)以评估查询。 此协同进程具有预定义的CPU消耗,运行时间和空闲时间约束。

  1. 查询处理后,QnA将产生的结果传输到客户端,并在确定的,可定制的时间段内保持空闲,以防止为新查询再次启动它而花费CPU的费用。
  2. 客户端生成一个包含查询结果的报告,并将其发送到分配的中继。 中继将这些报告保留在另一个内存缓存中,并以优先方式将它们发送回服务器。 发生这种情况时,将从中继的内存缓存中删除报告,以便为潜在的其他传入报告腾出空间。
  3. 当报表返回服务器时,它们将由FillDB组件写入数据库中,以便用户可以通过Web UI或通过适当的REST API使用它们。 此外,FillDB组件与其他报告并行处理查询报告。

整个过程在下面的图2图3中详细概述。

图2.从UI到客户端的BigFix查询流程
如何使用BigFix查询收集数据
图3.从客户端到UI的BigFix查询流程
如何使用BigFix查询收集数据

REST API

同样,BigFix查询可在Web UI上通过REST API使用。 特别是,存在三种可使用BigFix Query的REST API:

  1. api / clientquery
  2. api / clientquery / {id}
  3. api / clientqueryresults / {id}

api / clientquery

api / clientquery是一个POST请求,可用于向服务器提交新查询。 该API的输入参数必须包含在XML文件中, 如图4所示

图4. api / clientquery的输入参数
如何使用BigFix查询收集数据

api / clientquery的输入参数为:

  • ApplicabilityRelevance-说明查询是否适用于每个目标客户。 如果以其他方式进行定位(请参见下文),则必须始终使用“ true”进行指定。
  • QueryText-查询,指示要从每个目标客户端检索的内容。
  • 定位–可选的一系列节点,指示查询将哪些计算机定位为目标。 可以使用以下节点来定位计算机:
    • ComputerID –指定每台计算机的数字唯一标识符。
    • ComputerName –指定每台计算机的主机名。
    • CustomRelevance –由客户评估的单个相关性表达式。
    • ComputerGroup –一个BigFix计算机容器,通过以下节点进行标识:
      • 名称–计算机组的名称。
      • SiteName –计算机组所属的BigFix站点的名称。

查询提交到服务器后,将返回一个数字ID,该ID可用于检索查询结果。

api / clientquery / {id}

api / clientquery / {id}是一个GET请求,可用于通过使用其ID检索有关先前提交的查询的信息(请参见图5 )。

图5. api / clientquery / 57返回的输出示例
如何使用BigFix查询收集数据

api / clientqueryresults / {id}

api / clientqueryresults / {id}是一个GET请求,可用于通过使用其ID检索先前提交的查询的结果(请参见图6 )。

图6. api / clientqueryresults / 57返回的输出示例
如何使用BigFix查询收集数据

可以将一些参数作为输入传递给此API,例如:

  • 过滤以仅检索包含所需短语的结果。
  • Stats = 1还可以检索统计信息,例如有多少客户端提供结果以及为查询提供了多少结果。
  • Output =“ json”以JSON格式而不是XML检索结果。
  • 从第X个开始,从Starts = X和count = K检索K个结果。

BigFix查询和运算符

BigFix Query与BigFix运算符和角色集成:主运算符和非主运算符。 默认情况下,允许主操作员执行查询; 非主操作员则不是,它们必须具有在操作员或角色级别通过BigFix控制台正确设置的“可以提交查询”权限(请参见图7 )。 没有此许可,操作员将无法向服务器提交查询。

图7.为非主操作员设置的BigFix查询权限
如何使用BigFix查询收集数据

用例场景:运行查询以检测安全隐患

让我们看看主操作员如何使用BigFix Query,以便他可以确保所管理计算机的安全性。

如图8所示 ,我们的环境由同时运行Windows®和Linux®操作系统的几台计算机组成。 此方案的要求是:

  • 两台或多台运行RHEL操作系统的计算机。
  • BigFix 9.5.2基础架构。
  • BigFix服务器许可证必须有权用于以下应用程序:
    • 生命周期管理或安全性和合规性 ,以便能够提交查询。
    • 修补程序管理 ,以便能够提交修订程序以修复安全问题或应用系统更新。
  • 安装在Windows计算机上的BigFix控制台,应该能够通过网络访问BigFix服务器。
图8.示例环境中的计算机
如何使用BigFix查询收集数据

CVE-2016-080,也称为DROWN,是2016年3月发现的一个新的OpenSSL漏洞。此漏洞使潜在的攻击者可以通过Bleichenbacher RSA paddingOracle®攻击来解密RSA密文。 (Red Hat通过将OpenSSL软件包更新为版本1.0.1e-42的补丁对其进行了修复。)

在这种情况下,我们将以此漏洞为例。 由于我们已经在计算机上安装了OpenSSL,因此我们利用BigFix Query REST API来检查是否存在安全漏洞。

1.首先,我们通过使用我们的主操作员凭证使用BigFix CLI登录到BigFix服务器(请参见图9 )。

图9.使用BigFix CLI登录阶段
如何使用BigFix查询收集数据

2.我们以Linux机器为目标来提交查询,以检索这些计算机上当前安装的OpenSSL库的版本(请参见图10图11 )。

图10.查询的输入参数
如何使用BigFix查询收集数据
图11. api / clientquery的输出
如何使用BigFix查询收集数据

3.我们可以通过/ api / clientquery API检索有关查询的信息。

图12. api / clientquery / 63的输出
如何使用BigFix查询收集数据

4.短暂等待之后(在这里我们必须重申API调用,直到获得一些结果),我们触发REST API以查看查询的结果(请参见图13 )。

图13. api / clientqueryresults / 63的输出
如何使用BigFix查询收集数据

5.结果显示两台计算机容易受到DROWN攻击。 因此,我们将为RHEL6和RHEL7提交正确的Fixlet,以纠正此问题(请参见图14图15 )。 这些修订包分别包含在补丁管理应用程序的两个不同BigFix站点中: “ RHEL 6 Native Tools的 补丁 “ RHEL 7的补丁”。

图14. RHEL6的OpenSSL安全更新修订包
如何使用BigFix查询收集数据
图15. RHEL7的OpenSSL安全更新修订包
如何使用BigFix查询收集数据

6.操作已成功部署到易受攻击的计算机(请参见图16 )。

图16.与OpenSLL修订包相关的成功操作
如何使用BigFix查询收集数据

7.让我们再次运行查询,以验证环境中不再存在该漏洞。

8. 如图17所示 ,该漏洞已经消失。 对于发现和验证,查询的运行时间仅需几秒钟。

图17. api / clientquery和api / clientqueryresults / 64的输出
如何使用BigFix查询收集数据

结论

BigFix Query是BigFix解决方案的改变游戏规则的功能,因为它提供了一种更即时的方式来收集实时信息,这在市场上是非常需要的。 本文简要介绍了BigFix解决方案,BigFix的工作方式以及BigFix Query如何适合所有组件。 最后,它显示了一个典型的用例,其中利用BigFix Query进行漏洞调查。


翻译自: https://www.ibm.com/developerworks/security/library/se-collect-data-with-bigfix-query-trs/index.html