Actualizaciones automáticas de Linux: configurar unattended-upgrades y dnf-automatic para actualizar servidores Linux
Nivel: Experto
Tiempo estimado: ~30 minutos
Objetivo: Configurar actualizaciones automáticas de Linux escalables y sin tiempo de inactividad con unattended-upgrades y dnf-automatic, siguiendo los principios de Infrastructure as Code.
Introducción
El parcheo manual de servidores es un cuello de botella crítico en la gestión de cualquier entorno de producción: sin automatización, mantener seguros y actualizados cientos de nodos de forma fiable sería muy difícil. Una aplicación vulnerable puede verse comprometida en cuestión de minutos, y la mayoría de los exploits apuntan a vulnerabilidades conocidas que aún no se han parcheado. Es necesario aplicar a tiempo las actualizaciones de seguridad (parches críticos publicados para corregir vulnerabilidades conocidas en el software) para evitar brechas de seguridad. En este tutorial configuraremos actualizaciones automáticas de Linux en un servidor Linux con unattended-upgrades y dnf-automatic. Este enfoque estandariza las actualizaciones de servidores Linux.
¿Qué son unattended-upgrades y dnf-automatic?
unattended-upgrades es una utilidad de Debian/Ubuntu que automatiza la instalación de actualizaciones de seguridad y de otros paquetes.
dnf-automatic es un componente que proporciona actualizaciones automatizadas para sistemas RHEL/CentOS/Fedora.
Estas utilidades permiten ejecutar actualizaciones automáticas (el proceso de descargar e instalar actualizaciones sin intervención humana) de forma transparente en segundo plano. Normalmente se ejecutan a diario mediante un temporizador de systemd (una unidad de systemd que controla la programación de tareas y sustituye a los tradicionales trabajos de cron).
Requisitos previos
Antes de empezar, asegúrese de que se cumplen las siguientes condiciones:
- Sistema operativo: Ubuntu 20.04/22.04/24.04 LTS, Debian 12/13 o RHEL/AlmaLinux 9/10
- Acceso: acceso sudo o root al servidor
- Requisitos de red: acceso HTTPS saliente a los repositorios de paquetes (archive.ubuntu.com, security.debian.org, repo.almalinux.org)
- Conocimientos necesarios: comprensión experta de administración de sistemas, systemd y conceptos básicos de gestión de parches (el proceso de distribuir y aplicar actualizaciones de software), así como de la gestión de parches en Linux.
Paso 1: Configurar las actualizaciones automáticas de Linux con unattended-upgrades
En los sistemas que usan APT (Advanced Package Tool) (el sistema de gestión de paquetes principal de las distribuciones basadas en Debian), utilizamos unattended-upgrades. Esta herramienta se integra sin fricciones en su estrategia de gestión de parches en Linux.
1.1 Instalar el paquete
En primer lugar, compruebe e instale el paquete necesario desde el repositorio de paquetes (una ubicación de almacenamiento centralizada desde la que se obtienen e instalan los paquetes de software).
Ejecute el siguiente comando:
sudo apt update && sudo apt install unattended-upgrades -y
Debería ver una salida que confirme la instalación. Con ello, el sistema queda listo para las actualizaciones automáticas con APT.
1.2 Configurar los orígenes permitidos
La configuración principal se encuentra en /etc/apt/apt.conf.d/50unattended-upgrades. Modificaremos la configuración para que solo se instalen actualizaciones de seguridad. Esto minimiza el riesgo de cambios incompatibles durante las actualizaciones automáticas de paquetes.
Antes de realizar cambios, es recomendable crear una copia de seguridad del archivo de configuración original:
sudo cp /etc/apt/apt.conf.d/50unattended-upgrades /etc/apt/apt.conf.d/50unattended-upgrades.bak
Abra el archivo de configuración:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Sustituya por completo el contenido del bloque Allowed-Origins y añada los nombres indicados al bloque Package-Blacklist:
Para Ubuntu:
Unattended-Upgrade::Allowed-Origins { "${distro_id}:${distro_codename}-security"; };
Para Debian:
Unattended-Upgrade::Origins-Pattern { "origin=Debian,codename=${distro_codename},label=Debian-Security"; "origin=Debian,codename=${distro_codename}-security,label=Debian-Security"; };
A continuación, configure la lista negra de paquetes y el comportamiento de reinicio:
Unattended-Upgrade::Package-Blacklist { "^nginx$"; "^mysql-server$"; "^mariadb-server$"; "postgresql*"; "docker*"; }; Unattended-Upgrade::Automatic-Reboot "false";
La Package-Blacklist utiliza expresiones regulares. Una entrada como "nginx" coincide con nginx-common, nginx-extras, etc. Para apuntar únicamente al paquete exacto, utilice anclas de expresión regular como "^nginx$".
Así se restringen las actualizaciones automáticas con APT a los parches de seguridad y se excluyen los paquetes críticos de la actualización automática, lo que reduce el riesgo de interrupción del servicio sin renunciar a la automatización de parches de seguridad.
Las actualizaciones del kernel, de libc y de otros paquetes de bajo nivel pueden seguir requiriendo un reinicio. En entornos de producción, mantenga desactivados los reinicios automáticos, salvo que las ventanas de mantenimiento se apliquen mediante orquestación.
1.3 Habilitar las actualizaciones automáticas
Cree el archivo auto-upgrades para activar el temporizador de systemd de APT.
Abra el archivo:
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
Pegue el siguiente contenido:
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; APT::Periodic::AutocleanInterval "7";
Esta configuración indica al sistema que:
Update-Package-Lists "1"- actualice a diario las listas de paquetes.Unattended-Upgrade "1"- ejecute automáticamente las actualizaciones automáticas con APT.AutocleanInterval "7"- limpie la caché de paquetes cada 7 días.
Paso 2: Configurar dnf-automatic para las actualizaciones de servidores Linux
En los sistemas que utilizan DNF (Dandified YUM) (el gestor de paquetes de nueva generación de las distribuciones basadas en RHEL), dnf-automatic ofrece una sólida automatización de actualizaciones con DNF.
2.1 Instalar el paquete
Instale la herramienta de automatización desde el repositorio de paquetes.
Ejecute el siguiente comando:
sudo dnf install dnf-automatic -y
Debería ver una salida que confirme la instalación correcta del paquete de automatización de actualizaciones con DNF.
2.2 Configurar las políticas de actualización
La configuración principal se encuentra en /etc/dnf/automatic.conf. Configure la herramienta para que descargue y aplique únicamente actualizaciones de seguridad.
Antes de realizar cambios, haga una copia de seguridad del archivo de configuración y compruebe si hay avisos de seguridad (security advisories) disponibles para su distribución:
sudo cp /etc/dnf/automatic.conf /etc/dnf/automatic.conf.bak sudo dnf updateinfo summary sudo dnf updateinfo list security
Abra el archivo de configuración:
sudo nano /etc/dnf/automatic.conf
Ajuste los siguientes parámetros:
[commands] upgrade_type = security random_sleep = 3600 download_updates = yes apply_updates = yes [emitters] emit_via = stdio
Esta configuración indica al sistema que:
upgrade_type = security- se centre exclusivamente en los parches de seguridad.random_sleep = 3600- aleatorice la ejecución hasta en 1 hora, repartiendo la carga en despliegues de Infrastructure as Code a gran escala para evitar picos en los repositorios y fallos en cascada simultáneos.download_updatesyapply_updates- descarguen e instalen automáticamente las actualizaciones de seguridad.
upgrade_type = security depende de los metadatos de seguridad del repositorio. Si faltan los avisos de seguridad (algo habitual en una instalación nueva de AlmaLinux 10), dnf-automatic con este ajuste puede no aplicar nada en absoluto. Verifique la compatibilidad del repositorio antes de depender de actualizaciones solo de seguridad en producción. Como alternativa, en sistemas de producción puede utilizar upgrade_type = security-severity:Critical o default-security.
2.3 Habilitar el temporizador de systemd
Active el temporizador para programar la automatización de actualizaciones con DNF.
Ejecute el siguiente comando:
sudo systemctl enable --now dnf-automatic.timer
Debería ver una salida que indique que el temporizador está habilitado e iniciado. Esto activa las actualizaciones automáticas de paquetes programadas en el sistema.
Paso 3: Verificar la configuración
Una vez escrita la configuración, conviene verificarla.
3.1 Verificación en Debian/Ubuntu
Ejecute una simulación (dry run) para validar la configuración. El indicador -d (o --dry-run) ejecuta unattended-upgrades en modo de depuración: no se modifica nada realmente:
sudo unattended-upgrades --dry-run --debug
El indicador --dry-run muestra información de diagnóstico, pero no modifica ningún archivo. Asegúrese de que no haya paquetes de la lista negra en cola.
En producción, los registros importan más que las simulaciones. Compruebe que el temporizador y el servicio estén activos:
systemctl list-timers | grep apt systemctl status apt-daily-upgrade.service --no-pager
A continuación, revise la salida reciente del registro para confirmar la actividad de actualización. En un sistema recién configurado, el registro puede estar vacío. Para una comprobación inmediata, ejecute: sudo unattended-upgrade -v.
sudo tail -n 50 /var/log/unattended-upgrades/unattended-upgrades.log
3.2 Verificar el temporizador en RHEL/AlmaLinux
Compruebe el estado del temporizador:
systemctl list-timers | grep dnf-automatic
Salida esperada:
Wed 2026-05-27 06:23:13 EEST 16h left - - dnf-automatic.timer dnf-automatic.service
Si el temporizador aparece en la lista, las actualizaciones están programadas correctamente.
3.3 Comprobar si es necesario reiniciar
Las actualizaciones del kernel y de libc se incluyen en la cola de seguridad (por ejemplo, en Debian linux-image-amd64 forma parte de las actualizaciones de seguridad). Dado que se ha establecido Automatic-Reboot=false, debe comprobar usted mismo si hace falta un reinicio manual.
Para Debian/Ubuntu:
test -f /var/run/reboot-required && cat /var/run/reboot-required.pkgs
Para AlmaLinux/RHEL:
sudo dnf needs-restarting -r
3.4 Ejecución forzada para la verificación
Es posible que no vea el resultado hasta que se dispare el temporizador. Para ejecutar manualmente el proceso de actualización con fines de verificación:
Para Debian/Ubuntu:
sudo unattended-upgrade -v
Para AlmaLinux/RHEL:
sudo dnf-automatic
Paso 4: Configuración avanzada (nivel experto)
Para cumplir requisitos de nivel experto, puede ampliar la configuración con notificaciones y una programación más granular.
4.1 Notificaciones por correo electrónico
Para recibir informes sobre las actualizaciones:
Para Debian/Ubuntu:
En /etc/apt/apt.conf.d/50unattended-upgrades, descomente y ajuste:
Unattended-Upgrade::Mail "<YOUR_EMAIL>"; Unattended-Upgrade::MailReport "on-change";
Para AlmaLinux/RHEL:
En /etc/dnf/automatic.conf, configure la sección [email] y cambie el emisor (emitter):
[emitters] emit_via = email [email] email_from = [email protected] email_to = <YOUR_EMAIL> email_host = localhost
4.2 Temporizadores avanzados de dnf-automatic
dnf-automatic ofrece varios temporizadores que permiten separar las fases de descarga e instalación, lo que da más control en producción:
- dnf-automatic.timer: el temporizador predeterminado (descarga y, si está configurado, instala).
- dnf-automatic-notifyonly.timer: solo comprueba si hay actualizaciones y envía una notificación.
- dnf-automatic-download.timer: descarga las actualizaciones, pero no las instala.
- dnf-automatic-install.timer: descarga e instala las actualizaciones automáticamente (sobrescribe el ajuste
apply_updatesde la configuración).
Utilice el temporizador que se ajuste a la política de mantenimiento de su clúster.
Reversión (rollback)
Para deshacer todo lo realizado, basta con eliminar las herramientas y las configuraciones.
Debian/Ubuntu:
sudo apt purge unattended-upgrades -y sudo rm -rf /etc/apt/apt.conf.d/20auto-upgrades /var/log/unattended-upgrades/ /var/run/reboot-required* sudo mv /etc/apt/apt.conf.d/50unattended-upgrades.bak /etc/apt/apt.conf.d/50unattended-upgrades
RHEL/AlmaLinux:
sudo systemctl disable --now dnf-automatic.timer sudo mv /etc/dnf/automatic.conf.bak /etc/dnf/automatic.conf sudo dnf remove dnf-automatic -y
Eliminar estas herramientas desactivará las actualizaciones automáticas de todo el sistema y dejará sus servidores vulnerables, a menos que se parcheen manualmente.
Conclusión
Eso es todo. Un sistema correctamente configurado con unattended-upgrades o dnf-automatic, verificado con una simulación, y listo. Gracias a esta automatización de parches de seguridad, las actualizaciones automáticas de Linux se aplican sin fricciones, la carga de mantenimiento se mantiene baja y las actualizaciones de servidores Linux pasan a ser predecibles en lugar de reactivas. En entornos más grandes, combine esta configuración con Infrastructure as Code y despliegues escalonados para no actualizar todos los nodos al mismo tiempo.
Versión del documento: 1.0
Última actualización: mayo de 2026
Responsable: Equipo de documentación técnica