Perché ntpd è in ascolto su così tante porte / indirizzi?


18

L'ho notato per un po 'e non ha mai avuto senso per me:

Perché è ntpdnecessario ascoltare su così tanti indirizzi?

Ad esempio, una macchina Debian:

$ netstat
Indirizzo locale Proto Indirizzo esterno Nome del programma
udp 0.0.0.0:123 0.0.0.0:* ntpd
udp 127.0.0.1:123 0.0.0.0:* 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

Questo netstatelenco (redatto) mostra l' nptdascolto su indirizzi broadcast, locali, LAN e globali, per IPv4 e IPv6.

Perché è ntpdcosì promiscuo?

Risposte:


15

Dalla mia lettura di questa pagina , sembra che ntp non usi l' 0.0.0.0indirizzo INADDR_ANY esclusivamente in parte per motivi di sicurezza e in parte per motivi di autenticazione.

La prima porta 123, è inferiore a 1024, quindi è considerata una porta privilegiata e solo root può associarsi a quella porta. Ntp è in genere impostato per eliminare i privilegi dopo l'avvio. Da quello che ho capito dalle liste di posta e l'articolo, una volta che i privilegi sono stati rilasciati, non è possibile aprire un socket per rispondere dalla porta di origine corretta di 123, quindi ntp apre socket per ogni indirizzo assegnato prima di rilasciare i privilegi.

Da quello che ho letto alcuni dei meccanismi di autenticazione per ntp richiedono sostanzialmente che la porta di origine e di destinazione sia 123 e nient'altro.

La questione non è del tutto chiara. Vedi la sezione sull'indirizzo jolly 0.0.0.0 , è aperto da ntpd per qualche motivo, ma dai commenti non dovrebbe mai essere effettivamente utilizzato, tranne possibile in alcuni rari casi speciali, di cui gli sviluppatori non sono del tutto sicuri, ma non non voglio rimuovere la presa, nel caso in cui rompano le cose.

Si noti che normalmente ntpd non dovrebbe accettare pacchetti sugli indirizzi jolly poiché in tal caso si verificano numerosi problemi, incluso l'invio di pacchetti di ritorno su un indirizzo diverso dall'indirizzo richiesto dal mittente. DannyMayer - 27 aprile 2009

Penso che la risposta principale alla tua domanda sia nel commento sopra qui.


16

Non è affatto promiscuo. È solo vincolante per gli indirizzi IP dell'interfaccia e localhost, sia sui protocolli ipv4 che ipv6. Se pensi che non dovrebbe essere in ascolto di alcuni di questi, cambia la listenconfigurazione come spiegato nel manuale (questo potrebbe essere per una versione diversa che stai utilizzando):

 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

In alcune altre versioni è necessario modificare le opzioni per la ntpdstessa daemon al cambiamento su quali protocolli / interfacce di ascoltare (opzioni come -4, -6, -I)


1
Feliz Ano Novo!
user9517

1
Non penso che questo risponda davvero alla domanda. Penso che la domanda sia in sostanza la domanda sul perché INADDR_ANYnon venga utilizzata come quasi tutti gli altri protocolli. L'articolo a cui mi collego nella mia risposta sembra chiarire che è in parte una funzionalità di sicurezza e in parte il modo in cui il protocollo è progettato per aspettarsi risposte sulla porta 123.
Zoredache,

Questa è un'informazione molto utile che volevo sapere, e ti ringrazio per questo, ma la risposta di @ Zoredache in realtà risponde alla domanda che ho posto, quindi l'ho contrassegnata come risposta. Voti positivi tutt'intorno. ;)
Abraham Vegh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.