¿Por qué es importante que los servidores tengan exactamente la misma hora?

35

He leído varias veces (aunque no puedo encontrarlo ahora) que los centros de datos hacen un gran esfuerzo para asegurarse de que todos los servidores tengan exactamente la misma hora. Incluyendo, pero no limitado a preocuparse por los segundos bisiestos.

¿Por qué es tan importante que los servidores tengan el mismo tiempo? ¿Y cuáles son las tolerancias reales?

Jens Schauder
fuente

Respuestas:

53

Seguridad

En general, las marcas de tiempo se usan en varios protocolos de autenticación para ayudar a prevenir ataques de repetición , donde un atacante puede reutilizar un token de autenticación que pudo robar (por ejemplo, olfateando la red).

La autenticación Kerberos hace exactamente esto, por ejemplo. En la versión de Kerberos utilizada en Windows, la tolerancia predeterminada es de 5 minutos.

Esto también lo utilizan varios protocolos de contraseña de un solo uso para la autenticación de dos factores, como Google Authenticator, RSA SecurID, etc. En estos casos, la tolerancia suele ser de unos 30-60 segundos.

Sin el tiempo sincronizado entre el cliente y el servidor, no sería posible completar la autenticación. (Esta restricción se elimina en las versiones más recientes de MIT Kerberos, al hacer que el solicitante y KDC determinen el desplazamiento entre sus relojes durante la autenticación, pero estos cambios ocurrieron después de Windows Server 2012 R2 y pasará un tiempo antes de que lo vea en Windows versión, pero algunas implementaciones de 2FA probablemente siempre necesiten relojes sincronizados).

Administración

Tener relojes sincronizados hace que sea más fácil trabajar con sistemas dispares. Por ejemplo, correlacionar las entradas de registro de varios servidores es mucho más fácil si todos los sistemas tienen el mismo tiempo. En estos casos, generalmente puede trabajar con una tolerancia de 1 segundo, que proporcionará NTP, pero idealmente desea que los tiempos estén tan sincronizados como sea posible. PTP, que proporciona tolerancias mucho más estrictas, puede ser mucho más costoso de implementar.

Michael Hampton
fuente
16
+1 Condiciones de error de solución de problemas en ystems distribuidos con marcas de tiempo de registro fuera de sincronización: nunca más
Mathias R. Jessen
3
Los servidores que ejecutan un demonio NTP generalmente se sincronizan en 0.01 segundos (unos pocos milisegundos). La sincronización nativa de Windows NTP solo se verifica algunas veces al día y no es tan precisa. Hay clientes NTP disponibles para Windows, que proporcionan una buena sincronización.
BillThor
+1 para esta respuesta, porque solo compruebo la hora de mi sistema y llegué 5 segundos tarde, pero ahora estoy usando ntp para sincronizar, sería bueno agregar a la pregunta un enlace a ntp.org para que las personas puedan verificar su system
Freedo
2
makeTambién se confunde con los sesgos de reloj entre el cliente / servidor NFS.
Sobrique
@BillThor su información sobre el servicio de hora de Windows está aproximadamente una década atrás. Ha sido un cliente NTP completo desde el lanzamiento de 2003R2, y sincroniza parte del agente adaptativo de un dominio AD. Vemos desplazamientos típicos de <16 ms en 2008R2 los límites de la marca del temporizador del sistema de 64Hz. Vemos una mejor cronometraje en las casillas 2012+ que pueden usar intervalos de marca más pequeños.
rmalayter
17

Principalmente, es para que pueda correlacionar incidentes de registros en diferentes dispositivos. Suponga que tiene un incidente de seguridad en el que alguien accede a su base de datos a través de su servidor web: desea que las marcas de tiempo en su firewall, su equilibrador de carga, su servidor web y su servidor de base de datos coincidan para que pueda encontrar los registros en cada dispositivo que se relacionan con el incidente. Idealmente, le gustaría que todo esté dentro de unos pocos milisegundos. Y debe estar sincronizado con el tiempo externo real, para que también pueda correlacionar sus registros con registros de terceros si fuera necesario.

Mike Scott
fuente
2
Además, algunas soluciones de seguridad como ldap y / o kerberos fallarán si no se sincroniza el tiempo. Al igual que algunas soluciones de alta disponibilidad.
Jenny D dice Reinstate Monica el
7

No solo es importante desde la perspectiva de la administración, sino que tener relojes sincronizados también puede ser importante desde la correlación a nivel de aplicación. Esto depende de cómo se diseñe la solución, cómo las aplicaciones que se ejecutan obtienen su marca de tiempo para cualquier transacción con la que puedan trabajar. He visto fallar la validación de transacciones debido a una aplicación que se ejecuta en un servidor con demasiado desplazamiento (fue de aproximadamente 20 segundos en el futuro) en comparación con los otros con los que estaba interactuando.

Además, si se virtualiza en, por ejemplo, el servidor VMWare ESXi, y el tiempo de la VM no está sincronizado con el del hipervisor, entonces una acción como vmotion puede volver a sincronizar el reloj de la VM con los hipervisores y esto a su vez puede conducir a resultados impredecibles si la diferencia horaria es lo suficientemente grande

No sé cuáles son las tolerancias reales, porque creo que depende mucho de qué tipo de sistemas hay, pero creo que, en términos generales, es posible mantener los servidores en el centro de datos con una compensación de menos de un segundo entre sí.

Petter H
fuente
6

Como mencionó los segundos bisiestos, debe tenerse en cuenta que requieren un manejo particularmente difícil.

Por lo general, se agregan inyectando un segundo como 23:59:60, esto es problemático si está validando marcas de tiempo como 0-59 para los campos de minutos y segundos. La alternativa de repetir 23:59:59 para que dure 2 segundos no es mucho mejor, ya que eso afectará cualquier cosa que sea sensible al tiempo hasta un nivel por segundo.

En realidad, Google ideó una buena solución hace un tiempo que parece que aún no se ha adoptado ampliamente. Su solución fue aplicar una "mancha" de salto y dividir el cambio durante un período de tiempo, todo el proceso siendo administrado por un servidor NTP. Publicaron un blog al respecto en 2011, es una lectura interesante y parece relevante para esta pregunta.

Kaithar
fuente
Se parece mucho a algunos de los clientes NTP serie comportamiento , que ha sido implementado como siempre.
un CVn
@ MichaelKjörling tipo de. La diferencia es que la rotación tiene como objetivo evitar grandes saltos después de que se determina que el reloj está mal al hacer una corrección con el tiempo. Lo que Google hizo fue agregar intencionalmente un desplazamiento a su servidor ntp, girando de antemano y, por lo tanto, nunca teniendo el segundo salto.
Kaithar
5

Siempre que intervienen marcas de tiempo, los dispositivos desincronizados pueden crear incoherencias lógicas, como: A envía una consulta a B, y la respuesta de B viene con una marca de tiempo anterior a la de la consulta, lo que posiblemente haga que A la ignore.

Harry Cover
fuente
4

Estoy de acuerdo con todo el punto anterior. Quiero pensar más.
Algunas bases de datos como Cassendra dependen en gran medida de la marca de tiempo . Esa es la forma en que trata la concurrencia.

Diferentes marcas de tiempo arruinarán la base de datos.

Francois Combet
fuente
2
Esto se publica mejor como un comentario
Dave M
Así que actualicé glibc en un montón de máquinas CentOS 5.2, y la actualización accidentalmente configuró la mitad de la zona horaria MST: inmediatamente tuvimos problemas con los usuarios que se desconectaban al azar debido a "inactividad". Todo tipo de pequeños artilugios y evasiones esperan que el tiempo sea más o menos correcto. Además, si su tiempo es incorrecto y se corrige automáticamente, usted termina con archivos y marcas de tiempo de registro que son realmente confusas y provienen del futuro ...
Algunos Linux Nerd
Esperaría que esto sea cierto para muchas bases de datos distribuidas. Una diferencia en las marcas de tiempo de solo unos segundos podría ser suficiente para invertir el orden de dos operaciones.
Kaithar