Skip to content
VDS · Seguridad

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

ErrorConsecuenciaSolución
Activar actualizaciones para todos los repositorios, no solo los de seguridadLlegan cambios de funcionalidadMantén solo la fuente -security
La base de datos no está en la lista de exclusionesUna versión mayor rompe los datosAñádela a Package-Blacklist
Reinicio automático por la nocheEl servicio no volvió a levantarse y nadie se dio cuentaAutomatic-Reboot "false"
Configurarlo y olvidarseEl kernel se actualiza pero la actualización no se aplicaComprueba reboot-required una vez al mes
Los paquetes descargados llenaron el discoTe quedas sin espacioManté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.