Skip to content

La importancia del tiempo

Publicado por Sergio Hernando el 15 diciembre 2007

Hola,

¿Te has parado a pensar alguna vez lo importante que es tener un reloj en tu sistema? Y lo más importante, ¿has pensando en la importancia de que ese reloj esté en hora?

Evidentemente no es igual de importante que el reloj de tu escritorio esté sincronizado, que los relojes de los sistemas de una central nuclear, o un SCADA industrial como el que puede regular una presa hidroeléctrica lo estén. En tu caso, quizás algún administrador de una lista de correo te pedirá que pongas tu reloj en hora, para no descuadrar el histórico de envíos. En una presa hidroeléctrica, si la apertura de una compuerta de descarga tiene que ejecutarse en paralelo con la parada de turbinas y la apertura de válvulas, y no hay sincronía, puede haber problemas muy serios. No imaginemos que puede pasar si en un reactor nuclear de agua presurizado fallan los mecanismos de inundación con agua pesada, o simplemente, se retrasan o adelantan por que un reloj no está sincronizado.

Al hilo del tiempo en sistemas de información, y habiendo ojeado recientemente Server Time Protocol NTP Client support, en el que se trata la integración, en máquinas en mainframe IBM System z, de la función Network Time Protocol (NTP) Client en el servidor Server Time Protocol (STP), se me ha ocurrido hablar un poco de lo importante que es el tiempo, refiriéndonos como es normal, al control de tiempo que debe existir en un sistema.

No haremos aquí reflexiones filosóficas, ni teorizaremos sobre curvar el espacio-tiempo y viajar al pasado o al futuro. Vamos a hacer sólo una reflexión sobre el tiempo, aplicado a los sistemas. Tampoco vamos a hablar de la gestión de relojes en entornos mainframe, porque son un caso mucho menos frecuente que el que nos puede interesar como usuarios, y como administradores de un sistema.

Protocolo NTP

Es el protocolo por antonomasia para sincronía de tiempos. NTP es un acrónimo que significa Network Time Protocol, y es un viejo protocolo que la IETF elevó a RFC hace bastante tiempo en el RFC-1305. Mediante NTP, podemos sincronizar los relojes de distintos sistemas previniendo los perniciosos efectos de la latencia variable, ya que la gestión de sincronía del tiempo se hace en red, y por tanto, está sujeta a la más que probable fluctuación de la velocidad de líneas de comunicación empleadas. Para los que os guste el horripilante modelo OSI, NTP opera en la séptima capa, la de aplicación. La comunicación se hace por el puerto 123 (TCP/UDP)

La idea de NTP es que si mi sistema operativo tiene soporte NTP, o un cliente NTP, yo pueda solicitar a un servidor NTP que me entregue la fecha, y sincronizar la de mi sistema empleando una teóricamente más fiable: la del servidor NTP.

Protocolo Daytime

Existe otro protocolo, que no debe confundirse con NTP, y que sonará más a los administradores que vienen de MS-DOS y entornos de por aquel entonces, como el OSR2 y similares. En este caso, cuando lanzamos una petición daytime, el servidor nos devuelve la fecha en un formato ASCII. Daytime está en prácticamente desuso, y es hasta desaconsejable operar con él. Se entiende que es para propósitos de experimentación únicamente. Daytime está narrado y documentado en el RFC-867. En cuanto a servicio, daytime comunica máquinas por el puerto 13 (TCP y UDP)

Protocolo Time

Otro protocolo minoritario, en el que el servidor devuelve al cliente que lo solicita una cadena numérica de 32 bit, sin formatear, que representa el número de segundos UTC que han transcurrido desde el 1 de enero de 1900. El RFC que recoge este protocolo es el RFC-868. El protocolo time emplea el puerto 37 en TCP/UDP para establecer escuchas.

Relojes atómicos

La mayoría de servidores NTP de alta fiabilidad son relojes atómicos. Un reloj atómico es un dispositivo de altísima precisión (atrasa un segundo cada 300.000 años) y cuyas manecillas son accionadas por un concepto nuclear: la frecuencia de resonancia atómica normal de un átomo frío, frecuentemente, Cesio-133. Los desarrollos modernos siguen orientándose al Cesio, enfriándolo mediante láser para obtener más precisión, llegando a ser de hasta un segundo de atraso cada 20 millones de años. Otras tecnologías están basadas en másers de hidrógeno, y en mercurio. Todo esto se cuenta estupendamente en la Wikipedia.

Así pues, no parece mala idea que un servidor NTP se abastezca de un reloj atómico, y por tanto, que nuestros servidores NTP se abastezcan de los mismos.

Servidores NTP públicos

Hay muchos, casi todos vinculados a I+D+i, y son bastante fiables, ya que algunos son relojes atómicos. En España tenemos dos buenos relojes NTP primarios:

ntp.i2t.ehu.es, operado por la Universidad del País Vasco
hora.roa.es, gestionado por el Real Instituto y Observatorio de la Armada

Cualquiera de los servidores NTP primarios y secundarios nos dará una sincronía de tiempo más que aceptable. Ya es cuestión de elegir, en función de la criticidad del factor tiempo, a dónde conectarnos. Evidentemente, también hay servicios NTP atómicos privados y/o restringidos.

Configurar y operar un servidor NTP en FreeBSD y en otros derivados de UNIX

1. Generamos el fichero /etc/ntp.conf y añadimos las siguientes líneas

#Listamos los servidores
server hora.roa.es prefer
server ntp.i2t.ehu.es

#Especificamos el fichero de deriva
driftfile /var/db/ntp.drift

#Restringimos a solo maquinas de nuestra red local
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

El fichero de deriva es para compensar aún cuando no tengamos conexión a Internet y exista falta de sincronía por no hacer consultas al servidor NTP. Tenéis más detalles sobre deriva (drift) en en ntpd(8)

2. Especificamos en /etc/rc.conf que se ejecute al iniciar el equipo, añadiendo la línea ntpdate_enable="YES"

3. Arrancamos el servidor NTP ejecutando ntpd -p /var/run/ntpd.pid

¿Puedo sincronizar el reloj de Windows usando un servidor NTP externo?

Sí, se puede. Consulta la documentación.

Clientes Microsoft Windows para sincronizar con servidores NTP

AboutTime es un cliente de sincronía, que pese a no ser estrictamente necesario, ya que Microsoft Windows tiene sus propios mecanismos de conexión a servicios NTP, puede venir bien a los que quieren resultados rápidos. AboutTime puede ser obtenido gratuítamente en http://www.arachnoid.com/abouttime/.

Otros clientes son NetTime o TimeTools SNTP.

timetools

Un saludo,

Be Sociable, Share!

Categoría/s → Seguridad

7 comentarios
  1. 16 diciembre 2007
    chmeee permalink

    Relacionado con NTP y con seguridad supongo que estarás enterado del OpenNTPd (http://www.openntpd.org) desarrollado por la gente de OpenBSD.
    Aunque hay críticas respecto a la precisión (ver http://en.wikipedia.org/wiki/OpenNTPD) la verdad es que prefiero perder precisión en los microsegundos y tener un sistema más seguro (siempre que tus aplicaciones no dependan de ese microsegundo :).

  2. 16 diciembre 2007

    chmeee,

    No lo conocía, uno que es tradicional a ntpd :)

    Instalación:

    1. Bajamos e instalamos el paquete

    nas# pkg_add -r openntpd
    Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-6.2-release/Latest/openntpd.tbz… Done.
    Added group “_ntp”.
    Added user “_ntp”.

    2. Añadimos openntpd_enable=”YES” en /etc/rc.conf

    3. Iniciamos a mano

    #nas /usr/local/etc/rc.d/openntpd.sh start

    Gracias,

  3. 16 diciembre 2007

    Configurar clientes Windows para que se abastezcan de nuestro OpenNTPD

    1. Verificar fuente de sincronía empleada

    C:\Documents and Settings\sergio>net time /querysntp
    El valor SNTP actual es: time.windows.com,0x1

    Se ha completado el comando correctamente.

    2. Apuntamos al servidor NTPD

    C:\Documents and Settings\sergio>net time /setsntp:192.168.1.5
    Se ha completado el comando correctamente.

    3. Paramos el servicio

    C:\Documents and Settings\sergio>net stop w32time
    El servicio de Horario de Windows está deteniéndose.
    El servicio de Horario de Windows fue detenido con éxito.

    4. Arrancamos el servicio

    C:\Documents and Settings\sergio>net start w32time
    El servicio de Horario de Windows está iniciándose.
    El servicio de Horario de Windows se ha iniciado con éxito.

    5. Verificamos que la nueva fuente es correcta

    C:\Documents and Settings\sergio>net time /querysntp
    El valor SNTP actual es: 192.168.1.5

    Se ha completado el comando correctamente.

  4. 17 diciembre 2007
    angeld permalink

    El “maravilloso” NTP no es la panacea. Tiene variados problemas, como “flags” que realizan funciones opuestas en versiones diferentes, dificultad a la hora de securizar las peticiones, muchos problemas a la hora de hacer pruebas o buscar fallos, …

    En estos momentos tengo varias máquinas con horas diferentes, y se supone que están configuradas igual. :(

    Para el que le interese sincronizar estando tras un firewall, el protocolo permite sincronizar con las cabeceras de los servidores web. Muy sencillo, aunque no muy útil en entornos serios.

  5. 17 diciembre 2007

    Es muy interesante el post respecto a la importancia del tiempo, porque en general, los técnicos no son conscientes de la transcendencia que puede llegar a tener el no haber configurado adecuadamente los relojes del sistema. En la problemática de análisis de log’s o análisis forense, disponer de una hora correcta es importantísimo puesto que sirve para ir correlacionando eventos según la secuencia temporal en la que los eventos se producen en nuestro sistemas. Es necesario pensar además, que en los futuros servicios relacionados con la Administración Electrónica, el tiempo también tiene que ser “certificado” y por tanto, los registros telemáticos tienen por objeto dar fe de la fecha y hora de la entrega de documentación. Además, sorprende también ver que en general, entre los técnicos, existe el desconocimiento de que la hora lógica está definida por R.D., para establecer la hora legal de los sistemas de información.
    Los Criterios de Seguridad del Ministerio de Administraciones Públicas establecen que la sincronización de la fecha y la hora se debe realizar con el Real Instituto y Observatorio de la Armada, de conformidad con lo previsto sobre la hora legal en el Real Decreto 1308/1992 de 23 de octubre y según las condiciones técnicas y protocolos que el citado Organismo establezca. En particular los registros telemáticos y los servicios de notificación electrónica deben adoptar servicios de fechado electrónico para la acreditación de fecha y hora a fin de proporcionar evidencias digitales suficientemente válidas,inmutables y no repudiables como para poder ser utilizadas como prueba. Este Real Observatorio dispone de un servidor de tiempo que has nombrado, en la dirección hora.roa.es

  6. 17 diciembre 2007

    angeld,

    Yo discrepo. NTP es generalmente fácil de implementar, y la seguridad puede atarse de un modo más que razonable. Los únicos incidentes que he visto en NTP guardan relación con vulnerabilidades en servidores NTP, y no son frecuentes. En otros casos, por mala implementación, revelan versión y sistema operativo, pero no creo que sean problemáticos en seguridad.

    Es raro que no logres sincronía. Yo me plantearía algún problema no de NTP, sino de la infraestructura.

    Para los casos de sincronía tras un FW, prefiero abrir puerto a las máquinas confiables, y delegar la sincronía en HTTP para máquinas que no lo son. Pero para gustos, colores ;)

    Javier,

    Gracias por la aportación. Desconocía ese requerimiento legal que citas, y me parece razonable. Gracias por compartirlo.

    En lo que te doy la razón es en la necesidad de que el tiempo sea un parámetro judicialmente válido en análisis forenses. Es algo más que obvio, creo. El tiempo es siempre un parámetro crítico en un registro, y por tanto, si no garantizamos su fidelidad, mal camino llevará el análisis.

    Un saludo a ambos :)

  7. 19 diciembre 2007
    jcbarreto permalink

    Hola, 2 preguntas…

    Conozco NTP y su importancia; pero salvo decirle a otros (:-) que eso debe estar funcionando y haberlo configurado en algun router ADSL (…) no sé nada más. O sea, soy un ignorante.

    PREGUNTA1:

    Tengo entendido que NTP proporciona precisión por debajo de milisegundos, inclusive microsegundos.

    ¿es correcto?

    Y la más importante, duda “existencial” técnico – matemática que siempre he tenido. Lo que me importa es el CONCEPTO; lo que le explicaría “Einstein a su barbero”, para que lo entienda.

    Valen refs web. Acaso simplemente, como “barbero”, debo leer alguna RFC concreta.

    PREGUNTA2: LA FUNDAMENTAL

    ¿ CÓMO… es posible que dada la LATENCIA del orden de decenas de milisegudos o inclusive décimas de segundo y su variabilidad en la transmisión de paquetes en la red (ej: Internet) se puede obtener con un protocolo como NTP, precisiones de sincronización órdenes de magnitud por debajo?

    Si estoy equivocado en alguna suposición… corregidme; pero creo que la pregunta2, aún merecería una respuesta.

    GRACIAS !!

Escribir un comentario

Note: XHTML permitido. Tu email nunca será publicado.

Suscribirse a los comentarios via RSS