Назад | Перейти на главную страницу

Почему демон NTP продолжает прослушивать UDP6?

У меня чистая установка 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 ...