OpenNtpd en FreeBSD-12.1

 FreeBSD

NTP, el Protocolo de *tiempo (fecha y hora)* de la red, es un protocolo estandarizado que proporciona formas de sincronizar el tiempo en varios sistemas operativos. OpenNTPd es una implementación gratuita y fácil de usar del Protocolo de tiempo de red (NTP), desarrollado originalmente como parte del proyecto *OpenBSD*. Proporciona la capacidad de sincronizar el reloj local desde servidores NTP remotos y también puede actuar como servidor en sí.

Este tutorial le mostrará cómo instalar OpenNTPd en FreeBSD.

Prerrequisitos

Para seguir este tutorial, debe tener:

Un FreeBSD 10.2 con una cuenta de usuario root; un usuario normal de freebsd está bien. Esta cuenta de FreeBSD requiere una clave SSH para acceso remoto. Para obtener ayuda sobre cómo configurar una clave SSH, lea Como Configurarla autenticacion basada en claves SSH en un servidor FreeBSD. Para obtener más información sobre cómo iniciar sesión en su FreeBSD y la administración básica, consulte la serie de tutoriales de Introducción a FreeBSD.

Paso-1: Instalando OpenNTPd en FreeBSD

Antes de instalar OpenNTPd, actualice la información del repositorio utilizada por pkg:

# pkg update
# pkg upgrade

Una vez actualizados los paquetes, realice la instalación:

# pkg install openntpd

La configuración predeterminada de OpenNTPd usa *pool.ntp.org* como sus servidores horarios predeterminados y está configurada para funcionar solo como una máquina cliente. El resto de este tutorial mostrará cómo cambiar el servidor horario utilizado y cómo configurar OpenNTPd como servidor horario.

Paso-2: Cambio del servidor horario (opcional)

Los siguientes pasos editarán el archivo de configuración predeterminado `/usr/local/etc/ntpd.conf`. Use ee, vi o su editor de texto favorito para editar el archivo de configuración.

# vim /usr/local/etc/ntpd.conf

Desarrollado por el *GeoDNS* de Ask Bjørn Hansen, *pool.ntp.org* generalmente devolverá direcciones IP para servidores en o cerca de su país. Para la mayoría de los usuarios, esto dará los mejores resultados.

Alternativamente, también puede usar una zona de país como br.pool.ntp.org, de.pool.ntp.org o ru.pool.ntp.org para forzar/limitar los resultados a sus necesidades personales. Para leer más sobre el Proyecto NTP Pool, visite pool.ntp.org.

Para el ejemplo en este tutorial, usaremos NTP.br, un proyecto en Brasil que preserva y distribuye el tiempo legal en territorio brasileño. Si no está en Brasil, use un proyecto similar en su país o región.

Defina su servidor de hora deseado de esta manera, sustituyendo pool.ntp.br con su servidor de hora elegido.

# Archivo: /usr/local/etc/ntpd.conf
# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)

# Addresses to listen on (ntpd does not listen by default)
#listen on *

# sync to a single server
#server ntp.example.org

# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.br

# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0

# use all detected timedelta sensors
#sensor *

# get the time constraint from a well-known HTTPS site
#constraints from "https://www.google.com/search?q=openntpd"

Paso-3: Cambiar las restricciones

Una configuración de cliente personalizada también puede agregar soporte a restricciones para que ntpd pueda consultar la fecha: encabezados de servidores HTTPS confiables a través de TLS.

La página de manual de ntpd.conf(5) dice:

Los paquetes NTP recibidos con información de tiempo fuera de un rango cercano a la restricción se descartarán y dichos servidores NTP se marcarán como no válidos.

Esto previene contra algunos ataques MITM mientras preserva la precisión del reloj.

Agregue las restricciones a /usr/local/etc/ntpd.conf. Asegúrese de utilizar uno o más sitios HTTPS conocidos y confiables. Puede descomentar la línea de ejemplo proporcionada en el archivo eliminando el primer # carácter resaltado a continuación:

# Archivo: /usr/local/etc/ntpd.conf
# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)

# Addresses to listen on (ntpd does not listen by default)
#listen on *

# sync to a single server
#server ntp.example.org

# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.br

# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0

# use all detected timedelta sensors
#sensor *

# get the time constraint from a well-known HTTPS site
# constraints from "https://www.google.com/search?q=openntpd"

Paso-4: configuración de OpenNTPd como servidor de tiempo

Esta sección le muestra cómo cambiar el comportamiento predeterminado de OpenNTPd y convertir FreeBSD en un servidor NTP capaz de servir tiempo sobre IPv4 e IPv6.

Los resultados finales para la configuración de un servidor deberían tener este aspecto, con your_server_ip reemplazado por la dirección IPv4 o IPv6 de su servidor.

/usr/local/etc/ntpd.conf
# $OpenBSD: ntpd.conf,v 1.2 2015/02/10 06:40:08 reyk Exp $
# sample ntpd configuration file, see ntpd.conf(5)

# Addresses to listen on (ntpd does not listen by default)
listen on your_server_ip

# sync to a single server
#server ntp.example.org

# use a random selection of NTP Pool Time Servers
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers
servers pool.ntp.br

# use a specific local timedelta sensor (radio clock, etc)
#sensor nmea0

# use all detected timedelta sensors
#sensor *

# get the time constraint from a well-known HTTPS site
#constraints from "https://www.google.com/search?q=openntpd"

Paso-5: Inicio de OpenNTPd en el arranque

La configuración de servicio predeterminada para OpenNTPd no iniciará el demonio durante el proceso de arranque de FreeBSD. Para agregar el servicio NTP provisto por ntpd en FreeBSD, ejecute lo siguiente:

# sysrc openntpd_enable="YES"
# sysrc openntpd_flags="-s -v"

Si desea establecer la hora inmediatamente al inicio, agregue -s a openntpd_flags. -v también se puede usar para que se registren todas las llamadas a adjtime. Pasar -s a ntpd hará que el demonio permanezca en primer plano por hasta 15 segundos esperando que responda uno de los servidores NTP configurados.

Este no es lo predeterminado, y una configuración personalizada como esta debería configurarse como se encuentra en las líneas anteriores.

Paso 6 - Administrar el servicio OpenNTPd

Ahora que tiene el archivo de configuración editado y personalizado para satisfacer todas sus necesidades, puede iniciar el servicio proporcionado por OpenNTPd.

Para iniciar el servicio:

# service openntpd start

Si los indicadores del demonio OpenNTPd están configurados para registrar información de depuración, el inicio de la salida debería tener este aspecto:

Starting openntpd.
constraint certificate verification turned off
ntp_adjtime returns frequency of 8.643158ppm

Puede administrar el servicio OpenNTPd con los comandos habituales: *status*, *restart*, *start*, *stop*.

Paso-7: Solución de problemas (opcional)

OpenNTPd usa dos binarios: ntpd y ntpctl. El primero es el demonio mismo y es responsable del servicio NTP proporcionado al cliente o máquina del servidor. El segundo se usa para mostrar información sobre el demonio en ejecución.

Esta sección le mostrará cómo usar ntpctl, nc y sockstat para solucionar problemas del servicio NTP provisto por OpenNTPd y su demonio. Si tiene un servicio en ejecución, o simplemente desea una forma diferente de verificar si su servicio se está ejecutando, use esta sección.

Obtener Status y Peer

El ntpctl de OpenNTPd usa un socket local para comunicarse con el demonio OpenNTPd. El valor predeterminado es /var/run/ntpd.sock. Este tutorial cubrirá dos tipos de consultas que puede ejecutar con ntpctl: Status y Peer.

El Status muestra el estado de los pares y sensores, así como si el reloj del sistema está sincronizado. Cuando se sincroniza el reloj del sistema, se muestra el estrato. Cuando el reloj del sistema no está sincronizado, se muestra el desplazamiento del reloj del sistema, según lo informado por la llamada al sistema adjtime. Cuando se establece la restricción mediana, se muestra el desplazamiento a la hora local.

Para mostrar el estado usando ntpctl:

# ntpctl -s status
4/4 peers valid, constraint offset -1s, clock synced, stratum 2

Peers muestra la siguiente información sobre cada par: peso (peso), nivel de confianza (tl), estrato (st) y la cantidad de segundos hasta la próxima actualización del par (próxima encuesta). Los valores de desplazamiento, retardo de red y fluctuación de fase de red están en milisegundos. Cuando el reloj del sistema se sincroniza con un par, se muestra un asterisco (*) a la izquierda de la columna de peso para ese par.

Para mostrar información de pares usando ntpctl:

# ntpctl -s peers

peer
   wt tl st  next  poll          offset       delay      jitter
200.54.149.24 from pool ntp.shoa.cl
 *  1 10  1   25s   30s         4.416ms     8.264ms     1.670ms
200.27.106.115 from pool ntp.shoa.cl
    1 10  1    2s   30s         3.350ms     8.367ms     2.066ms
200.54.149.19 from pool ntp.shoa.cl
    1 10  1   20s   32s         4.559ms     8.906ms     1.112ms
200.27.106.116 from pool ntp.shoa.cl
    1 10  1    1s   30s         3.290ms     8.091ms     2.105ms

Escuchando los sockets

Puede usar sockstat para enumerar los sockets abiertos de dominio IPv4, IPv6 y UNIX. Para enumerar los zócalos de escucha relacionados con NTP sobre IPv4 e IPv6:

# sockstat -4 -p 123
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
_ntp     ntpd       97057 7  udp4   192.168.1.100:64847   200.54.149.24:123
_ntp     ntpd       97057 8  udp4   192.168.1.100:24060   200.27.106.115:123
_ntp     ntpd       97057 9  udp4   192.168.1.100:60892   200.54.149.19:123
_ntp     ntpd       97057 10 udp4   192.168.1.100:38472   200.27.106.116:123

Si está ejecutando OpenNTPd como servidor de tiempo en la red, la columna DIRECCIÓN LOCAL le mostrará una línea con sus direcciones IP; your_ipv4_address:123, que representa el socket IPv4, y your_ipv6_address:123, que muestra un socket IPv6 de escucha.

Conexión a internet

Utilice *nc* para solucionar problemas no solo de NTP sino de muchos demonios de red y sus sockets (UNIX, TCP o UDP). La página de manual dice:

A diferencia de telnet, los scripts de netcat funcionan bien y separan los mensajes de error en errores estándar en lugar de enviarlos a la salida estándar como lo hace telnet con algunos.

Para verificar si puede llegar a un servidor NTP o a los pool host, a través de IPv4:

# nc ntp.shoa.cl 123 -z -4 -u -v
Connection to ntp.shoa.cl 123 port [udp/ntp] succeeded!

Para verificar si puede llegar a un servidor NTP o a los pool host, a través de IPv6:

# nc ntp.shoa.cl 123 -z -6 -u -v
Connection to ntp.shoa.cl 123 port [udp/ntp] succeeded!

Usando ntpdate

Use ntpdate para solucionar algunos de los servidores que quiera usar. Puede obtener información sobre la máquina que ejecuta el servicio NTP: estrato, compensación y retraso.

# ntpdate -q -4 ntp.shoa.cl
server 200.27.106.115, stratum 1, offset +0.002610, delay 0.03706
server 200.54.149.19, stratum 1, offset +0.002535, delay 0.02927
server 200.54.149.24, stratum 1, offset +0.000481, delay 0.03264
server 200.27.106.116, stratum 1, offset +0.001068, delay 0.03369
12 May 18:11:58 ntpdate[15141]: adjust time server 200.54.149.19 offset +0.002535 sec

Tenga en cuenta que la funcionalidad de ntpdate ahora está disponible en el programa ntpd de FreeBSD. Vea la opción de línea de comando -q en la página de manual ntpd de FreeBSD, o use ntpq.

Advertencia: la utilidad _ntpdate_ se retirará pronto.

Lectura de páginas del manual

Los ntpd, ntpd.conf y ntpctl de OpenNTPd no forman parte del sistema base de FreeBSD, por lo que sus páginas de manual tampoco forman parte del MANPATH predeterminado del sistema operativo. Para estar seguro de que leerá las páginas del manual de OpenNTPd, debe ejecutar man con 'man -M /usr/local/man'. No se confunda con la página de manual ntpd(8) predeterminada de FreeBSD.

$ man -M /usr/local/man ntpd

Repita el mismo procedimiento para leer la página de manual ntpctl(8) o ntpd.conf(5) de OpenNTPd.

$ man -M /usr/local/man ntpctl
$ man -M /usr/local/man ntpd.conf

Conclusión

El tiempo es inherentemente importante para la función de estaciones de trabajo, servidores, enrutadores y redes. Sin tiempo sincronizado, la correlación precisa de información entre dispositivos se vuelve difícil, si no imposible. Cuando se trata de seguridad, si no puede comparar con éxito los registros entre cada uno de sus enrutadores y todos sus servidores de red, le resultará muy difícil desarrollar una imagen confiable de un incidente.

informatica/unix_freebsd/fbsd-openntp.txt · Última modificación: 2022/12/16 15:23 por 127.0.0.1
Recent changes RSS feed Creative Commons License Donate Minima Template by Wikidesign Driven by DokuWiki