Implementando un Servidor NTP ( network time protocol )

ntpserver

Como temas de seguridad, nos podemos hacer una pregunta simple… sera bueno abrir puertos para que los clientes se actualicen con un servidor de NTP Externo ? cuantos equipos de computo dispones ? se podrá tener algún riesgo ? en fin son preguntas que se las haría cualquier persona… por mi parte preferí crear mi servidor de NTP y actualizarlo con fuentes externas y que ademas de eso mis equipos de mi red interna se actualizaran con este. me siento mas seguro de esa forma. jejeje. bueno de hay surgió este post donde les explicare como hacer para tener su propio servidor de NTP.

Pero que es NTP( network time protocol) es un protocolo de datos el cual transmite informacion relacionada con con el tiempo y con el tiempo me refiero a las horas jejej. a continuación detallare los pasos para hacer la instalación sobre un servidor CentOS.

Primero Instalamos los paquetes NTP y NTPDATE

yum -y install ntp ntpdate

Con esto dejamos instalado tanto lo que necesitamos para nuestro servidor de NTP como el Cliente de NTP para que nuestro servidor fisico este siempre con la fecha correcta.

Seguido de esto y muy importante es permitir el acceso de los cliente de la red a nuestro servidor, para esto agregamos una regla a iptables para puerto 123 con esto le damos acceso a nuestros clientes de red.

iptables -A INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT

para afinar habilitamos el daemon de NTP.

chkconfig ntpd on

hasta aqui solo nos falta hacer la configuración de NTP, la cual la podemos realizar mediante la creación de un archivo llamado ntp.conf ya sea con vim o nano (vim /etc/ntp.conf) ubicado en la raiz de /etc en ese archivo vamos a colocar lo siguiente.

# Se establece la política predeterminada para cualquier
# servidor de tiempo utilizado: se permite la sincronizan
# de tiempo con las fuentes, pero sin permitir a la fuente
# consultar (noquery), ni modificar el servicio en el
# sistema (nomodify) y declinando proveer mensajes de
# registro (notrap).
restrict default nomodify notrap noquery
restrict -6 default nomodify notrap noquery

# Permitir todo el acceso a la interfaz de retorno del
# sistema.
restrict 127.0.0.1
restrict -6 ::1

# Se le permite a las redes local sincronizar con el servidor
# pero sin permitirles modificar la configuración del
# sistema y sin usar a éstos como iguales para sincronizar.
# Cambiar por las que correspondan a sus propias redes locales.
# la IP que tiene como subred la 70 es la que debes modificar para que tu red pueda acceder a la hora.
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.70.0 mask 255.255.255.128 nomodify notrap
restrict 172.16.1.0 mask 255.255.255.240 nomodify notrap
restrict 10.0.1.0 mask 255.255.255.248 nomodify notrap

# Reloj local indisciplinado.
# Este es un controlador emulado que se utiliza sólo como
# respaldo cuando ninguna de las fuentes reales están
# disponibles.
fudge 127.127.1.0 stratum 10
server 127.127.1.0

# Archivo de variaciones.
driftfile /var/lib/ntp/drift
broadcastdelay 0.008

# Archivo de claves si acaso fuesen necesarias para realizar
# consultas
keys /etc/ntp/keys

# Lista de servidores de tiempo de estrato 1 o 2.
# Se recomienda tener al menos 3 servidores listados.
# Mas servidores en:
# http://kopernix.com/?q=ntp
# http://www.eecis.udel.edu/~mills/ntp/servers.html
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
server 3.pool.ntp.org iburst

# Permisos que se asignarán para cada servidor de tiempo.
# En los ejemplos, se impide a las fuente consultar o modificar
# el servicio en el sistema, así como también enviar mensaje de
# registro.
restrict 0.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
restrict 1.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
restrict 2.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
restrict 3.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery

# Se activa la difusión hacia los clientes
broadcastclient

una vez dejamos la configuración completa procedemos a reiniciar los servicios de la siguiente forma.

service ntpd restart
service iptables restart

terminado esto deberos tener tu server de de hora listo y funcionando, el cual te va a servir para colocarlo en tus dispositivos, access points, controladoras, firewalls, etc. sin tener que darles acceso a internet.

si deseas hacer una prueba de tu servidor te recomiendo este modulo de nodejs que te permite hacer un cliente de ntp facil y completo este recibe el nombre de ntp-client

npm install ntp-client

y su uso es el siguiente.

var ntpClient = require('ntp-client');

ntpClient.getNetworkTime("192.168.22.89", 123, function(err, date) {
if(err) {
console.error(err);
return;
}

console.log("Current time : ");
console.log(date); // Mon Jul 08 2013 21:31:31 GMT+0200 (Paris, Madrid (heure d’été))
});

y siempre recomiendo utilizar los servidores externo del proyecto NTP. http://www.pool.ntp.org/es/

Deja un comentario