Servidores NTP / Servidores de Tiempo

Qué hace que la sincronización horaria en red sea segura, fiable y precisa

Niveles de estrato NTP y precisión

¿Qué es el NTP (protocolo de tiempo de red)?

NTP es un protocolo UDP para redes IP. La Internet Engineering Task Force ha formalizado la norma actual de NTP (versión 4) en el RFC 5905. El protocolo simple de tiempo de red, SNTP, el último estándar formalizado como RFC 4330, utiliza una implementación de cliente menos compleja. Una solución de sincronización horaria requiere que el software cliente lea los paquetes NTP generados por un servidor NTP y sincronice el reloj local. La función de servidor de hora es la misma tanto en NTP como en SNTP, la única diferencia está en el software cliente.

¿Por qué no utilizar un servidor horario de Internet?

Los servidores horarios de Internet gestionados por universidades y organizaciones gubernamentales están disponibles para uso público. Sin embargo, NTP requiere un puerto abierto (puerto UDP 123) en el cortafuegos para que pasen los paquetes NTP. Los puertos abiertos en el cortafuegos son un riesgo de seguridad para ti, como operador de red, y pueden afectar a la fiabilidad y precisión de los servidores públicos de tiempo, ya que se aprovechan fácilmente en ataques de “denegación de servicio”, aunque sean involuntarios.

La precisión es otro motivo de preocupación, ya que una encuesta del MIT puso al descubierto el número de servidores horarios defectuosos en Internet y la carga desequilibrada. Sólo el 28% de los servidores de tiempo indicados como estrato 1, parecían ser útiles. Otro problema que afecta a la precisión es la suplantación de identidad. La suplantación de identidad es el acto de un tercero de crear paquetes IP utilizando la dirección IP de otra persona.

NTP vs. SNTP: ¿Cuál es la diferencia?

NTP (Network Time Protocol) y SNTP (Simple Network Time Protocol) son protocolos TCP/IP similares en el sentido de que utilizan el mismo paquete horario de un mensaje del servidor horario para calcular la hora exacta. El procedimiento utilizado por el Servidor de Tiempo para ensamblar y enviar un sello de tiempo es exactamente el mismo tanto si se utiliza NTP (es decir, NTP de implementación completa), como si se utiliza SNTP. La diferencia entre NTP y SNTP es importante en el programa de sincronización horaria que se ejecuta en el lado cliente de cada sistema. El programa de sincronización horaria, ya sea un programa integrado en Windows como W32Time (que utiliza el protocolo SNTP) o un complemento de terceros, determina qué protocolo se utiliza, no el servidor horario. La diferencia entre NTP y SNTP está en la comprobación de errores y en el algoritmo para la corrección real de la propia hora.

El algoritmo NTP es mucho más complicado que el algoritmo SNTP. Normalmente, NTP utiliza varios servidores de tiempo para verificar la hora y luego controla la velocidad de rotación del sistema. El algoritmo determina si los valores son exactos utilizando varios métodos, como los factores de manipulación y la identificación de los servidores horarios que no coinciden con los demás. A continuación, acelera o ralentiza la velocidad de deriva del reloj del sistema para que (1) la hora del sistema sea siempre correcta y (2) no se produzcan saltos temporales posteriores tras la corrección inicial. A diferencia de los servidores NTP, los servidores SNTP suelen utilizar un servidor horario para calcular la hora, y luego “saltan” la hora del sistema a la hora calculada. Sin embargo, puede tener servidores horarios de reserva en caso de que uno no esté disponible. Durante cada intervalo, determina si la hora está lo suficientemente desfasada como para hacer una corrección y, si lo está, aplica la corrección.

En general, los clientes SNTP sólo deben utilizarse cuando la sincronización horaria no sea crítica para tus sistemas. Para todos los demás clientes, y para los sistemas que también servirán la hora a otros sistemas, debes utilizar implementaciones NTP completas que incluyan algoritmos de selección de referencia y de dirección del reloj para mantener la precisión en toda la ruta de temporización.

Si nos fijamos en los propios servidores de tiempo, la selección de un servidor de tiempo que utilice SNTP o NTP para servir sólo la hora debe centrarse en si ese servidor de tiempo se sincronizará alguna vez con NTP como referencia primaria o secundaria –en cuyo caso, sólo debe utilizarse NTP completo. Para simplificar las cosas, SNTP sólo debe utilizarse al principio o al final de la ruta de temporización de la red, y sólo al final de la ruta de temporización de la red cuando la sincronización horaria no sea crítica para tus sistemas.