在网络安全领域,Zeek(前称Bro)一直是一款广受欢迎的开源网络安全监控工具。作为一个被广泛使用的被动流量分析器,Zeek不仅能记录网络活动,还能检测网络中的异常行为。因此,每次新版本的发布都会引起广泛关注。2024年8月,Zeek 7 正式发布,带来了其核心架构的重大升级,以及许多全新功能。
本篇文章将深入探讨 Zeek 7 的主要改进,并分析这些改进对网络安全监控的重要影响。
- Zeek官网:
https://zeek.org/
- Zeek 7发布公告
https://zeek.org/2024/08/27/introducing-zeek-7/
- Zeek 7下载:
https://zeek.org/get-zeek/
Zeek 7 在其核心架构上进行了全面的重构,这一过程旨在将系统模块化、现代化,以提高整体性能和可扩展性。这种架构升级对 Zeek 的长期发展具有深远的影响。
Zeek 7 的核心架构采用了模块化设计,这意味着系统的各个组件被拆分为独立的模块,可以根据需要进行加载或禁用。这种设计使得 Zeek 在处理不同规模和复杂度的网络时更加灵活。例如,用户可以根据网络环境的需求,选择性地启用或禁用特定的流量分析模块,从而优化系统性能并减少不必要的资源消耗。
通过对架构的重构,Zeek 7 实现了更高效的数据处理能力。例如,在处理大量数据包时,新的架构可以更快地过滤和分析数据,从而减少了延迟。此外,Zeek 7 引入了多线程支持,允许并行处理不同类型的网络流量。这一改进极大地提高了 Zeek 处理高吞吐量网络的能力,使其能够更好地适应现代网络的需求。
Zeek 7 的模块化设计还提升了系统的可扩展性。用户可以根据需要开发和集成新的模块,以实现特定的功能。例如,企业可以为其网络开发定制的流量分析器,并将其无缝集成到 Zeek 中。此外,Zeek 7 还支持与其他安全工具的集成,如SIEM系统、威胁情报平台等,为用户提供更全面的安全监控能力。
全新的 Telemetry 框架
Telemetry 是 Zeek 用于监控和报告其自身性能和状态的关键组件。在 Zeek 7 中,Telemetry 框架得到了彻底的改进,从而提高了数据收集和监控的效率。
在之前的版本中,Zeek 的 Telemetry 框架依赖于 Broker 和 CAF(C++ Actor Framework)来进行操作。然而,这种依赖关系往往导致性能问题,尤其是在需要将大量数据聚合到管理节点时。Zeek 7 通过与 Prometheus 的无缝集成解决了这个问题。新的框架直接使用 prometheus-cpp
和 civetweb
进行操作,避免了之前的瓶颈。
新的 Telemetry 框架支持 Prometheus 的 HTTP 服务发现,这使得集群中各个节点的指标抓取更加高效。通过这种方式,用户可以实时监控每个节点的性能状态,并迅速检测和处理潜在的问题。这种改进大大简化了 Telemetry 的部署和维护,同时提高了系统的稳定性。
Zeek 7 还提供了更多的选项来定制 Telemetry 的行为。用户可以根据自身需求选择哪些指标需要被监控,以及如何收集和处理这些数据。例如,用户可以设置特定的阈值,当系统性能指标超过这些阈值时,触发告警机制。这种灵活性使得 Zeek 7 更加适合复杂的企业网络环境。
Spicy 1.11 编译器升级
Spicy 是 Zeek 中的一个重要组件,用于协议分析和解析。在 Zeek 7 中,Spicy 1.11 带来了编译器技术的重大改进,这些改进不仅加速了操作,还提升了代码的可靠性。
Spicy 1.11 编译器经过优化,操作速度提高了高达30%。这一改进特别体现在某些协议的处理上,例如在处理复杂的嵌套协议时,新的编译器能够更快地解析和分析数据,从而减少系统延迟。这一性能提升对需要实时处理大量数据的企业来说尤为重要。
新的编译器还增强了错误检测的能力。在编写和调试分析脚本时,Spicy 1.11 可以更早、更准确地发现潜在的代码错误。这一改进减少了调试时间,提高了开发效率。此外,编译器还提供了更详细的错误信息,使开发人员能够更快地定位和修复问题。
Spicy 1.11 的另一个重要改进是其扩展性。用户可以更轻松地扩展编译器的功能,以支持新的协议和数据格式。这使得 Zeek 7 能够适应不断变化的网络环境,并及时应对新出现的威胁。
Zeek 抽象机器(ZAM)
Zeek 7 的另一个重大创新是引入了 Zeek 抽象机器(ZAM)。ZAM 是一个可选的脚本优化引擎,旨在通过改变脚本的执行模式来提高性能。
在传统的 Zeek 执行模型中,脚本被解析成抽象语法树(AST),并逐节点进行解释执行。这种方法虽然灵活,但在处理复杂脚本时往往会导致性能瓶颈。ZAM 通过将这些抽象语法树编译成低级形式,从而加快了执行速度。这种低级形式更接近于机器码,可以直接在硬件上高效运行。
ZAM 的引入显著提升了 Zeek 处理复杂分析任务的能力。例如,在需要实时分析大量网络数据包的情况下,ZAM 可以显著减少处理时间,并提高整体系统的吞吐量。这一改进对需要高性能和低延迟的网络环境尤其有利。
值得注意的是,ZAM 是一个可选的优化引擎。对于那些已经适应现有脚本执行模式的用户,可以选择不使用 ZAM,继续沿用传统的执行模式。然而,对于那些需要更高性能的用户,ZAM 提供了一个强大的选项来进一步优化 Zeek 的性能。
增强的脚本语言和分析器配置
Zeek 7 还对其脚本语言和分析器配置进行了多项改进,使用户能够更灵活地定制和优化系统的行为。
在 Zeek 7 中,脚本语言得到了增强,使其更加简洁和高效。新的语法特性和库函数使得编写和维护分析脚本变得更加容易。例如,新增的函数允许用户更高效地处理复杂的数据结构,从而减少脚本的复杂度和运行时间。
Zeek 7 引入了多个新的分析器,进一步扩展了其协议支持范围。其中,基于 Spicy 的 QUIC 和 LDAP 分析器是最值得关注的。这些分析器利用了 Spicy 1.11 的编译器改进,能够更快速、更准确地解析和分析这些复杂协议。此外,Zeek 7 还增强了对 HTTP 升级和 WebSocket 分析的支持,使其能够更全面地监控和分析现代网络流量。
JSON 是现代网络中常见的数据交换格式。Zeek 7 对 JSON 的处理能力进行了显著提升,尤其是在日志写入和深度封装嵌套的处理上。通过新的优化,Zeek 7 能够更高效地解析和生成 JSON 数据,从而减少了系统的开销,并提高了数据处理的准确性。