Protocolos NTP y SNTP, qué son, funcionamiento y diferencias

El protocolo NTP (Network Time Protocol) y el SNTP (Simple Network Time Protocol) son dos protocolos fundamentales para el buen funcionamiento de Internet. Ambos protocolos permiten que todos los dispositivos de una red, como ordenadores, servidores, switches, routers, Smart TV o cualquier otro dispositivo conectado a Internet, sea capaz de tener la hora correcta en su sistema, con el objetivo de no tener problemas al navegar por Internet o realizar cualquier tarea. Hoy en RedesZone os vamos a explicar en detalle ambos protocolos del tiempo, las diferencias entre NTP y SNTP y también cómo se configuran en los diferentes dispositivos.

¿Qué es NTP (Network Time Protocol) y cómo funciona?

El protocolo NTP es el primer protocolo que se lanzó para sincronizar los relojes de los diferentes sistemas informáticos, NTP no solamente funciona en ordenador o en servidores, sino que son una parte fundamental de los routers, switches, puntos de acceso WiFi y cualquier tipo de equipamiento de red, como los firewalls. NTP fue uno de los primeros protocolos de Internet que nació en el año 1981, y aún todavía se continúa utilizando para sincronizar los relojes de los diferentes sistemas informáticos. El protocolo NTP permite sincronizar la hora con diferentes servidores NTP que hay desplegados por todo el mundo y que son accesibles a través de Internet, además, el protocolo NTP permite sincronizar la hora aunque tengamos una latencia muy elevada o variable, ya que incorpora mecanismos para evitar que haya desfases temporales debido a esta latencia.

El protocolo NTP hace uso del protocolo de la capa de transporte UDP en el puerto 123 para comunicarse con los diferentes servidores NTP repartidos por todo el mundo. Un detalle muy importante, es que este protocolo NTP hace uso de UDP puerto 123 tanto en el puerto de origen como en el puerto de destino, por lo que debemos tenerlo en cuenta si tenemos dispositivos detrás de un firewall o si existen listas de control de acceso en los diferentes switches gestionables de la red local. Si tienes un dispositivo que utilice el protocolo NTP, y un switch gestionable con los diferentes ataques a las redes activado, es necesario que deshabilites el ataque «Blat Attack» para que funcione correctamente el protocolo NTP. Este «Blat attack» consiste en bloquear los paquetes TCP o UDP que tengan el mismo puerto de origen y destino, justamente lo que hace NTP al usar puerto de origen y destino el UDP 123. Por tanto, debemos tenerlo muy en cuenta a la hora de configurar nuestra red.

La versión actual de NTP es la versión 4, ya que, con el paso del tiempo, se ha ido actualizando y mejorando este protocolo tan importante. El protocolo NTP hace uso de la escala de tiempo UTC (Tiempo Universal Coordinado), incluyendo soporte para segundos intercalares, además, la última versión de NTP permite mantenerse sincronizado con una diferencia máxima de 10 milisegundos a través de Internet, en el caso de estar en la red local es posible acercarse hasta los 200 microsegundos de exactitud, aunque dependerá de cómo esté configurada tu red. En los diferentes sistemas operativos como Windows, Linux o macOS, se ejecuta siempre el protocolo NTP para sincronizar correctamente con los servidores de tiempo.

A lo largo del tiempo se han detectado problemas de seguridad relacionados con el protocolo NTP, tanto en la implementación en los diferentes sistemas operativos, en los clientes NTP de los diferentes equipos, como también a la seguridad intrínseca del propio protocolo, el cual no utiliza ningún tipo de autenticación ni cifrado de datos para el intercambio de mensajes. Los servidores NTP son susceptibles a ataques Man in the Middle, a menos que los paquetes estén firmados criptográficamente, lo mismo ocurre con los propios equipos, podría realizar ataques MitM para modificar el tiempo en los equipos finales. El protocolo NTP envía toda la información en texto plano, no tiene ningún tipo de cifrado, autenticidad ni se comprueba la integridad de los datos. Para evitar esto, se ha diseñado el protocolo Network Time Security (NTS) que es la versión segura de NTP utilizando TLS y AEAD para proteger la comunicación, y que nadie se pueda hacer pasar por un servidor NTP para configurarnos mal la hora en nuestro sistema.

¿Qué ocurre si no tengo la hora correcta en mi sistema?

Mantener la hora correcta en un sistema informático es muy importante, de lo contrario, algunos softwares podrían no funcionar, e incluso podrían realizarnos algunos ataques informáticos. Si en nuestro sistema operativo no tenemos la hora configurada correctamente, podríamos tener los siguientes problemas:

  • Imposibilidad de navegar por Internet con cualquier navegador web, dependiendo de la hora configurada, nos indicará continuamente errores en los diferentes certificados SSL/TLS de las webs.
  • Problemas con algún software que necesite de la hora correcta para funcionar.
  • Podríamos tener problemas con las actualizaciones de Windows.

En los routers y firewalls, no tener la hora correcta también significa no poder establecer túneles VPN si se usan certificados digitales, porque es posible que el tiempo esté fuera de la fecha y hora de creación del certificado o su caducidad, además, todos los registros aparecerán con una hora incorrecta, por lo que también debemos tenerlo en cuenta. En el caso de los switches gestionables con NTP tenemos lo mismo, no podríamos ver los registros correctamente con su fecha y hora, ni tampoco podríamos programar el PoE para encendido y apagado de los puntos de acceso. Por último, otro equipamiento de red que se podría ver perjudicado son los controladores WiFi, no podríamos ver en qué horas hay más tráfico, porque la hora está mal configurada.

Tal y como podéis ver, tenemos muchos problemas a la hora de no tener la hora correcta en un determinado sistema informático.

¿Qué es SNTP (Simple Network Time Protocol) y cómo funciona?

El protocolo SNTP (Simple Network Time Protocol) es una implementación menos compleja del protocolo NTP, utiliza el mismo protocolo y sirve para lo mismo. Este protocolo es ampliamente utilizado en equipos integrados como routers domésticos o switches domésticos, donde no se requiere la capacidad del protocolo NTP por completo. Actualmente el protocolo que se utiliza es el SNTPv4 y está definido en la RFC4330.

SNTPv4 permite un acceso simplificado para los servidores y clientes que usan versiones actuales y anteriores de NTP y del propio SNTP, el acceso es idéntico al protocolo UDP/TIME por lo que la adaptación debería ser muy sencilla. Este protocolo está diseñado para funcionar en una configuración de servidor dedicado que incluye un radio reloj integrado, además, se ha mejorado y controlado las latencias, se puede entrar el tiempo exacto en varios microsegundos sin ningún problema.

SNTP ha ido evolucionando a lo largo del tiempo, mejorando su funcionamiento y también su compatibilidad con los diferentes protocolos subyacentes. Por ejemplo, el único cambio significativo de SNTPv4 respecto a las anteriores versiones, son las cabeceras para adaptarse al protocolo IPv6. También se han añadido algunas extensiones opcionales al NTP básico Actualmente, cuando configuramos el servidor NTP en los diferentes clientes NTP que existen repartidos por todo el mundo, el funcionamiento y el intercambio de información se puede realizar tanto usando el protocolo NTP como SNTP, el funcionamiento es el mismo ya que tenemos compatibilidad.

Diferencias entre NTP y SNTP

La principal diferencia entre NTP y SNTP es que el segundo no requiere ningún tipo de almacenamiento de estado durante periodos de tiempo muy largos, algo que sí necesita el protocolo NTP. Una diferencia muy importante para los administradores de redes es el funcionamiento de las comunicaciones, para permitir o denegar el tráfico en los firewalls o crear listas de control de acceso en los switches gestionables.

El protocolo NTP funciona con el protocolo UDP en el puerto 123, en la comunicación se utiliza este puerto UDP 123 tanto en el origen como también en el destino. Tal y como os hemos explicado anteriormente, si tienes activado el «Blat attack» en los switches, y tienes un equipo que use el protocolo NTP puro, seguramente esté bloqueando el tráfico únicamente del NTP sin que tú lo sepas.

El protocolo SNTP funciona con el protocolo UDP en el puerto 123, en la comunicación se utiliza un puerto UDP aleatorio como origen, y el puerto UDP 123 como destino. Según el estándar de SNTP, el puerto de origen puede ser cualquiera menos el 0 con objetivo de realizar multiplexación, por supuesto, el servidor contesta correctamente en el puerto de origen elegido por el cliente en la primera comunicación para no tener problemas con el NAT que tienen los routers. El objetivo de este cambio tan importante, es permitir la identificación de un cliente en concreto, para no tener problemas con el NAT, y para evitar que los switches con el Blat Attack activado bloqueen las comunicaciones.

Tal y como habéis visto, el protocolo NTP y SNTP son dos protocolos fundamentales e importantísimos para los sistemas informáticos, es fundamental tener la hora configurada correctamente, ya sea en tu sistema operativo de escritorio o en los diferentes equipos de red que tengas.