Automatización de la configuración de servidores de hora en Linux, Debian/Ubuntu y CentOS/RHEL

Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero Artículos Guías Manuales Sistemas Linux Windows Redes MySql Binario 0 Binario Cero

La correcta sincronización del tiempo en los sistemas Linux es esencial para el funcionamiento de servicios críticos como autenticación, registros de auditoría, sistemas distribuidos o tareas programadas. Este artículo presenta dos scripts de configuración automatizada que detectan e instalan el servicio de sincronización de tiempo más adecuado (Chrony o NTP), lo configuran con un servidor de tiempo genérico público (pool.ntp.org) y aseguran su correcta activación y verificación.

Objetivo

  • Detectar si chrony o ntp están instalados.
  • Instalar chrony si no hay ningún servicio de sincronización.
  • Configurar el servicio correspondiente para sincronizar contra pool.ntp.org.
  • Activar y reiniciar el servicio.
  • Verificar el estado de sincronización.

Script para Debian/Ubuntu

#!/bin/bash

NTP_SERVER="pool.ntp.org"
CHRONY_CONF="/etc/chrony/chrony.conf"
NTP_CONF="/etc/ntp.conf"

check_installed() {
dpkg -l | grep -qw "$1"
}

configure_chrony() {
echo "Configurando Chrony..."
sed -i 's/^pool/#pool/g' $CHRONY_CONF 2>/dev/null
sed -i 's/^server/#server/g' $CHRONY_CONF 2>/dev/null
echo "server $NTP_SERVER iburst" >> $CHRONY_CONF
systemctl enable chrony
systemctl restart chrony
}

configure_ntp() {
echo "Configurando NTP..."
sed -i 's/^server/#server/g' $NTP_CONF 2>/dev/null
echo "server $NTP_SERVER iburst" >> $NTP_CONF
cat <<EOF >> $NTP_CONF

restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
EOF
systemctl enable ntp
systemctl restart ntp
}

echo "Comprobando si chrony o ntp están instalados..."

if check_installed chrony; then
echo "Chrony está instalado."
configure_chrony
elif check_installed ntp; then
echo "NTP está instalado."
configure_ntp
else
echo "No hay ninguno. Instalando Chrony..."
apt update && apt install -y chrony
configure_chrony
fi

# Verificación
echo "Verificando sincronización..."
timedatectl status
chronyc tracking 2>/dev/null || ntpq -p

Script para CentOS/RHEL

#!/bin/bash

NTP_SERVER="pool.ntp.org"
CHRONY_CONF="/etc/chrony.conf"
NTP_CONF="/etc/ntp.conf"

check_installed() {
rpm -q "$1" &>/dev/null
}

configure_chrony() {
echo "Configurando Chrony..."
sed -i 's/^pool/#pool/g' $CHRONY_CONF 2>/dev/null
sed -i 's/^server/#server/g' $CHRONY_CONF 2>/dev/null
echo "server $NTP_SERVER iburst" >> $CHRONY_CONF
systemctl enable chronyd
systemctl restart chronyd
}

configure_ntp() {
echo "Configurando NTP..."
sed -i 's/^server/#server/g' $NTP_CONF 2>/dev/null
echo "server $NTP_SERVER iburst" >> $NTP_CONF
cat <<EOF >> $NTP_CONF

restrict default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
EOF
systemctl enable ntpd
systemctl restart ntpd
}

echo "Comprobando si chrony o ntp están instalados..."

if check_installed chrony; then
echo "Chrony está instalado."
configure_chrony
elif check_installed ntp; then
echo "NTP está instalado."
configure_ntp
else
echo "No hay ninguno. Instalando Chrony..."
yum install -y chrony
configure_chrony
fi

# Verificación
echo "Verificando sincronización..."
timedatectl status
chronyc tracking 2>/dev/null || ntpq -p

Consideraciones finales

  • Chrony es recomendado para sistemas modernos, especialmente en entornos virtualizados o con redes intermitentes.
  • pool.ntp.org es una fuente pública fiable, pero en entornos corporativos es recomendable configurar un servidor NTP interno sincronizado con fuentes autorizadas.
  • Ambos scripts están preparados para ejecutarse con privilegios de superusuario y realizar los cambios sin intervención manual.

Estos scripts son ideales para automatizar despliegues en entornos híbridos o heterogéneos, simplificando la administración del tiempo en sistemas Linux.

Binario 0
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.