我有一个干净的 Debian 7 安装,并在 /etc/ntp.conf 中手动输入了以下行:
interface ignore wildcard
interface listen <local_nic_ip>
希望 NTP 不再监听 UDP6,但重启后,它仍然监听:
5:udp 0 0 <local_nic_ip>:123 0.0.0.0:* 9172/ntpd
6:udp 0 0 127.0.0.1:123 0.0.0.0:* 9172/ntpd
8:udp6 0 0 ::1:123 :::* 9172/ntpd
NTP 命令行没有显示任何异常:
/usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 121:130
如何停止 NTP 监听该 UDP6 端口?
答案1
我已经能够通过这样的方式在 Debian 5/6/7 和 Ubuntu 12.04 上禁用 NTP 的 IPv6:
编辑文件/etc/default/ntp
并替换
NTPD_OPTS='-g'
经过
NTPD_OPTS='-4 -g'
然后,您可以将指令保留在中ntp.conf
,它们不会被忽略:
interface ignore wildcard
interface listen <local_nic_ip>
- 如果没有
interface ignore wildcard
NTP 也会监听0.0.0.0
- 如果没有
interface listen <local_nic_ip>
NTP,则只能监听127.0.0.1
(当然)
这将导致:
# netstat -anp | grep :123
udp 0 0 192.168.0.38:123 0.0.0.0:* 2901/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 2901/ntpd
此外,我确认它会OpenNTPD
更友好地监听您要求它监听的地方(无需编辑多个配置文件)。默认情况下,它不会监听任何地方,除非您对其进行配置(非常安全);)
在配置文件中,只需取消注释行
listen on 127.0.0.1
并添加行
listen on <local_nic_ip>
结果是 :
# netstat -anp | grep :123
udp 0 0 192.168.0.38:123 0.0.0.0:* 8581/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 8581/ntpd
答案2
如果您认为这是一个错误(我当然这么认为:ntpd
忽略了配置指令),则必须向软件包维护者或上游作者提出这个问题。我认为他们中没有人在这里闲逛 - 请参阅软件包信息以获取他们的联系信息。
或者你可以尝试另一个 NTP 实现(例如开放NTPD- 我个人没有使用过它,但 OpenBSD 的人们往往对安全性非常偏执,所以我想它只会听从吩咐。
不过,正如 Sander 指出的那样,您的 NTP 守护程序正在本地主机上监听(127.0.0.1
& ::1
)——如果您担心被本地主机黑客入侵,那么您的问题可能比 NTP 守护程序更大。
我对守护程序忽略配置指令感到有点恼火,但我不认为这是一个严重的安全问题。
答案3
ntpd 不会这样做;ntpdate 会。请参阅下文了解解释。我的 conf 文件中没有以下任何一项:
interface ignore wildcard
interface listen <local_nic_ip>
我启动后,sudo netstat -tunlp 给了我这个:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 127.0.0.1:123 0.0.0.0:* 1433/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 1433/ntpd
我打开了网络连接,netstat 显示以下信息:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 4432/dnsmasq
udp 0 0 127.0.1.1:53 0.0.0.0:* 4432/dnsmasq
udp 0 0 0.0.0.0:123 0.0.0.0:* 4501/ntpdate
udp6 0 0 :::123 :::* 4501/ntpdate
注意前两个是 DNS,而不是 ntp。向右滚动即可查看程序名称。
我等了一会儿,然后 netstat 返回了这个信息:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 4432/dnsmasq
udp 0 0 127.0.1.1:53 0.0.0.0:* 4432/dnsmasq
udp 0 0 192.168.5.5:123 0.0.0.0:* 4542/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 4542/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 4542/ntpd
奇怪。无论如何,看起来 ntpdate 是(暂时)为您提供 udp6 连接的程序。您必须使用 sudo 才能查看 PID 和程序名称,否则会非常误导。
(随后)啊,没关系,看来你的确实是ntp……