为什么 NTP 需要双向防火墙访问 UDP 端口 123?

为什么 NTP 需要双向防火墙访问 UDP 端口 123?

允许 ntp 的 iptables 规则是什么?

iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p udp --sport 123 -j ACCEPT

另外,来自NTP 网站

... ntpd 需要对特权 UDP 端口 123 的完全双向访问。...

我的问题是,为什么?对于不熟悉 NTP 的人来说,这似乎是一个潜在的安全漏洞,尤其是当我要求我的客户在他们的防火墙中打开该端口以便我的服务器可以保持时间同步时。有没有人能给我一个合理的理由,让我的客户相信我需要在防火墙中获得这种访问权限?非常感谢您的帮助!:)

答案1

如果您充当服务器,则仅需要允许传入流量 NTP 端口,以允许客户端与您同步。

否则,NTP 状态的存在将自动确定传入的 NTP 数据包是否被我们启动的现有防火墙状态阻止或允许。

iptables -A 输出 -p udp --sport 123 --dport 123 -j 接受

iptables -A INPUT -m 状态 --状态 ESTABLISHED,RELATED -j ACCEPT

请告诉我 iptables 规则是否正确。我没有使用 iptables 的经验。我的 NTP 客户端在我的 pfSense 路由器上保持同步,只使用传出允许规则,因为 pfSense 是一个状态防火墙。

答案2

NTP 需要端口 123 上的双向访问,因为NTP 请求功能指定有关客户端源端口的以下内容:

在对称模式(1 和 2)下运行时,该字段必须包含 IANA 分配的 NTP 端口号 PORT(123)。

由于客户端的源端口是 123,当服务器发回响应时,它会将其发送到端口 123。当然,为了能够接收该响应,客户端必须允许端口 123 上的传入响应。通常,响应会在某些临时端口范围。

作为本·库克如上所述,这仅在处理无状态防火墙时才需要,因为有状态防火墙允许响应在没有明确规则的情况下返回。

答案3

我认为最好的解决方案是启用端口 123 进行输入,仅针对预期向您的服务器提供 ntp 信号的 ip 地址。
在 ntp 配置文件 /etc/ntp.conf 中,有您的服务器应指向的几个 ntp 服务器的地址。您可以使用 lookup 命令查找每个地址对应的 ip。

host -t a 0.debian.pool.ntp.org

然后您可以将规则添加到服务器防火墙:

iptables -I INPUT -p udp -s 94.177.187.22 -j ACCEPT

...等等。
这可以防止任何恶意的人破坏您的服务器。
我认为限制输出是没有用的。

答案4

ntp 服务器到服务器的通信是源端口和目标端口 123。最方便的是至少对运行 ntp 服务的主机明确允许这一点。

您可能考虑仅将外部主机暴露给互联网以从外部源获取时间。与此同步的内部 ntp 服务可以作为所有设备的来源。如果这些主机专用于此目的,则可能的暴露是有限的:它们仅接受 ntp 流量,不存储其他数据。

或者,根本不要使用外部 IP 网络。例如,使用 GPS 等无线电源来计时。

http://www.diablotin.com/librairie/networking/firewall/ch08_13.htm http://support.ntp.org/bin/view/Support/TroubleshootingNTP

相关内容