Actualizaciones automáticas

Introducción

La mayoría de compromisos de servidores explotan vulnerabilidades conocidas para las que ya existe un parche. Mantener el sistema actualizado es la medida de seguridad más efectiva y sencilla. En Ubuntu, unattended-upgrades permite automatizar la instalación de actualizaciones de seguridad sin intervención manual.

unattended-upgrades


# Instalar (ya viene en Ubuntu Server por defecto)
apt install unattended-upgrades apt-listchanges

# Configurar de forma interactiva
dpkg-reconfigure -plow unattended-upgrades
          

Configuración

El comportamiento se controla en dos ficheros:

1. /etc/apt/apt.conf.d/20auto-upgrades

Controla la frecuencia con la que APT comprueba e instala actualizaciones:


APT::Periodic::Update-Package-Lists "1";        // actualizar lista de paquetes cada día
APT::Periodic::Unattended-Upgrade "1";          // instalar actualizaciones cada día
APT::Periodic::Download-Upgradeable-Packages "1"; // descargar en segundo plano
APT::Periodic::AutocleanInterval "7";           // limpiar caché cada 7 días
          

2. /etc/apt/apt.conf.d/50unattended-upgrades

Controla qué repositorios y paquetes se actualizan automáticamente:


Unattended-Upgrade::Allowed-Origins {
    // Actualizaciones de seguridad de Ubuntu (recomendado siempre)
    "${distro_id}:${distro_codename}-security";

    // Actualizaciones generales (opcional, más riesgo de rotura)
    // "${distro_id}:${distro_codename}-updates";
};

// Paquetes a excluir de las actualizaciones automáticas
Unattended-Upgrade::Package-Blacklist {
    // "nginx";
    // "mysql-server";
};

// Reiniciar automáticamente si hay actualizaciones de kernel
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

// Enviar informe por correo
Unattended-Upgrade::Mail "admin@ejemplo.com";
Unattended-Upgrade::MailReport "on-change";

// Eliminar dependencias huérfanas
Unattended-Upgrade::Remove-Unused-Dependencies "true";
          

Verificar y probar


# Comprobar el estado del servicio
systemctl status unattended-upgrades

# Ejecutar manualmente en modo simulación (--dry-run)
unattended-upgrade --dry-run --debug

# Ejecutar manualmente de verdad
unattended-upgrade -v

# Ver el log de actualizaciones aplicadas
cat /var/log/unattended-upgrades/unattended-upgrades.log

# Ver si hay paquetes pendientes de actualizar
apt list --upgradable 2>/dev/null
          

needrestart — detectar servicios que necesitan reinicio

Tras actualizar bibliotecas del sistema, los servicios que las cargan en memoria siguen usando la versión antigua hasta que se reinician. needrestart detecta automáticamente qué servicios necesitan reinicio.


apt install needrestart

# Comprobar qué servicios necesitan reinicio
needrestart

# Reiniciar automáticamente los servicios afectados (sin preguntar)
needrestart -r a

# Ver si el kernel necesita reinicio
needrestart -k
          

apticron — notificaciones de actualizaciones pendientes

apticron envía un correo diario cuando hay actualizaciones pendientes, sin instalarlas automáticamente. Útil para servidores donde se prefiere control manual pero se quiere visibilidad de los parches disponibles.


apt install apticron

# Configurar el destinatario del correo
# Editar /etc/apticron/apticron.conf:
EMAIL="admin@ejemplo.com"
          

La recomendación mínima es habilitar actualizaciones automáticas de seguridad (-security) con unattended-upgrades. Las actualizaciones generales pueden gestionarse manualmente para minimizar el riesgo de rotura de servicios.

Protección básica frente a ataques con fail2ban

Índice de la sección

Índice del curso