Actualizaciones de seguridad automáticas
Cómo configurar unattended-upgrades en Debian y Ubuntu y dnf-automatic en AlmaLinux para que los parches se instalen solos sin que el servicio se caiga de noche.
Actualizado 23 de agosto de 2026
La mayoría de las brechas llegan por vulnerabilidades que se parchearon hace meses. Las actualizaciones manuales se posponen; las automáticas no. Una configuración sensata instala solo las actualizaciones de seguridad y deja todo lo demás en paz.
Debian y Ubuntu
apt install -y unattended-upgrades apt-listchanges
dpkg-reconfigure -plow unattended-upgrades
El archivo /etc/apt/apt.conf.d/50unattended-upgrades:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Package-Blacklist {
"postgresql-.*";
"docker-ce";
};
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Mail "you@example.com";
La programación está en /etc/apt/apt.conf.d/20auto-upgrades:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
Una simulación, sin aplicar cambios:
unattended-upgrade --dry-run --debug
systemctl status unattended-upgrades
cat /var/log/unattended-upgrades/unattended-upgrades.log
AlmaLinux y CentOS Stream
dnf install -y dnf-automatic
En /etc/dnf/automatic.conf:
[commands]
upgrade_type = security
apply_updates = yes
reboot = never
systemctl enable --now dnf-automatic.timer
systemctl list-timers | grep dnf
Qué excluir
Añade a la lista de exclusiones todo lo que se rompe cuando su versión cambia de forma inesperada: el servidor de base de datos, Docker, el propio motor de la aplicación. Actualízalos a mano en un momento tranquilo — consulta actualizaciones del sistema y de paquetes.
Las actualizaciones de seguridad del kernel también se instalan, pero solo surten efecto tras un reinicio:
test -f /var/run/reboot-required && cat /var/run/reboot-required.pkgs
Reiniciar: una decisión solo humana
La tentación de poner Automatic-Reboot "true" es fuerte, pero un reinicio automático nocturno significa que el servicio se reinicia sin nadie mirando. Si algo no vuelve a levantarse, te enterarás por la mañana por boca de tus usuarios.
Un equilibrio sensato: las actualizaciones se instalan solas y tú reinicias a mano una vez al mes mientras observas la consola en el panel /hosting/vds/m/<id>. Ya que estás, comprueba que los servicios arrancan por su cuenta:
systemctl is-enabled nginx postgresql
systemctl list-units --state=failed
Errores comunes
| Error | Consecuencia | Solución |
|---|---|---|
| Activar actualizaciones para todos los repositorios, no solo los de seguridad | Llegan cambios de funcionalidad | Mantén solo la fuente -security |
| La base de datos no está en la lista de exclusiones | Una versión mayor rompe los datos | Añádela a Package-Blacklist |
| Reinicio automático por la noche | El servicio no volvió a levantarse y nadie se dio cuenta | Automatic-Reboot "false" |
| Configurarlo y olvidarse | El kernel se actualiza pero la actualización no se aplica | Comprueba reboot-required una vez al mes |
| Los paquetes descargados llenaron el disco | Te quedas sin espacio | Mantén activada la limpieza automática de la caché |
Las actualizaciones automáticas son un seguro, no un sustituto de la atención. Una vez al mes, abre la máquina, mira el registro de actualizaciones, la lista de servicios fallidos y si hace falta reiniciar. Quince minutos al mes cubren la mayoría de los escenarios del artículo señales de una brecha.