Actualizaciones automáticas de seguridad en Ubuntu 16.04

Qué haremos
- Instalar unattended-upgrades en Ubuntu 16.04
- Configurar unattended-upgrades para actualizaciones de seguridad
- Habilitar las actualizaciones automáticas periódicas
- Comprobar paquetes actualizados y revisar registros
Requisitos previos
- Ubuntu 16.04 Server actualizado
- Privilegios de root o acceso sudo
- Conexión SSH al servidor
Definición breve: unattended-upgrades es un paquete que automatiza la descarga e instalación de actualizaciones APT, especialmente útil para parches de seguridad.
Paso 1 - Instalar unattended-upgrades en Ubuntu 16.04
Conéctate por SSH al servidor:
ssh root@hakase-labs
Actualiza la lista de paquetes e instala unattended-upgrades:
sudo apt update
sudo apt install unattended-upgrades
Tras la instalación editaremos la configuración dentro de /etc/apt/apt.conf.d.
Paso 2 - Configurar unattended-upgrades
El archivo principal de configuración es /etc/apt/apt.conf.d/50unattended-upgrades. Edita con vim u otro editor:
cd /etc/apt/apt.conf.d/
vim 50unattended-upgrades
Definir tipo de actualizaciones
Para limitar las actualizaciones solo a parches de seguridad, deja comentadas las líneas generales y habilita la línea -security:
Unattended-Upgrade::Allowed-Origins {
// "${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
// Extended Security Maintenance; doesn't necessarily exist for
// every release and this system may not have it installed, but if
// available, the policy for updates is such that unattended-upgrades
// should also install from here by default.
// "${distro_id}ESM:${distro_codename}";
// "${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
Paquetes en lista negra
Si necesitas evitar que ciertos paquetes se actualicen automáticamente (por compatibilidad, control de versiones o motivos críticos), añade sus nombres a la lista negra. Ejemplo:
Unattended-Upgrade::Package-Blacklist {
"vim";
"mysql-server";
"mysql-client";
// "libc6";
// "libc6-dev";
// "libc6-i686";
};
Consejo: en servidores de producción, evita añadir bibliotecas críticas (como libc6) salvo que estés seguro de las implicaciones.
Configuraciones adicionales útiles
Para recibir un correo por cada ejecución, descomenta y establece la dirección:
Unattended-Upgrade::Mail "root";
Nota: necesitas tener instalado un agente de correo (por ejemplo sendmail o mailx) para que el sistema entregue mensajes localmente o hacia tu relay.
Instala sendmail si falta:
sudo apt install -y sendmail
Habilita eliminación automática de dependencias no usadas:
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Habilita reinicio automático si una actualización lo requiere:
Unattended-Upgrade::Automatic-Reboot "true";
Puedes fijar la hora de reinicio (formato 24 h HH:MM):
Unattended-Upgrade::Automatic-Reboot-Time "00:00";
Guarda y cierra el archivo. Con esto unattended-upgrades está configurado.
Paso 3 - Habilitar actualizaciones automáticas periódicas
Configura la periodicidad en /etc/apt/apt.conf.d/20auto-upgrades:
cd /etc/apt/apt.conf.d/
vim 20auto-upgrades
Contenido recomendado:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "3";
APT::Periodic::Unattended-Upgrade "1";
Significado rápido:
- Update-Package-Lists: 1 habilita la actualización diaria de la lista de paquetes.
- Download-Upgradeable-Packages: 1 descarga paquetes disponibles automáticamente.
- AutocleanInterval: limpia el cache cada X días (aquí 3).
- Unattended-Upgrade: 1 habilita la ejecución automática de unattended-upgrades.
Con esto, las actualizaciones de seguridad se descargan e instalan de forma automática según los intervalos.
Paso 4 - Comprobar paquetes actualizados
Revisar registros de unattended-upgrades
Los registros están en /var/log/unattended-upgrades. Mira los archivos:
cd /var/log/unattended-upgrades
ls -lah
Archivos típicos:
- unattended-upgrades-dpkg.log — acciones dpkg durante actualizaciones (instalar, actualizar, eliminar).
- unattended-upgrades.log — resumen de paquetes, lista negra y errores.
- unattended-upgrades-shutdown.log — eventos relacionados con reinicios durante el proceso.
Para buscar entradas recientes:
sudo tail -n 200 /var/log/unattended-upgrades/unattended-upgrades.log
Notificación en el inicio de sesión SSH
Si hay actualizaciones pendientes o si se han aplicado, normalmente verás mensajes al iniciar sesión vía SSH. Ejemplo de pantalla antes de aplicar actualizaciones:
Y tras la actualización, el sistema puede informar de paquetes actualizados:
Notificación por correo
Si configuraste Unattended-Upgrade::Mail, revisa /var/mail/root o el buzón configurado:
cd /var/mail/
cat root
El correo incluye paquetes actualizados, paquetes en lista negra y posibles errores.
Comprobar reinicios
Para ver el historial de reinicios:
last reboot
El resultado muestra la fecha/hora de reinicios antes y después de aplicar actualizaciones.
Resumen rápido
Hemos instalado y configurado unattended-upgrades para aplicar automáticamente actualizaciones de seguridad en Ubuntu 16.04, con correo de notificación y reinicio automático si fuese necesario.
Lista de comprobación antes de habilitar en producción
- Tener backups recientes (snapshots LVM, ZFS o backup offsite).
- Verificar espacio en disco /var/cache/apt/archives y /boot.
- Revisar que los paquetes críticos no estén en la lista negra por error.
- Configurar correo para notificaciones (sendmail o relay SMTP).
- Probar en un entorno staging antes de producción.
Playbook/SOP: despliegue seguro paso a paso
- Hacer snapshot del servidor o backup completo.
- Actualizar listas: sudo apt update; sudo apt upgrade (manual en staging).
- Instalar unattended-upgrades: sudo apt install unattended-upgrades.
- Editar /etc/apt/apt.conf.d/50unattended-upgrades según políticas.
- Editar /etc/apt/apt.conf.d/20auto-upgrades para periodicidad.
- Instalar y configurar agente de correo para alertas.
- Forzar ejecución de prueba: sudo unattended-upgrade -d (modo debug).
- Revisar logs en /var/log/unattended-upgrades y correos.
- Monitorizar los primeros 7 días para detectar regresiones.
- Documentar cualquier paquete en lista negra y justificarla.
Pruebas y criterios de aceptación
- Criterio 1: unattended-upgrades ejecuta sin errores en modo debug.
- Criterio 2: tras una ejecución programada, /var/log/unattended-upgrades muestra paquetes instalados.
- Criterio 3: si se requiere reinicio, last reboot refleja el reinicio automático.
- Criterio 4: el correo a root contiene resumen de la actividad.
Prueba de ejecución manual:
sudo unattended-upgrade -d
Observa la salida y los logs para confirmar comportamiento.
Alternativas y cuándo usarlas
- apticron: notifica actualizaciones disponibles pero no aplica cambios. Útil si quieres aplicar manualmente en ventanas de mantenimiento.
- landscape (Canonical): solución empresarial con control centralizado para múltiples servidores.
- cron-apt: más antiguo, permite tareas programadas y scripts personalizados.
Elige unattended-upgrades cuando quieras aplicar parches de seguridad de forma automática y segura con un bajo mantenimiento central.
Escenarios en los que puede fallar (contrajemplos)
- Bloqueos de APT (lock) por otras operaciones: unattended-upgrades fallará si otro apt/dpkg está en ejecución.
- Espacio insuficiente en /boot o /var: instalaciones pueden truncarse.
- Paquetes retenidos (held): no se actualizarán.
- Dependencias rotas o PPAs incompatibles: pueden impedir la instalación automática.
Mitigaciones: configurar alertas de espacio, usar snapshot previo, y excluir paquetes críticos con Package-Blacklist.
Modelos mentales y heurísticos
- Regla 30 días: aplica parches de seguridad dentro de 30 días desde su publicación en servidores expuestos.
- Separación de responsabilidades: unattended-upgrades para seguridad; procesos manuales para cambios disruptivos.
- Fail-safe: siempre tener backups y snapshots antes de permitir reinicios automáticos.
Hardening y privacidad
- Limita las actualizaciones automáticas solo a -security si dependencias y estabilidad importan.
- Evita exponer información sensible en correos locales si el buzón puede reenviarse externamente.
- Considera enviar solo resúmenes diarios a un correo seguro y centralizado.
Consejos de compatibilidad y migración
- Ubuntu 16.04 llegó al final de su soporte estándar en 2019; valora plan de migración a LTS más reciente (18.04, 20.04, 22.04) para soporte a largo plazo.
- Extended Security Maintenance (ESM) puede estar disponible para algunas releases; añade ${distro_id}ESM:${distro_codename} si tu suscripción lo permite.
Solución de problemas rápida
- Mensaje: “Could not get lock /var/lib/dpkg/lock” → espera que termine otro apt o detén el proceso en mantenimiento.
- Fallo en sendmail → verifica /var/log/mail.log y la configuración del relay SMTP.
- Reinicio no ocurre → verifica Unattended-Upgrade::Automatic-Reboot y que systemd- services permitan reinicios.
Checklist por roles
- Administrador (Admin): configurar políticas, listas negras y backups.
- Operador (Operator): vigilar logs, espacio en disco y reinicios.
- Seguridad (Security): revisar políticas de notificación y cumplimiento.
Ejemplo de plantilla para documentación interna
- Servidor:
- Rol:
- Snapshot previo: Sí/No
- Política aplicada: security-only
- Lista negra: [vim, mysql-server]
- Reinicio automático: Sí/No
- Correo notificaciones: root@localhost
- Fecha despliegue: YYYY-MM-DD
Diagrama de decisión básico (Mermaid)
flowchart TD
A[Inicio] --> B{¿Servidor en producción?}
B -- Sí --> C[Crear snapshot / backup]
B -- No --> D[Probar en staging]
C --> E[Instalar unattended-upgrades]
D --> E
E --> F{¿Aplicar sólo seguridad?}
F -- Sí --> G[Habilitar ${distro_codename}-security]
F -- No --> H[Habilitar orígenes adicionales]
G --> I[Configurar correo y reinicio]
H --> I
I --> J[Habilitar periodicidad en 20auto-upgrades]
J --> K[Monitorear logs y alertas]
Notas finales
- Mantén un inventario de servidores y aplica políticas coherentes.
- Prueba en staging antes de activar reinicios automáticos en producción.
- Revisa periódicamente la lista negra y la configuración de correo.
Referencias
Materiales similares

Retrasar elementos de inicio en Mac con DelayedLauncher

Crear y administrar cuenta de invitado en Mac

Descargar imágenes desde Google Docs

Chrome no se abre en Windows: soluciones rápidas
Recuperar el icono de Configuración en el menú Inicio
