GNU/Linux >> Tutoriales Linux >  >> Linux

Servidor NTP y mejores prácticas

NTP significa "Protocolo de tiempo de red". Es un protocolo utilizado por dispositivos conectados a Internet para sincronizar la hora de sus sistemas con una referencia de tiempo. Hay varios puntos importantes sobre por qué es importante mantener la hora precisa, y los principios de funcionamiento de NTP son elementales pero sorprendentes.

Recientemente presentamos un artículo sobre la configuración del servidor y el cliente NTP en distribuciones basadas en Ubuntu. Esto requiere una descripción detallada de cómo funciona exactamente NTP y por qué es importante.

¿Cuál es el requisito de la hora exacta?

Primero, veamos por qué, en primer lugar, se desarrolló una infraestructura tan profunda para que nuestras máquinas pudieran usar la hora precisa.

Se produce un desvío

Cada vez que utiliza un sistema informático, es un hecho bien observado que el reloj del hardware comienza a retrasarse a medida que pasa el tiempo. Este efecto puede incluso sumar una gran imprecisión en algunos casos. Obviamente, este no es un efecto deseable, por lo que es aconsejable utilizar la sincronización de tiempo.

Gestión de registros

Si hay una red de múltiples dispositivos y, por ejemplo, ocurre algún problema, eso afecta a múltiples sistemas en la red. La mejor manera de rastrear el problema y averiguar qué sucedió es revisando los registros del sistema (más información sobre cómo revisar los archivos de registro aquí). Si uno de esos sistemas se retrasa unos segundos, parecerá que se ha efectuado antes que el otro sistema, que en realidad se vio afectado primero. Esto dificulta la resolución de problemas y, en general, la administración de múltiples sistemas en una red. Este fue solo un ejemplo, pero hay muchas más y severas posibilidades.

Transacciones

Varios tipos de transacciones se realizan a través de Internet. A veces, si el reloj de su sistema está adelantado con respecto a la hora real, es posible que muestre en los registros del sistema del pago que el pago llegó antes de que realmente pagara el monto. Esto hará que el pago no sea tuyo y dará lugar a más problemas.

O en un caso más similar, debido a la inexactitud del tiempo, a menudo puede ocurrir que su destinatario envíe una respuesta a su correo electrónico incluso antes de que usted haya enviado el correo electrónico en primer lugar. Como puede imaginar, la precisión del tiempo en dos sistemas diferentes en Internet puede ser la raíz de varias consecuencias potencialmente dañinas.

Ejecución de comandos

En una red, a menudo hay scripts escritos para ejecutar tareas orquestadas en múltiples sistemas. Si dicho script tiene parámetros de tiempo, puede estropearse si un sistema tiene un tiempo inexacto. Algunos comandos se ejecutarán antes de lo necesario o después de sabotear todo el proceso. Obviamente, esto no es bueno que suceda.

Nuevamente, en una nota más similar, su GPS realmente no funcionaría correctamente si la hora no está sincronizada correctamente entre su sistema y el satélite GPS.

¿Cómo funciona?

Por lo tanto, hemos visto varias razones por las que mantener la hora precisa en una red es muy importante para incorporar escenarios y nuestra vida diaria. Por suerte para nosotros, esto no es muy difícil de lograr. Usando NTP, podemos hacer esto posible. Pero entonces, ¿cómo NTP hace que eso suceda? Veamos.

Fuentes de tiempo

Las fuentes de tiempo definitivas tienen que ser extremadamente precisas, por supuesto. Estas fuentes de tiempo son algunas de las mejores científicamente posibles en este momento, la primera de las cuales son los relojes atómicos , que utilizan 9192631770 ciclos de la radiación correspondiente a la transición entre dos niveles de energía del átomo de cesio-133 en estado fundamental como un segundo. Aparte de eso, se puede confiar en los receptores de las señales horarias emitidas por algunas agencias nacionales de estándares como la hora precisa.

Se dice que estas fuentes de tiempo están en el Stratum 0 nivel. El concepto de estrato funciona como se describe:

Concepto de estrato

Estrato significa literalmente "una de una serie de capas, niveles o gradaciones en un sistema ordenado", y así es como se usa también en el contexto de NTP. El nivel del estrato 0 es el tiempo más preciso posible. Si un servidor sincroniza la hora con una fuente de tiempo de estrato 0, es una fuente de tiempo de estrato 1. Y si proporciona tiempo a otro servidor, ese servidor es una fuente de tiempo de estrato 2. A medida que las capas siguen subiendo, el número de estrato asignado al servidor también suele seguir subiendo. Por lo tanto, cuanto menor sea el número de estrato asignado a un servidor, más precisa será la hora.

Los niveles del estrato se consideran hasta el estrato 16, después del cual la diferencia horaria es demasiado. En muchos escenarios, solo se recomienda usar servidores de estrato 4 como máximo.

Servidor de estrato 1

Los usuarios habituales como nosotros no pueden utilizar un servidor de nivel stratum 0. Los relojes atómicos y las fuentes de tiempo de las agencias nacionales son administrados directamente por el gobierno.

Yendo más arriba en la línea, un servidor de estrato 1 es un servidor que está conectado directamente a un reloj de hardware, que está en los niveles de estrato 0. Este es el mejor servidor de fuente de tiempo posible porque el estrato 0 no es en realidad un servidor sino un reloj. El servidor al que realmente se puede conectar es el servidor de estrato 1, que recibe directamente la hora del reloj del hardware.

Un servidor de estrato 1 tiene que tener un sistema preciso y bien mantenido. También debe tener una alta disponibilidad ya que otros sistemas pueden depender de su servicio de tiempo.

Proceso de sincronización de tiempo

En primer lugar, para configurar el NTP en su sistema, debe elegir los servidores que usará para sincronizar la hora. Para eso, puede elegir el servidor que desea usar y configurar los ajustes en el software de su sistema.

Cómo se sincroniza el tiempo

El proceso de sincronización comienza cuando el sistema y el servidor NTP intercambian varios paquetes de datos durante bastante tiempo. Lo que realmente sucede es que se calcula el tiempo que tarda el paquete en completar un viaje de ida y vuelta al servidor NTP y viceversa. El tiempo es enviado en esos paquetes de datos por el servidor NTP, y el tiempo de viaje calculado se deduce en consecuencia. Por ejemplo:

El sistema tiene la hora 17:00:05 cuando envía el paquete. El sistema ahora recibe la respuesta del servidor NTP a las 17:00:11. El servidor NTP ha enviado la información de la hora, que en realidad son las 17:05:23 en este momento. Pero cuando miras el tiempo de viaje que toma el paquete, que es de 6 segundos, significa que tardó 3 segundos en ir al servidor y 3 más en regresar. Esto significa que la hora era 17:05:23 hace 3 segundos, no en este momento. Por lo tanto, la hora se ajusta en consecuencia a las 17:05:26.

(Por supuesto, he ampliado la escala en un grado muy alto, pero eso es solo por el bien de la explicación. Estas diferencias están en milisegundos en realidad, pero la lógica es la misma).

Todo este proceso de intercambio de paquetes continúa durante aproximadamente 5 minutos para garantizar la hora correcta y garantizar que se haya corregido el desplazamiento. Obviamente, cuanto más cortos, consistentes y simétricos sean los intercambios de paquetes, más preciso será el tiempo. El protocolo NTP utiliza paquetes UDP e IP para este proceso debido a su velocidad y confiabilidad. El puerto utilizado es el 123. Se dice que la precisión del tiempo suele estar entre 5 y 100 ms.

Si la diferencia horaria entre el servidor NTP y el sistema es lo suficientemente pequeña, la cambiará rápidamente. Si la diferencia horaria es grande, la hora cambia constantemente con pequeñas diferencias hasta que se corrige.

Mejores prácticas

Tener varios servidores

Esta es la práctica más recomendada:tener múltiples servidores NTP redundantes si el que usa falla o se vuelve inexacto por algún motivo. No habrá mucha pérdida si la red se puede conectar a otro servidor NTP de inmediato. Además, será aún mejor si puede configurar scripts que puedan activar y conectar automáticamente la red a uno de los servidores redundantes cuando se dan ciertas señales obvias (como no recibir paquetes del servidor NTP, etc.).

Considere el diseño de la red

La red debe estar estructurada de modo que los sistemas que requieren una hora más precisa estén físicamente más cerca y conectados directamente al servidor NTP. Si hay subredes, deben usarse para tareas que relativamente no requieren tiempo exacto.

Comunicaciones NTP seguras

Dado que NTP se basa en UDP, es un protocolo centrado en muchas cosas, por lo que, dependiendo de su sistema, podría haber vulnerabilidades potenciales. Siempre es una buena idea asegurar la conexión NTP con autenticación.

Acceso restringido

Proteger la red de atacantes externos es importante, sin duda, pero también lo es evitar el mal manejo. Al restringir el acceso a los servidores NTP para el número mínimo de personas, puede asegurarse de tener la menor cantidad posible de errores humanos y, más que eso, puede estar seguro de que no será manejado por alguien que no tiene la comprensión técnica para manejar la red.

Evitar bucles de tiempo

Dejando a un lado las perspectivas de ciencia ficción, siempre debe asegurarse de evitar bucles de tiempo en la estructura de la red. Digamos que A actúa como servidor para B y B para C. Ahora, si C se asigna nuevamente como servidor para A, las cosas pueden complicarse. Obviamente, nadie en su sano juicio haría esto, pero a veces, puede suceder accidentalmente, por lo que es una buena idea verificar el diseño de la red NTP de vez en cuando.

Conclusión

NTP es un protocolo excelente y eficiente para asegurarse de que su sistema siempre tenga la hora correcta. Puede ser un poco complicado en una red grande o en un entorno de oficina, pero tener un poco de cuidado y tener buenos diseños puede ser muy útil. Esperamos que este artículo le haya resultado útil.


Linux
  1. Prácticas recomendadas de seguridad de OpenSSH

  2. Cómo configurar la zona horaria y sincronizar la hora del servidor con NTP en Linux

  3. Chrony:un cliente y servidor NTP alternativo para sistemas similares a Unix

  4. Sincronizar la hora del servidor Linux con el servidor de hora de la red

  5. 8 mejores prácticas con sudo en Linux:qué hacer y qué no hacer con sudo

Endurecimiento de servidores Linux:mejores prácticas

La mejor distribución de servidor Linux:las 10 principales comparadas y nuestra recomendación

Configuración del servidor Ubuntu:mejores prácticas de seguridad

Cómo configurar la sincronización de tiempo con NTP en Ubuntu 18.04

Usar NTP para sincronizar la hora

Los 20 mejores software y soluciones de servidor de correo Linux