Perché NTP richiede l'accesso firewall bidirezionale alla porta UDP 123?


17

Da quali sono le regole iptables per consentire ntp? :

iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p udp --sport 123 -j ACCEPT

Inoltre, dal sito Web NTP :

... ntpd richiede l'accesso bidirezionale completo alla porta UDP privilegiata 123. ...

La mia domanda è: perché? A qualcuno che non ha familiarità con NTP, questo sembra un potenziale buco nella sicurezza, specialmente quando chiedo a un mio cliente di aprire quella porta nel suo firewall in modo che i miei server possano mantenere il loro tempo sincronizzato. Qualcuno ha una giustificazione decente che posso dare al mio cliente per convincerli che ho bisogno di questo accesso nel firewall? L'aiuto è apprezzato! :)


2
Hai letto la parte relativa a "consenti correlati / stabiliti"? Se questa regola è presente non è necessaria una regola di input generale per la porta UDP 123.
VMai

1
È davvero una potenziale falla nella sicurezza? Questa è un'altra frase ripetuta che ritengo insignificante. È il 2014, è tempo di non dare alle porte meno di 1024 proprietà speciali e bloccare tutto il traffico che non è esplicitamente richiesto. Stai aprendo una porta su una macchina da determinati host su Internet.
dfc,

Sono d'accordo, non è davvero un potenziale buco nella sicurezza, ma lavoro nel settore finanziario e le persone sono sempre nervose per l'apertura dei firewall nel caso in cui "qualcosa passa". Vale sempre la pena avere una buona giustificazione a portata di mano, in più sono curioso di sapere da solo la risposta: ntpd su un server temporale effettua effettivamente connessioni in uscita ai suoi client per inviare aggiornamenti temporali? Sembra strano e non particolarmente scalabile.
DuffJ,

Ho cercato su Google questo alcuni giorni fa, può gestirlo senza una connessione in entrata effettuata.
barlop

@VMai la persona che ha detto che su superuser.com/questions/141772/… non ha dato alcun esempio, ma penso che intendesse abilitare connessioni in uscita, pacchetti che arrivano al loro interno. Ciò è diverso dal concetto che "ntpd richiede un accesso bidirezionale completo alla porta UDP privilegiata 123. ..." che suona come una connessione in entrata. Se avesse voluto consentire l'uso in entrata e in uscita in relazione / stabilito, avrebbe bisogno di 4 regole. 2 per le connessioni in entrata, 2 per le connessioni in uscita.
barlop

Risposte:


10

Devi solo consentire le porte NTP del traffico in entrata se agisci come server, consentendo ai client di sincronizzarti.

Altrimenti, l'esistenza di uno stato NTP determinerà automaticamente se il pacchetto NTP in arrivo è bloccato o consentito da uno stato del firewall esistente che abbiamo avviato.

iptables -A OUTPUT -p udp --sport 123 --dport 123 -j ACCEPT

iptables -A INPUT -m state --state STTABLISHED, RELATED -j ACCEPT

Per favore fatemi sapere se le regole di iptables sono corrette. Non ho esperienza con iptables. Il mio client NTP rimane sincronizzato sul mio router pfSense con solo una regola di consenso in uscita perché pfSense è un firewall con stato.


1
Questo sembra ragionevole! Purtroppo non sono più in grado di confermare la correttezza della tua risposta; tuttavia, lo accetterò perché sembra logico. Grazie molto!
DuffJ,

1

NTP richiede l'accesso bidirezionale sulla porta 123 poiché NTP RFC specifica quanto segue per quanto riguarda la porta di origine del client:

Quando si opera in modalità simmetrica (1 e 2), questo campo deve contenere il numero di porta NTP PORT (123) assegnato da IANA.

Poiché la porta di origine del client è 123, quando il server restituisce la risposta, la invierà alla porta 123. Naturalmente, per essere in grado di ricevere quella risposta, il client deve consentire le risposte in entrata sulla porta 123. Normalmente le risposte ritornano su un intervallo di porte effimero .

Come menzionato da Ben Cook , questo è necessario solo quando si ha a che fare con un firewall senza stato poiché un firewall con stato consentirebbe la risposta senza una regola esplicita.


0

Penso che la soluzione migliore sia abilitare la porta 123 per l'input, solo per gli indirizzi IP previsti per dare al tuo server il segnale ntp.
All'interno del file di configurazione ntp, /etc/ntp.conf, ci sono gli indirizzi di diversi server ntp su cui dovrebbe puntare il server. È possibile utilizzare il comando lookup per trovare l'ip corrispondente per ciascun indirizzo.

host -t a 0.debian.pool.ntp.org

Quindi è possibile aggiungere la regola al firewall del server:

iptables -I INPUT -p udp -s 94.177.187.22 -j ACCEPT

... e così via.
Ciò può impedire a qualsiasi persona malintenzionata di danneggiare il server.
Penso che sia inutile limitare l'output.


-1

La comunicazione da server NTTP a server è la porta di origine e destinazione 123. È più conveniente consentire esplicitamente ciò almeno agli host su cui si esegue un servizio NTTP.

Potresti considerare di esporre un host esterno a Internet solo per ottenere tempo da fonti esterne. Un servizio ntp interno sincronizzato con questo può essere la fonte per tutti i dispositivi. Se questi host sono dedicati allo scopo, la possibile esposizione è limitata: accettano solo traffico ntp e non memorizzano altri dati.

In alternativa, non utilizzare affatto una rete IP esterna. Ad esempio, utilizzare una sorgente radio come il GPS.

http://www.diablotin.com/librairie/networking/firewall/ch08_13.htm http://support.ntp.org/bin/view/Support/Tro troubleshootingNTP


1
Grazie per questa risposta, ma non risponde alla domanda. Cosa succede se sono l'amministratore di sistema e voglio aprire il firewall in modo da poter configurare il servizio NTP interno? Nessuno sembra ancora avere idea del perché per NTP sia richiesto l'accesso bidirezionale (che è molto più pericoloso dell'accesso unidirezionale).
DuffJ,
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.