GNU/Linux >> Linux Esercitazione >  >> Linux

Server NTP e best practice

NTP sta per "Network Time Protocol". È un protocollo utilizzato dai dispositivi connessi a Internet per sincronizzare l'ora dei propri sistemi con un riferimento orario. Ci sono vari punti importanti sul motivo per cui è importante mantenere l'ora esatta e i principi di funzionamento di NTP sono elementari ma sorprendenti.

Di recente abbiamo presentato un articolo sulla configurazione del server e del client NTP su distribuzioni basate su Ubuntu. Ciò richiede una descrizione dettagliata di come funziona esattamente NTP e perché è importante.

Qual ​​è il requisito dell'ora esatta?

Innanzitutto, vediamo perché in primo luogo è stata sviluppata un'infrastruttura così approfondita in modo che le nostre macchine potessero utilizzare un tempo preciso.

Si verifica una deriva

Ogni volta che si utilizza un sistema informatico, è risaputo che l'orologio hardware inizia a rallentare con il passare del tempo. In alcuni casi questo effetto può anche sommarsi a un'elevata imprecisione. Questo ovviamente non è un effetto desiderabile, quindi è consigliabile utilizzare la sincronizzazione dell'ora.

Gestione registro

Se c'è una rete di più dispositivi, e diciamo che si verifica qualche problema, ciò interessa più sistemi sulla rete. Il modo migliore per tenere traccia del problema e scoprire cosa è successo è controllare i registri di sistema (ulteriori informazioni sul controllo dei file di registro qui). Se uno di questi sistemi è indietro di qualche secondo, sembrerà che sia stato effettuato prima dell'altro sistema, che in realtà è stato colpito per primo. Ciò rende difficile la risoluzione dei problemi e, in generale, la gestione di più sistemi su una rete. Questo era solo un esempio, ma ci sono molte altre e gravi possibilità.

Transazioni

Diversi tipi di transazioni vengono effettuate su Internet. A volte, se l'orologio del tuo sistema è in anticipo sull'ora effettiva, potrebbe mostrare nei registri di sistema del pagamento che il pagamento è arrivato prima che tu abbia effettivamente pagato l'importo. Ciò renderà il pagamento non tuo e darà origine a ulteriori problemi.

O in un caso più simile, a causa dell'imprecisione del tempo, può spesso accadere che il tuo destinatario invii una risposta alla tua e-mail prima ancora che tu abbia inviato l'e-mail in primo luogo. Come puoi immaginare, la precisione del tempo su due diversi sistemi su Internet può essere la radice di diverse conseguenze potenzialmente dannose.

Esecuzione del comando

In una rete, ci sono spesso script scritti per eseguire attività orchestrate su più sistemi. Se un tale script ha parametri temporali, può essere incasinato se un sistema ha un tempo impreciso. Alcuni comandi verranno eseguiti prima del necessario o dopo aver sabotato l'intero processo. Ovviamente non è un bene che succeda.

Ancora una volta, su una nota più simile, il tuo GPS non funzionerebbe correttamente se l'ora non è sincronizzata correttamente tra il tuo sistema e il satellite GPS.

Come funziona?

Pertanto, abbiamo visto diversi motivi per cui mantenere un tempo preciso su una rete è abbastanza importante per incorporare scenari e la nostra vita quotidiana. Fortunatamente per noi, questo non è molto difficile da raggiungere. Usando NTP, possiamo renderlo possibile. Ma allora, come fa NTP a farlo accadere? Vediamo.

Sorgenti temporali

Le fonti temporali definitive devono essere estremamente precise, ovviamente. Queste fonti di tempo sono alcune delle migliori scientificamente possibili in questo momento, la prima delle quali sono Orologi atomici , che utilizzano 9192631770 cicli della radiazione corrispondente alla transizione tra due livelli di energia dell'atomo di cesio-133 allo stato fondamentale come un secondo. A parte questo, i ricevitori per i segnali orari trasmessi da alcune agenzie nazionali di standardizzazione possono essere considerati affidabili come l'ora precisa.

Si dice che queste sorgenti di tempo siano al Stratum 0 livello. Il concetto di strato funziona come descritto:

Concetto di strato

Stratum significa letteralmente "uno di una serie di livelli, livelli o gradazioni in un sistema ordinato", ed è così che viene utilizzato anche nel contesto di NTP. Il livello dello strato 0 è il tempo più preciso possibile. Se un server sincronizza l'ora con una sorgente di strato 0, si tratta di una sorgente di strato 1. E se fornisce tempo a un altro server, quel server è una fonte di strato 2 volte. Man mano che i livelli continuano a salire, anche il numero di strato assegnato al server di solito continua a salire. Quindi più basso è il numero di strato assegnato a un server, più preciso sarà l'orario.

I livelli di falda vengono considerati fino allo strato 16, dopodiché la differenza di tempo è eccessiva. In molti scenari, si consiglia di utilizzare solo server fino a 4 strati.

Server Strato 1

Un server di livello 0 di strato non può essere utilizzato da utenti regolari come noi. Gli orologi atomici e le fonti orarie delle agenzie nazionali sono gestiti direttamente dal governo.

Andando più in alto, un server di strato 1 è un server collegato direttamente a un orologio hardware, che si trova ai livelli di strato 0. Questo è il miglior server di origine dell'ora possibile perché lo strato 0 non è in realtà un server ma un orologio. Il server a cui si può effettivamente connettere è lo stratum 1 server, che riceve direttamente l'ora dall'orologio hardware.

Un server di strato 1 deve avere un server preciso e ben mantenuto. Dovrebbe anche essere altamente disponibile poiché altri sistemi potrebbero fare affidamento sul suo servizio orario.

Processo di sincronizzazione dell'ora

Prima di tutto, per configurare l'NTP sul tuo sistema, devi scegliere i server che utilizzerai per sincronizzare l'ora. Per questo, puoi scegliere il server che desideri utilizzare e configurare le impostazioni sul software del tuo sistema.

Come viene sincronizzata l'ora

Il processo di sincronizzazione inizia con il sistema e il server NTP che si scambiano più pacchetti di dati per un po' di tempo. Ciò che sta effettivamente accadendo è che viene calcolato il tempo impiegato dal pacchetto per completare un viaggio di andata e ritorno al server NTP e ritorno. Il tempo viene inviato in quei pacchetti di dati dal server NTP e il tempo di viaggio calcolato viene dedotto di conseguenza. Ad esempio:

Il sistema ha l'ora 17:00:05 quando invia il pacchetto. Il sistema ora riceve la risposta dal server NTP alle 17:00:11. Il server NTP ha inviato le informazioni sull'ora, che in realtà sono le 17:05:23 in questo momento. Ma quando guardi il tempo di viaggio impiegato dal pacchetto, che è di 6 secondi, significa che ci sono voluti 3 secondi per andare al server e altri 3 per tornare. Ciò significa che l'ora era 17:05:23 3 secondi fa, non in questo momento. Quindi l'ora viene di conseguenza regolata alle 17:05:26.

(Ovviamente ho allargato la scala a un livello molto alto, ma è solo per motivi di spiegazione. Queste differenze sono in realtà in millisecondi, ma la logica è la stessa).

L'intero processo di scambio di pacchetti dura circa 5 minuti per garantire l'ora corretta e garantire che l'offset sia stato corretto. Ovviamente, più brevi, coerenti e simmetrici sono gli scambi di pacchetti, più accurato sarà il tempo. Il protocollo NTP utilizza pacchetti UDP e IP per questo processo a causa della loro velocità e affidabilità. La porta utilizzata è 123. Si dice che la precisione del tempo sia in genere compresa tra 5 e 100 ms.

Se la differenza di orario tra il server NTP e il sistema è sufficientemente piccola, la cambierà rapidamente. Se la differenza di orario è grande, l'ora viene modificata costantemente con piccole differenze fino a quando non viene corretta.

Migliori pratiche

Disponi di più server

Questa è la pratica più altamente raccomandata:avere più server NTP ridondanti se uno utilizza malfunzionamenti o diventa impreciso per qualche motivo. Non ci saranno molte perdite se la rete può essere collegata immediatamente a un altro server NTP. Inoltre, sarà ancora meglio se puoi impostare script in grado di attivare e connettere automaticamente la rete a uno dei server ridondanti quando vengono forniti determinati segnali ovvi (come non ricevere pacchetti dal server NTP, ecc.).

Considera il layout di rete

La rete dovrebbe essere strutturata in modo che i sistemi che richiedono tempi più precisi siano fisicamente più vicini e direttamente collegati al server NTP. Se sono presenti sottoreti, dovrebbero essere utilizzate per attività che relativamente non richiedono tempi precisi.

Comunicazioni NTP sicure

Poiché NTP è basato su UDP, è un protocollo incentrato su molte cose, quindi a seconda del sistema potrebbero esserci potenziali vulnerabilità. È sempre una buona idea proteggere la connessione NTP con l'autenticazione.

Limita l'accesso

La protezione della rete dagli aggressori esterni è sicuramente importante, ma lo è anche la prevenzione di una cattiva gestione. Limitando l'accesso ai server NTP per il numero minimo di persone, puoi assicurarti di avere il minor numero possibile di errori umani e, in più, puoi essere certo che non sarà gestito da qualcuno che non ha la comprensione tecnica effettivamente per gestire la rete.

Evita i loop temporali

A parte i potenziali clienti di fantascienza, dovresti sempre assicurarti di evitare il loop temporale nella struttura della rete. Supponiamo che A agisca come server per B e B per C. Ora, se C viene nuovamente assegnato come server per A, le cose possono diventare disordinate. Ovviamente, nessuno sano di mente lo farebbe, ma a volte può accadere accidentalmente, quindi controllare il layout della rete NTP di tanto in tanto è una buona idea.

Conclusione

NTP è un protocollo eccellente ed efficiente per assicurarsi che il tuo sistema abbia sempre l'ora corretta. Può diventare un po' complicato in una rete di grandi dimensioni o in un ambiente d'ufficio, ma essere un po' attenti e avere buoni layout può fare molto. Ci auguriamo che l'articolo sia stato utile.


Linux
  1. Best practice per la sicurezza di OpenSSH

  2. Come impostare il fuso orario e sincronizzare l'ora del server con NTP in Linux

  3. Sincronizza l'ora del server Linux con il server dell'ora di rete

  4. Come sincronizzare l'ora usando NTP nel server Ubuntu?

  5. Come installare e configurare server e client NTP Linux

Rafforzamento del server Linux:migliori pratiche

La migliore distribuzione di server Linux:i primi 10 a confronto e la nostra raccomandazione

Configurazione del server Ubuntu – Procedure consigliate per la sicurezza

Come impostare la sincronizzazione dell'ora con NTP su Ubuntu 18.04

Usa NTP per sincronizzare l'ora

I 20 migliori software e soluzioni per server di posta Linux