Guía de tecnologías

Actualizaciones automáticas de seguridad en Ubuntu 16.04

7 min read Seguridad Actualizado 08 Oct 2025
Actualizaciones automáticas en Ubuntu 16.04
Actualizaciones automáticas en Ubuntu 16.04

Qué haremos

  1. Instalar unattended-upgrades en Ubuntu 16.04
  2. Configurar unattended-upgrades para actualizaciones de seguridad
  3. Habilitar las actualizaciones automáticas periódicas
  4. 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";
 };

Pantalla de configuración de unattended-upgrades

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

Lista de archivos de registro de unattended-upgrades

Archivos típicos:

  1. unattended-upgrades-dpkg.log — acciones dpkg durante actualizaciones (instalar, actualizar, eliminar).
  2. unattended-upgrades.log — resumen de paquetes, lista negra y errores.
  3. 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:

Notificación previa a actualizaciones

Y tras la actualización, el sistema puede informar de paquetes actualizados:

Notificación de paquetes de seguridad 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.

Resultado de reinicio tras actualización

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

  1. Hacer snapshot del servidor o backup completo.
  2. Actualizar listas: sudo apt update; sudo apt upgrade (manual en staging).
  3. Instalar unattended-upgrades: sudo apt install unattended-upgrades.
  4. Editar /etc/apt/apt.conf.d/50unattended-upgrades según políticas.
  5. Editar /etc/apt/apt.conf.d/20auto-upgrades para periodicidad.
  6. Instalar y configurar agente de correo para alertas.
  7. Forzar ejecución de prueba: sudo unattended-upgrade -d (modo debug).
  8. Revisar logs en /var/log/unattended-upgrades y correos.
  9. Monitorizar los primeros 7 días para detectar regresiones.
  10. 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

Autor
Edición

Materiales similares

Podman en Debian 11: instalación y uso
DevOps

Podman en Debian 11: instalación y uso

Apt-pinning en Debian: guía práctica
Sistemas

Apt-pinning en Debian: guía práctica

OptiScaler: inyectar FSR 4 en casi cualquier juego
Guía técnica

OptiScaler: inyectar FSR 4 en casi cualquier juego

Dansguardian + Squid NTLM en Debian Etch
Redes

Dansguardian + Squid NTLM en Debian Etch

Arreglar error de instalación Android en SD
Android

Arreglar error de instalación Android en SD

Conectar carpetas de red con KNetAttach
Redes

Conectar carpetas de red con KNetAttach