每次我设置一个新的 Linux 主机(最近是 CentOS)时,特别是当这样的主机在我们的小型数据中心(大约 100 台主机)内扮演一些角色时,我都会注意:
- 安装 ntp 包;
- 添加在服务器列表顶部,一个新的服务器实例指向:
time.ien.it
如果系统具有出站 ntp 访问权限,则连接到我们或多或少官方的意大利 ntp 服务器 ( );- 如果系统未连接互联网,则将其设置为“内部主机”,其作用类似于某种官方 ntp“内部”服务器。
- 启用 ntp 服务,以便正确处理重启
因此,对于可以访问 Internet 的系统,配置的服务器列表如下ntp.conf
:
server time.ien.it iburst
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
在调查完全不同的问题时,我发现上述配置会产生流量到我完全不知道的远程主机。
tcpdump
以下是从我们主机的出站接口捕获的一段代码drbd-store-02-ch
:
您可以看到:
- 我正确预期了来自/到主机的流量(“黄色”);
- 来自/到主机的流量看起来与CentOS和/或ntp.org域。具体来说:
1.ntp.tld.sk
laika.paina.net
time.reisenbauer-it.com
183.84.160.167.rdns.kaiju.cc
在调查过程中,我发现还有其他主机,未包含在上面的列表中。我甚至发现主机的反向主机名明确指向一些大型 ISP,指的是 VPS 之类的东西。
我的问题是:
- 我是不是该消除默认服务器列表并且仅依赖于我的“受信任的”
time.ien.it
外部 ntp 服务器主机? - 如果不是,我如何确保这些远程主机实际上是“安全的”并且受到适当的保护/管理......从而不会危及我的 ntp-service-requests?
PS:顺便说一句,我非常清楚 DNS 解析过程,所以问题是不是“为什么”我要连接这些服务器。问题是:“它安全吗?”
答案1
简而言之:它可能是安全的。
较长的版本:您看到的行为完全正常且在意料之中。NTP 池是一个动态池,每次 DNS TTL 到期时它可能会发生变化。
池中的每个主机都由 NTP 池基础设施监控,如果主机报告的时间与可接受的时间相差太大,则会将其从池中移除。您可以在以下位置查看每个主机的监控记录http://www.pool.ntp.org/scores/IP(其中 IP 是服务器的 IP 地址)。例如,当我现在在我的计算机上查找 0.centos.pool.ntp.org 时,我得到了以下地址:
假设您的时间同步要求是平均水平(就与真实时间的偏差而言),通常的最佳做法是在您自己的网络中设置 4-6 台服务器,这些服务器与池中的 4-6 台服务器同步,并将您的内部主机指向这些本地服务器。我在今年的Linux.conf.au 系统管理员 miniconf(本页最后一次讨论)。
编辑:请注意,一些矿池服务器也是 TOR 中继或出口节点。这有时会让 NTP 矿池用户陷入麻烦,因为他们的 IDS/IPS 甚至 ISP 过于激进。请参阅https://twitter.com/_lennart/status/861714732709031936举一个最近的例子。
答案2
您可能只应在 DMZ 中使用这样的列表。内部系统绝不应该能够使用 UDP 端口 123 随意连接互联网上的服务。
- 您应该将列表缩小到您自己网络内的受信任主机。在 DMZ 中,您应该相信您的 NTP 软件不会将内部的奇怪请求转发到互联网。
- 你不能。这些主机的配置也可能很糟糕。
因此,如果您有充分的理由拥有一个可信赖的时间服务器,请获取一个可以与良好的时间源设备交互的时间服务器,并且不要将其连接到互联网。
答案3
这看起来像是软件供应商(Centos)免费向公众发布软件的常见情况NTP.org 池在他们的默认 NTP 配置中,而不是提供自己的 NTP 基础设施或依赖用户拥有 NTP 基础设施。
我将继续并在下面引用他们的文档。
关于使用 NTP.org 池:
考虑 NTP 池是否适合您的使用。如果企业、组织或人类生命依赖于拥有正确的时间,或者时间错误会对其造成危害,那么您不应该“直接将其从互联网上删除”。NTP 池通常质量非常高,但它是由志愿者在业余时间运营的服务。请与您的设备和服务供应商联系,了解如何为您设置本地可靠的服务。另请参阅我们的服务条款。我们推荐使用 Meinberg 的时间服务器,但您也可以找到 End Run、Spectracom 和许多其他公司的时间服务器。
...
如果你的互联网提供商有时间服务器,或者如果您知道附近有一个好的时间服务器,则应该使用该服务器而不是此列表 - 您可能会获得更好的时间,并且使用更少的网络资源。如果您只知道附近有一个时间服务器,您当然可以使用该服务器和来自pool.ntp.org 等的两个时间服务器。
关于NTP.org 池供应商区域(例如centos
中的0.centos.pool.ntp.org
):
获取您的供应商区域
为了允许您在应用程序中使用该池作为默认时间服务,我们将为您设置特殊的主机名,例如 0.vendor.pool.ntp.org、1.vendor.pool.ntp.org、2.vendor.pool.ntp.org 和 3.vendor.pool.ntp.org。您绝对不能使用默认的pool.ntp.org 区域名称作为应用程序或设备中的默认配置。
...
为什么要为供应商使用特殊主机名?
特殊主机名允许我们对流量进行一定程度的控制,以便我们能够优化负载分配并将客户端与最佳服务器进行匹配。如果部分客户群体出现问题,它还可以提供更好的持续支持选项。(请参阅基本指南部分中的链接)。
至于 NTP.org 池中的服务器的安全性,池中的服务器正在受到监控,但正如他们明确指出的那样,如果您有更好的(更值得信赖和可靠的)选择,您应该使用它。
答案4
消耗或提供错误的时间可能被归类为“互联网违法行为”。所有 CentOS NTP 名称都是一批 IP 地址,可能是为了提供时间源的广泛样本(因为绘制一个完整的 NTP 空白可能更糟糕?)。
就我个人而言,我会对 CentOS 生成的列表给予中等信任度,但如果您担心或有业务需要,您应该能够从提供商网络或 NIST(time-a.nist.gov 等)找到 NTP(如果您信任它们)。在安全至关重要的情况下,我从提供商网络中消耗时间,并将该时间参考重新托管在核心路由器上,以便网络内的消费者都可以使用统一且已知的来源。