如何让 ntpd 仅为我的本地子网提供服务

如何让 ntpd 仅为我的本地子网提供服务

我有一些带有公共互联网 IP 地址的服务器,例如A.B.C.x。我的一个主机 ( A.B.C.10) 运行 ntpd,我让它从 europe.pool.ntp.org 同步时间。

现在我只想允许主机来自我的子网A.B.C.x)才能同步到A.B.C.10。默认情况下,全世界都可以同步到我的 NTP 服务器。我该如何实现这一点?


我能找到的所有示例都假设我正在同步到特定的 IP 地址,但我同步到 DNS 名称,据我所知,DNS 名称x.europe.pool.ntp.org 指向的 IP 地址是可变的。因此我无法在防火墙中设置例外,也无法使用restrictntp.conf 中的选项,因为它也只接受IP 地址并不是DNS 名称(哦!并且restrict像防火墙规则一样适用于客户端和服务器!)

答案1

您有多种选择,这取决于防火墙的位置和/或您喜欢使用哪种防火墙。理想情况下,您将拥有一个可以在子网上控制的防火墙。不太理想的情况是,您只需要处理 NTP 服务器上的主机级防火墙。无论哪种方式,概念都是相同的。

对于子网防火墙:

  • 仅允许来自子网的 UDP 端口 123A.B.C.10
  • 拒绝其他一切 UDP 端口 123。

对于 NTP 服务器上的主机防火墙:

  • 允许来自子网(以及本地主机)的 UDP 端口 123
  • 拒绝其他所有地方的 UDP 端口 123(链中后面的所有拒绝规则)。

例如允许 10.0.0.0/8:

# allow 10.0.0.0/8
iptables -A INPUT -s 10.0.0.0/8 -p udp -m udp --dport 123 -j ACCEPT
# allow localhost
iptables -A INPUT -s 127.0.0.0/8 -p udp -m udp --dport 123 -j ACCEPT
# allow NTP packets _from_ your host to everyone else
iptables -A OUTPUT -p udp --sport 123 --dport 123 -m state --state NEW,ESTABLISHED -j ACCEPT
# allow replies from hosts you've sent NTP packets to
iptables -A INPUT  -p udp --sport 123 --dport 123 -m state --state ESTABLISHED -j ACCEPT
# the following is only useful if you have a policy ACCEPT for INPUT
iptables -A INPUT  -p udp -m udp --dport 123 -j DROP

答案2

本地网络服务的基本内容ntp.conf如下

####
driftfile       /etc/ntp.drift
disable         monitor
restrict -4     default kod nomodify nopeer noquery notrap
restrict -6     default kod nomodify nopeer noquery notrap
restrict        127.0.0.1
restrict        127.127.1.0
restrict -6     ::1

restrict        10.0.0.0    mask 255.0.0.0
restrict        172.16.0.0  mask 255.240.0.0
restrict        192.168.0.0 mask 255.255.0.0

server          0.pool.ntp.org       iburst
server          1.pool.ntp.org       iburst
server          2.pool.ntp.org       iburst
####

最长的两行默认拒绝任何对服务器的访问,然后其他restric指令只允许特定的主机和子网。

答案3

我发现这些答案没什么帮助,所以下面是对我有用的方法。这是在运行 NTP 4.2.6p5 的机器上

driftfile        /var/lib/ntp/ntp.drift
statsdir /var/log/ntpstats/

restrict    default ignore

restrict        127.0.0.1
restrict        127.127.1.0
restrict -6     ::1

restrict -4     <whitelist.ip.0>    mask    255.255.255.255
restrict -4     <whitelist.ip.1>    mask    255.255.255.255
restrict -4     <whitelist.ip.2>    mask    255.255.255.255 

server      0.pool.ntp.org  iburst nomodify notrap nopeer noquery
restrict    0.pool.ntp.org  iburst nomodify notrap nopeer noquery
server      1.pool.ntp.org  iburst nomodify notrap nopeer noquery
restrict    1.pool.ntp.org  iburst nomodify notrap nopeer noquery
server      2.pool.ntp.org  iburst nomodify notrap nopeer noquery
restrict    2.pool.ntp.org  iburst nomodify notrap nopeer noquery


statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable

我知道这是一个老话题,但我认为它可能对某些人有帮助。在示例中,您应该将 whitelist.ip.0、whitelist.ip.1、whitelist.ip.2 替换为您的白名单主机。您显然也可以修改 mask 参数以允许例如 /24 网络

相关内容