跳转到内容

BIND 安全漏洞:CERT-Bund 安全公告发布后,DNS 服务器运营者现在必须检查什么

更新与新闻  ·   ·   ·  6 分钟 阅读时间

简而言之
  • CERT-Bund 在编号 WID-SEC-2026-2484 下发布了一份关于 BIND 安全漏洞的公告。
  • 所有运行 named 的服务器都可能受到影响——无论是作为自有域名的权威域名服务器,还是作为递归解析器。
  • 在一台 Root 服务器上,检查用不了 15 分钟:确认版本、检查 53 端口的可达性、调整配置、更新软件包。

DNS 服务器大多数时候就这样自顾自地运行,多年无人问津,直到某天冒出一份编号类似 WID-SEC-2026-2484 的公告,你才开始怀疑,服务器上的“named”是不是还是 2023 年安装的那个版本。

事情的原委

CERT-Bund 的预警与信息服务发布了一份关于 BIND 安全漏洞的公告。BIND 是互联网上很大一部分权威及递归 DNS 基础设施所使用的域名服务器软件——从管理几个域名的业余域名服务器,到整个数据中心的递归解析器都在用它。具体的 CVE 编号、受影响的版本范围以及严重程度,请查阅CERT-Bund 的原始公告——那才是权威来源,而不是这篇摘要。

作为运营者,无论公告细节如何,对你而言重要的事情始终一样:你需要知道运行的是哪个版本、该服务是否能从互联网访问,以及你能多快装上更新,同时不中断你自己或客户域名的解析。

为什么事不宜迟: DNS 服务器几乎总是直接暴露在互联网上——53 端口必须可以访问,该服务才能正常工作。与藏在防火墙后面的 Web 服务器不同,你没办法简单地把 BIND “藏进内网”。因此,一个公开可访问服务中的漏洞,自动就是一个可以从整个互联网发起攻击的漏洞。

谁可能受到影响

并不是每个拥有域名的人都会自己运营域名服务器——大多数人使用的是注册商或主机商提供的 DNS。如果你在自己的 Root 服务器或 VPS 上自行安装了 bind9named——比如用来管理自己的区域、为内部服务运行递归解析器,或者集中管理多个域名的 DNS——这份公告才与你相关。

运行方式是否可从互联网访问BIND 漏洞的典型风险
权威域名服务器(自有域名)是,53 端口必须开放区域劫持、缓存篡改,最坏情况下可执行代码
递归解析器(公开)是,通常还可能被滥用于 UDP 放大攻击缓存投毒、DDoS 放大、代码执行
内部解析器(仅限局域网/VPN)否,仅可从自有网络访问风险较低,但在其他入侵事件发生后的横向移动中仍具相关性

如何检查你自己的服务器

以下步骤假设 BIND 是通过你所用发行版的软件包管理器以 bind9 软件包形式安装的,这是大多数 Debian 和 Ubuntu 系统上的常见做法。

  1. 确认已安装的版本。 首先检查实际运行的版本,而不只是软件包管理器中显示为已安装的版本。
    named -v
    sudo systemctl status bind9
  2. 与公告比对。 打开公告,将其中列出的受影响版本范围与你的输出结果进行比对。如果你的版本比公告中提到的已修复版本更旧,那么你就受到了影响。
  3. 检查可达性。 确认你的服务器是否以及如何能从互联网访问——这决定了更新的紧迫程度。
    sudo ss -tulpn | grep :53
  4. 更新软件源并安装更新。 先拉取最新的软件包列表,再安装更新本身。
    sudo apt update
    sudo apt list --upgradable | grep bind9
    sudo apt upgrade bind9
  5. 重启服务并检查状态。 仅仅升级还不够——必须重启正在运行的进程,已修复的版本才会生效。
    sudo systemctl restart bind9
    sudo rndc status
  6. 加固配置,这一点与本次具体公告无关。named.conf.options 中限制谁可以发起递归查询和请求区域传输:
    allow-recursion { 127.0.0.1; dein.internes.netz/24; };
    allow-transfer { deine.sekundaer.ip; };

检查是否成功

更新并重启之后,你应该检查两件事:新版本确实已经生效,以及域名解析仍然正常工作。

named -v
dig @127.0.0.1 deine-domain.de +short

如果 dig 返回了应答,并且 named -v 显示的正是预期中已修复的版本号,那么更新就成功了。之后再看一眼日志,确认重启过程中没有出现配置错误:

sudo journalctl -u bind9 -n 50 --no-pager
实用提示: 给自己设个提醒,在更新几天后再检查一次域名服务器。有些公告会在获得更多细节后追加新的受影响版本——在调查仍在进行的情况下,一次性检查并不总是够的。

自己运营 BIND 服务器,还是交给别人?

像这样的一份公告,正好是个契机,可以从根本上问一问:对你的使用场景来说,自行维护域名服务器是否仍然是正确的选择。

支持理由
  • 对区域、TTL 和访问规则拥有完全的控制权
  • 不依赖第三方服务商的可用性
  • 如果你需要复杂的内部 DNS 结构或 Split-Horizon 设置,这是必要的
反对理由
  • 你必须自己负责跟踪像这样的公告并及时打补丁
  • 无论当前有没有公告,开放的 53 端口始终是一个长期的攻击目标
  • 如果域名数量不多,维护成本往往与收益不成比例

如果你决定自己运营,那么对 BIND 而言,适用的基本原则和服务器上其他任何公开可访问的服务一样:尽可能收紧访问权限、及时安装更新,并且不要忘记其余的安全加固措施。比如同一台服务器上的 SSH 访问该如何正确加固,我们在另一篇关于 SSH 访问、密钥和 fail2ban 的文章中做了总结——其中的原则可以直接套用过来。

一份公告并不会改变威胁状况,它只是让威胁变得可见。漏洞之前就已经存在——只是还没有一个公开的编号。

一份已经公开的公告如果被忽视,会很快变成真正的问题——我们对Virtualizor 遭 BGP 劫持并被植入恶意更新事件的回顾就说明了这一点:在那起事件中,真正的漏洞也是在被利用之前就已经为人所知。更新之后,如果不仅重启服务,还持续对其进行监控,就能更早发现再次出现的故障或入侵——为此我们提供了针对服务器和服务的监控方案

如果你根本不再需要 BIND

BIND 常常在实际需求早已消失之后仍然保留在系统上——一套旧的设置、一台测试服务器、一个已经停止的项目。在这种情况下,面对公告最干净利落的应对方式不是更新,而是卸载:

sudo systemctl stop bind9
sudo systemctl disable bind9
sudo apt purge bind9

一个没有在运行的服务,不管漏洞有多严重都无法被利用——而且无论当前公告如何,少开一个端口就是少一分攻击面。

常见问题

如果我只使用域名注册商提供的 DNS,这份公告和我有关吗?
没有关系。这份公告只涉及自行安装并运行 BIND(named)软件的服务器。如果你使用的是注册商或主机商提供的域名服务器,相应的服务商会负责其自身基础设施的更新。
更新软件包就够了,还是之后必须重启 BIND?
仅仅更新软件包并不会激活已修复的版本。升级之后,必须通过 systemctl restart bind9 重启正在运行的 named 进程,否则内存中运行的仍然是旧的、存在漏洞的版本。
我怎么知道服务器上目前运行的是哪个 BIND 版本?
在命令行中执行 named -v。它会显示实际运行的版本,而不受软件包管理器所列出的已安装版本影响。
检查期间我需要把域名服务器下线吗?
通常不需要。检查版本、调整配置以及软件包更新本身都可以在服务持续运行的情况下进行。只有更新之后服务的短暂重启会造成极短暂的中断。
如果我不确定自己的版本是否受影响,该怎么办?
直接将 named -v 的输出与 CERT-Bund 原始公告中列出的版本范围进行比对。如有疑问,更新到当前可用的最新软件包版本,比继续等待更稳妥。
Prepaid-Host.com 本身即为服务器、虚拟主机与域名服务商,在此报道的正是自己所处的市场。我们如何处理这一点,见利益披露说明