У меня чистая установка 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?
Мне удалось отключить IPv6 для NTP на моем Debian 5/6/7 и Ubuntu 12.04 следующим образом:
Редактировать файл /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
Если вы считаете это ошибкой (а я, конечно, считаю: ntpd
игнорирует директиву конфигурации), вам придется обсудить это с сопровождающим пакета или авторами апстрима. Я не верю, что кто-либо из них здесь тусуется - обратитесь к информации о пакете, чтобы узнать их контактные данные.
В качестве альтернативы вы можете попробовать другую реализацию NTP (например, OpenNTPD - Я не использовал его лично, но люди, работающие с OpenBSD, как правило, абсолютно параноидальны в отношении безопасности, поэтому я полагаю, что он слушает только там, где ему говорят).
Однако, как указал Сандер, ваш демон NTP прослушивает localhost (127.0.0.1
& ::1
) - Если вы беспокоитесь о том, что вас могут взломать с локального хоста, у вас, вероятно, проблемы посерьезнее, чем с вашим демоном NTP.
Меня немного раздражает, что демон игнорирует директиву конфигурации, но я бы не стал считать это серьезной проблемой безопасности.
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 ...