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.
Hay todo tipo de protocolos, pero lo cierto es que hay dos que puedan tener un papel más importante: NTP y SNTP. ¿Por qué? Esto es algo que explicaremos con detalle en las siguientes líneas. Para ello, veremos qué son y qué pasa, por ejemplo, si la hora de nuestro PC no es la correcta. Además de esto, veremos cuáles son las principales diferentes que se dan entre estos dos protocolos en concreto.
¿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. En cualquier caso, hay que tener en cuenta que juega un papel más clave de los que muchos se piensan.
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.
Cuáles son los beneficios de usar NTP
El hecho de utilizar este protocolo, puede resultar beneficioso en diferentes aspectos, sobre todo porque se consigue sincronizar la hora de los equipos de una manera más efectiva. Por lo que se puede aplicar tanto para las empresas como para otras redes, como puede ser el caso de una conexión que sea doméstica. En cualquier caso, si estás pensando en implementarla o tener un servidor NAS que funcione con este protocolo, estas son los beneficios que presenta su uso:
- Este protocolo permite que los distintos dispositivos puedan alcanzar un gran nivel de precisión en el momento de sincronizar el tiempo. Y todo en apenas unos milisegundos, por lo que supone una muy buena sincronización en todo momento. Es más, se puede dar igualmente incluso cuando se haya dado una desviación del reloj o una serie de retrasos en la red.
- Otro de los puntos que entran dentro de sus ventajas es la la sincronización de tiempo en varias zonas horarias.
- Además de los dos aspectos anteriores, otro de los detalles por los que destaca es que se puede aplicar en varias redes dando igual su tamaño. Sin duda es otro de los beneficios más característicos de este protocolo. Por tanto, puedes implementar este protocolo en aquellas redes que cuenten con diferentes tamaños.
Desventajas del protocolor NTP
Pese a que este protocolo es muy útil en ciertos casos, también tiene una serie de desventajas que deberemos conocer antes de su puesta en marcha, que son las siguientes:
- Vulnerabilidad a ataques: Y es que, este protocolo ha sido objeto de ataques a lo largo de los años, lo que no otorga mucha seguridad, sobre todo para el uso en ciertas empresas y lugares que necesiten protección, siendo DDoS uno de los más usados, dejando sin servicio a su objetivo.
- Dependencia de servidores: Para obtener una sincronización precisa, NTP depende de servidores de tiempo externos. Esto no sería un problema sino fuese porque pueden ser vulnerables a fallos, retrasos en la red o configuraciones incorrectas, dando lugar a que la sincronización puede verse afectada.
- Configuración compleja: Pese a que no hay que sacarse una ingeniería para ello, tampoco es algo muy fácil de configurar, y necesitarás ciertos conocimientos para ello, sobre todo debido a que tienen que estar perfectos, por lo que habrá que asegurarse de que están configurados de manera segura y que las políticas de acceso son correctas para evitar posibles exploits.
- Redes congestionadas: Una red sobrecargada podría llevar a problemas de sincronización especialmente cuando se requiere precisión en el rango de milisegundos o microsegundos.
- Protocolo antiguo: Aunque existen versiones mejoradas como NTS, este protocolo es antiguo, y no fue diseñado pensando en el futuro y la posible seguridad necesaria, por lo que podría recibir, en versiones anteriores, ataques de «man-in-the-middle», lo cual es peligroso.
Estas son algunas de las contras de este protocolo, las cuales deberemos comparar con otros más recientes y que pueden ser una alternativa, aunque dependerá de tus necesidades. Mucha gente sigue utilizándolo a día de hoy como opción principal.
¿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.
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.
¿Puedo montar mi propio NTP o SNTP en la red local?
A nivel profesional, es muy habitual que los administradores de redes monten su propio servidor NTP o SNTP para tener total control sobre el tiempo. De esta forma, todos los routers, switches, servidores, ordenadores y los diferentes dispositivos de la red local, se sincronizarán con este servidor sin necesidad de realizar solicitudes de forma continua a Internet, algo que ocasiona un consumo de ancho de banda totalmente innecesario. En cuanto la red local empieza a ser bastante grande, donde tenemos decenas de clientes inalámbricos y cableados conectados, es muy recomendable tener nuestro propio servidor NTP o SNTP para prescindir de los públicos.
El funcionamiento de esta «arquitectura» es muy sencilla, el servidor que nosotros configuraremos se sincronizará automáticamente con los NTP públicos que existen y que todos conocemos muy bien, de esta forma, este «servidor» realmente actúa en modo «cliente» de los diferentes servidores NTP públicos. Una vez que este servidor que nosotros hemos instalado tenga la fecha y hora correcta, podrá empezar a proporcionar esta misma información a todos los clientes de la red local que nosotros tenemos, de esta forma, todo el tráfico se quedará en la red local, sin necesidad de viajar a Internet, ocasionando un consumo adicional de ancho de banda que es totalmente innecesario. Además, de esta forma podremos realizar cualquier cambio en la fecha y hora de todos los equipos de forma «manual», por ejemplo, para cambiar la hora manualmente si no tenemos configurado el horario de verano y el horario de invierno.
Hoy en día hay muchos sistemas operativos o firmwares para routers que incorporan esta funcionalidad tan interesante, como pfSense, OPNsense y muchos tros. De esta forma, tendremos el propio servicio en el router, sin necesidad de tener un servidor específicamente dedicado a ello como un NAS. No obstante, también podríamos instalarlo en cualquier servidor de archivos de la organización.