加固收集器 第一集:新的默认绑定地址
博客文章在发布后不会更新。这篇文章已经发布一年多了,其内容可能已过时,部分链接可能无效。在依赖任何信息之前,请务必核实。
OpenTelemetry Collector 最近在 CNCF 的赞助下,由 OSTIF 协助,并由 7ASecurity 执行了一次安全审计。作为此过程的一部分,我们发布了一份与 DoS 漏洞 CVE-2024-36129 相关的安全公告,该漏洞在 v0.102.1 版本中得到了全面修复。
安全审计也促使我们思考如何加固官方 Collector 构建并拥有更安全的默认配置。我们正在努力采纳审计中推荐的 几项 最佳 实践,以实现这一目标,并且我们将发布一系列博文来让社区了解情况。虽然我们预计报告很快就会公开,但我们可以肯定地说,我们对 Collector 被证明非常安全的结果感到非常满意,这凸显了我们已有的安全编码实践和流程。
我们正在进行的一项更改是,更改 Collector 服务器(例如接收器或扩展器暴露的监听传入连接的服务器)的默认绑定地址。在 v0.103.0 之前,默认行为是使用 未指定地址 0.0.0.0 在服务器地址上监听所有网络接口。虽然这是测试用例和开发环境的便捷默认设置,但它不推荐用于生产环境,因为它可能使 Collector 服务器面临不必要的风险。从 v0.104.0 开始,所有 Collector 服务器的默认绑定地址将变为 localhost。
这来之不易。我们从 CVE-2022-27664 开始讨论这个问题,在 v0.63.0(2022 年 9 月) 中,我们添加了警告并改进了文档。在 v0.94.0(2023 年 9 月) 中,我们决定添加一个功能门 component.UseLocalHostAsDefaultHost,允许用户选择加入新行为。最后,这个功能门在 v0.104.0(2024 年 6 月) 中被默认启用,这受到安全审计和 CVE-2024-36129 的推动。
我们改变了什么?
从 v0.104.0 开始,Collector 暴露的所有服务器的默认绑定地址为 localhost,而不是 0.0.0.0。例如,OTLP 接收器默认的 OTLP/gRPC 和 OTLP/HTTP 端点分别为 localhost:4317 和 localhost:4318。受此更改影响的组件的完整列表如下:
otlp接收器awsfirehose接收器awsxray接收器influxdb接收器jaeger接收器loki接收器opencensus接收器sapm接收器signalfx接收器skywalking接收器splunk_hec接收器zipkin接收器zookeeper接收器awsproxy扩展health_check扩展jaegerremotesampling扩展remotetap处理器
如有疑问,请查阅具体组件的文档以了解新的默认值。
从 OpenTelemetry Collector Helm Chart v0.47.1 和 OpenTelemetry Collector 官方 Docker 镜像 v0.87.0 开始,我们更新了所有组件的默认配置,以显式设置端点值。
这对我的意义是什么?
如果您依赖默认配置,您可能需要开始显式设置 Collector 组件上的端点。例如,如果您正在使用以下配置和 OTLP 接收器:
receivers:
otlp:
protocols:
grpc:
您现在可能需要显式设置 otlp::protocols::grpc::endpoint 配置设置。
receivers:
otlp:
protocols:
grpc:
endpoint: ${env:HOST_IP}:4317
其中 HOST_IP 环境变量设置为您要使用的绑定地址(例如,Kubernetes 上的 status.podIP)。
由于 Collector Helm Chart 和 Collector Docker 镜像的更改,如果您在这两者上使用默认配置,则不受影响。
我如何为这次更改做准备?
自 v0.63.0 起,当您使用 0.0.0.0 地址的端点时,Collector 会记录一个相关的警告。在升级之前,您可以检查此警告并进行处理。从 v0.94.0 到 v0.103.0,您还可以通过启用 component.UseLocalHostAsDefaultHost 功能门来预览此更改的影响。
处理此更改应该很简单,但是,由于受影响的组件数量众多,从 v0.104.0 开始,您可以通过禁用 component.UseLocalHostAsDefaultHost 功能门来暂时选择退出此更改,以便您可以按照自己的节奏进行处理。此功能门将在未来的 Collector 版本中被标记为稳定,因此我们建议尽快处理。
下一步?
随着我们努力采纳安全审计推荐的最佳实践,我们将发布更多博文,让社区及时了解情况。这将包括加固 macOS 上的 Collector 二进制文件以及进一步调整 Collector 服务器的默认行为。敬请关注!