Perché è importante che i server abbiano lo stesso orario?


35

Ho letto più volte (anche se non riesco a trovarlo in questo momento) che i data center si impegnano molto per assicurarsi che tutti i server abbiano lo stesso orario. Compreso, ma non limitato a preoccuparsi dei secondi bisestili.

Perché è così importante che i server abbiano lo stesso tempo? E quali sono le tolleranze effettive?

Risposte:


53

Sicurezza

In generale, i timestamp sono utilizzati in vari protocolli di autenticazione per aiutare a prevenire gli attacchi di rigiocabilità , in cui un utente malintenzionato può riutilizzare un token di autenticazione che è stato in grado di rubare (ad esempio, annusando la rete).

L'autenticazione Kerberos fa esattamente questo, per esempio. Nella versione di Kerberos utilizzata in Windows, la tolleranza predefinita è 5 minuti.

Questo è anche usato da vari protocolli password monouso usati per l'autenticazione a due fattori come Google Authenticator, RSA SecurID, ecc. In questi casi la tolleranza è generalmente di circa 30-60 secondi.

Senza la sincronizzazione tra client e server, non sarebbe possibile completare l'autenticazione. (Questa restrizione viene rimossa nelle versioni più recenti di MIT Kerberos, facendo in modo che il richiedente e il KDC determinino l'offset tra i loro orologi durante l'autenticazione, ma queste modifiche si sono verificate dopo Windows Server 2012 R2 e passerà un po 'di tempo prima di vederlo in Windows versione. Ma alcune implementazioni di 2FA avranno probabilmente sempre bisogno di orologi sincronizzati.)

Amministrazione

La sincronizzazione degli orologi semplifica il lavoro con sistemi diversi. Ad esempio, correlare le voci di registro da più server è molto più semplice se tutti i sistemi hanno lo stesso tempo. In questi casi di solito puoi lavorare con una tolleranza di 1 secondo, che NTP fornirà, ma idealmente vuoi che i tempi siano strettamente sincronizzati quanto ti puoi permettere. Il PTP, che offre tolleranze molto più strette, può essere molto più costoso da implementare.


16
+1 Condizioni di errore per la risoluzione dei problemi su ystem distribuiti con data e ora di registrazione fuori sincrono: mai più
Mathias R. Jessen,

3
I server che eseguono un demone NTP sono in genere sincronizzati entro 0,01 secondi (pochi millisecondi). La sincronizzazione nativa di Windows NTP controlla solo poche volte al giorno e non è così accurata. Ci sono client NTP disponibili per Windows, che forniscono una buona sincronizzazione.
BillThor,

+1 per questa risposta, poiché ho appena controllato l'ora del mio sistema ed ero in ritardo di 5 secondi, ma ora sto usando ntp per sincronizzare, sarebbe bene aggiungere alla domanda un link a ntp.org in modo che le persone possano controllare il proprio sistema
Freedo,

2
makeviene anche confuso dalle inclinazioni dell'orologio tra client / server NFS.
Sobrique,

@BillThor le tue informazioni sul servizio orario di Windows sono circa un decennio indietro. È stato un client NTP completo dal rilascio di 2003R2 e sincronizza in modo adattivo parte di un dominio AD. Vediamo <16 ms offset tipici su 2008R2 i limiti del tick del timer di sistema a 64Hz. Vediamo un cronometraggio ancora migliore su caselle 2012+ che possono utilizzare intervalli di tick più piccoli.
rmalayter,

17

Principalmente, è così che è possibile correlare gli incidenti dai registri su diversi dispositivi. Supponiamo che tu abbia un incidente di sicurezza in cui qualcuno accede al tuo database attraverso il tuo server web: vuoi che i timestamp sul tuo firewall, il tuo bilanciamento del carico, il tuo server web e il tuo server di database coincidano in modo da poter trovare i registri su ciascun dispositivo che riguardano l'incidente. Idealmente, vorresti che tutto fosse entro pochi millisecondi. Inoltre, deve essere sincronizzato con l'ora esterna effettiva, in modo che sia possibile correlare i registri con i registri di terze parti, se necessario.


2
Inoltre, alcune soluzioni di sicurezza come ldap e / o kerberos falliranno se il tempo non è sincronizzato. Come alcune soluzioni HA.
Jenny D dice Ripristina Monica il

7

Non solo è importante dal punto di vista amministrativo, ma avere gli orologi sincronizzati può essere importante anche dalla correlazione a livello di applicazione. Questo dipende da come viene progettata la soluzione, da come le applicazioni in esecuzione ottengono il loro timestamp per qualsiasi transazione con cui potrebbero funzionare. Ho visto la convalida della transazione fallire a causa di un'applicazione in esecuzione su un server con un offset eccessivo (era di circa 20 secondi in futuro) rispetto alle altre con cui interagiva.

Anche se la virtualizzazione, ad esempio sul server VMWare ESXi, e il tempo della VM non sono sincronizzati con quello dell'hypervisor, un'azione come vmotion potrebbe risincronizzare l'orologio della VM con gli hypervisor e questo a sua volta può portare a risultati imprevedibili se la differenza di tempo è abbastanza grande.

Non so quali siano le tolleranze effettive, perché penso che dipenda molto dal tipo di sistemi esistenti, ma in generale penso che sia possibile mantenere i server nel datacenter con un offset di meno di un secondo l'uno rispetto all'altro.


6

Dato che hai citato i secondi bisestili, va notato che richiedono una gestione particolarmente difficile.

Di solito vengono aggiunti iniettando un secondo come 23:59:60, questo è problematico se si stanno convalidando i timestamp come 0-59 per i campi minuti e secondi. L'alternativa di ripetere 23:59:59 per farla durare 2 secondi non è molto meglio dal momento che guasterà tutto ciò che è sensibile al tempo fino a un livello al secondo.

Google in realtà ha trovato una buona soluzione qualche tempo fa che sembra non essere stata ancora ampiamente adottata. La loro soluzione era quella di applicare una "macchia" di salto e dividere la modifica per un periodo di tempo, l'intero processo è gestito da un server NTP. Hanno pubblicato un blog a riguardo nel 2011, rende la lettura interessante e sembra rilevante per questa domanda.


Suona un po 'come alcuni clienti NTP pantano comportamento , che è stato attuato come sempre.
un CVn

@ MichaelKjörling tipo di. La differenza è che la rotazione ha lo scopo di evitare grandi salti dopo che l'orologio è stato giudicato errato apportando una correzione nel tempo. Quello che ha fatto Google è stato aggiungere intenzionalmente un offset al proprio server ntp, ruotando in anticipo e senza mai fare il salto di qualità.
Kaithar,

5

Ogni volta che sono coinvolti i timestamp, i dispositivi non sincronizzati possono creare incoerenze logiche, come ad esempio: A invia una query a B e la risposta di B arriva con un timestamp precedente a quello della query, facendo sì che A la ignori.


4

Sono d'accordo con tutto il punto sopra. Voglio fare più pensieri.
Alcuni database come Cassendra fanno molto affidamento sul timestamp . Questo è il modo in cui affronta la concorrenza.

Timestamp diversi rovinano in modo complicato il database.


2
Questo è meglio pubblicato come commento
Dave M

Quindi ho aggiornato glibc su un sacco di macchine CentOS 5.2 e l'aggiornamento ha impostato accidentalmente metà del fuso orario MST - abbiamo subito avuto problemi con gli utenti che si disconnettevano casualmente per "inattività". Tutti i tipi di piccoli widget e schivate si aspettano che il tempo sia più o meno corretto. Anche se il tuo tempo è sbagliato e viene corretto automaticamente, tornerai con i file e registrerai i timestamp che sono davvero confusi e provengono dal futuro ...
Alcuni nerd Linux

Mi aspetto che ciò sia vero per molti database distribuiti. Una differenza di timestamp di soli pochi secondi potrebbe essere sufficiente per invertire l'ordine di due operazioni.
Kaithar,
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.