web-dev-qa-db-fra.com

Pourquoi NTPD écoute-t-il autant de ports / adresses?

J'ai remarqué cela pendant un moment, et ça n'a jamais eu de sens pour moi:

Pourquoi ntpd doit écouter autant d'adresses?

Par exemple, une machine debian:

[.____] $ NetStat 
 Donnée locale Proto Nom du programme d'adresse étrangère [.____] UDP 0.0.0.0:123 0.0.0.0:* NTPD [ : * NTPD 
 UDP [LAN]: 123 0.0.0.0:* NTPD [.____] [____] UDP [IPv4]: 123 0.0.0.0:* NTPD 
 UDP6 ::: 123 ::: * NTPD [.____] UDP6 :: 1: 123 ::: * NTPD [.____] UDP6 [Link-local] ::: * NTPD [.____] UDP6 [IPv6] ::: * NTPD 

Ceci (expurgé) netstat liste indique nptd Écoute sur les adresses de diffusion, locales, LAN et globales, pour IPv4 et IPv6.

Pourquoi ntpd si promiscuité?

18
Abraham Vegh

De mon lecture de cette page , il semble que ntp n'utilise pas le INADDR_ANY 0.0.0.0 Adresse exclusivement en partie pour des raisons de sécurité, et en partie pour des raisons d'authentification.

Premier port 123, est inférieur à 1024, et est donc considéré comme un port privilégié, et la racine ne peut se lier à ce port. PNT est généralement définie à abandonner les privilèges après son démarrage. D'après ce que je comprends des listes de courrier, et l'article une fois que les privilèges sont supprimés ne peuvent pas ouvrir un socket pour répondre du port source correcte de 123, de sorte que ntp ouvre des prises pour chaque adresse assignée avant qu'elle ne tombe privilèges.

D'après ce que j'ai lu quelques-uns des mécanismes d'authentification pour ntp exigent essentiellement que la source et le port de destination soit 123, et rien d'autre.

La question est pas tout à fait claire. Voir la section sur le adresse générique0.0.0.0, Il est ouvert par ntpd pour une raison quelconque, mais des commentaires ne doit jamais être utilisé en fait, à l'exception possible dans certains cas rares particuliers, que les développeurs ne sont pas tout à fait sûr, mais ils ne veulent pas enlever la prise, juste au cas où ils cassent les choses.

Notez que devrait normalement ntpd pas accepter des paquets sur les adresses génériques car il y a un certain nombre de problèmes si vous le faites, y compris l'envoi de paquets de retour sur une adresse différente de l'adresse demandée de l'expéditeur. DannyMayer - 27 avril 2009

Je pense que la principale réponse à votre question est dans le commentaire ci-dessus ici.

15
Zoredache

Ce n'est pas du tout promiscuité. Il s'agit simplement d'une liaison avec les adresses IP de l'interface et localhost, sur les protocoles IPv4 et IPv6. Si vous pensez que cela ne devrait pas écouter certaines de celles-ci, changez simplement la configuration listen décrit dans le manuel (cela peut être une version différente que vous utilisez):

 listen on address
         Specify a local IP address or a hostname the ntpd(8) daemon
         should listen on. If it appears multiple times, ntpd(8) will
         listen on each given address. If the exact string '*' is given as
         an address, ntpd(8) will listen on all local addresses. Other-
         wise, address can be followed by an asterisk ('*') and a UDP port
         number to listen on instead of the default 123. ntpd(8) does not
         listen on any address by default. For example:

               listen on *
               listen on 127.0.0.1
               listen on ::1

Dans certaines autres versions, vous devrez modifier les options sur le démon ntpd démon lui-même pour modifier les protocoles/interfaces à écouter (options telles que -4, -6, -I)

16
coredump