Laboratorio
Básico
cableando
Que tu servidor se parchee solo

Que tu servidor se parchee solo

Básico

Los pasos marcados en azul cambian según tu sistema.

Cuando se publica una vulnerabilidad grave, empieza una carrera: en unas horas hay programas recorriendo internet en busca de servidores sin parchear. Si administras tu servidor tú solo, no siempre vas a estar delante para actualizar a tiempo. Ni de vacaciones, ni de madrugada, ni la semana que tienes otras cosas en la cabeza.

La solución es que el servidor instale solo las actualizaciones de seguridad. En las distribuciones estables es una apuesta segura: sus parches corrigen el fallo sin cambiar el comportamiento del programa, así que lo que funcionaba ayer sigue funcionando hoy. Lo que no se hace solo son los saltos de versión, que siguen siendo cosa tuya.

En este tutorial lo configurarás en tu sistema, con un reinicio programado para cuando el parche lo necesite, y verás qué queda fuera y sigue dependiendo de ti.

Lo que necesitas

Un servidor con un usuario con sudo. Si partes de cero, sigue antes los primeros pasos de un servidor Linux.

Paso 1: instalar

Ubuntu

Ubuntu Server ya trae unattended-upgrades instalado y activado. Compruébalo:

cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Si el archivo no existe o los valores son "0", instálalo y actívalo:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Responde que sí a la pregunta de si quieres descargar e instalar automáticamente las actualizaciones estables.

Debian

Instala unattended-upgrades y apt-listchanges, que resume lo que cambia en cada actualización:

sudo apt update
sudo apt install unattended-upgrades apt-listchanges

Actívalo:

sudo dpkg-reconfigure -plow unattended-upgrades

Responde que sí a la pregunta de si quieres descargar e instalar automáticamente las actualizaciones estables. Se crea el archivo /etc/apt/apt.conf.d/20auto-upgrades, con dos líneas: una para actualizar la lista de paquetes cada día y otra para instalar las actualizaciones.

AlmaLinux / Rocky

Instala dnf-automatic:

sudo dnf install dnf-automatic

Fedora

Instala el complemento de actualizaciones automáticas de dnf:

sudo dnf install dnf5-plugin-automatic

Paso 2: qué se instala y cuándo se reinicia

Ubuntu

Por defecto, unattended-upgrades instala solo las actualizaciones del repositorio de seguridad. La lista está en /etc/apt/apt.conf.d/50unattended-upgrades, un archivo largo y comentado que conviene leer, pero no edites: las actualizaciones del propio paquete querrán reemplazarlo. Tus ajustes van en un archivo aparte que se lee después y tiene la última palabra:

sudo nano /etc/apt/apt.conf.d/52unattended-upgrades-local

/etc/apt/apt.conf.d/52unattended-upgrades-local

// Limpiar los núcleos viejos y las dependencias que ya no usa nadie
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Si una actualización necesita reiniciar (un núcleo nuevo, por ejemplo), hacerlo de madrugada
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:30";

El reinicio solo se hace cuando una actualización lo pide, no cada noche. Si tu servidor no se puede reiniciar sin avisar, deja Automatic-Reboot en "false" y reinícialo tú cuando veas el aviso del paso 4.

Si el servidor puede mandar correo, añade también Unattended-Upgrade::Mail "tu@ejemplo.org"; y Unattended-Upgrade::MailReport "only-on-error"; para enterarte solo cuando algo falle.

Debian

Por defecto, unattended-upgrades instala solo las actualizaciones del repositorio de seguridad. La lista está en /etc/apt/apt.conf.d/50unattended-upgrades, un archivo largo y comentado que conviene leer, pero no edites: las actualizaciones del propio paquete querrán reemplazarlo. Tus ajustes van en un archivo aparte que se lee después y tiene la última palabra:

sudo nano /etc/apt/apt.conf.d/52unattended-upgrades-local

/etc/apt/apt.conf.d/52unattended-upgrades-local

// Limpiar los núcleos viejos y las dependencias que ya no usa nadie
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Si una actualización necesita reiniciar (un núcleo nuevo, por ejemplo), hacerlo de madrugada
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:30";

El reinicio solo se hace cuando una actualización lo pide, no cada noche. Si tu servidor no se puede reiniciar sin avisar, deja Automatic-Reboot en "false" y reinícialo tú cuando veas el aviso del paso 4.

Si el servidor puede mandar correo, añade también Unattended-Upgrade::Mail "tu@ejemplo.org"; y Unattended-Upgrade::MailReport "only-on-error"; para enterarte solo cuando algo falle.

AlmaLinux / Rocky

La configuración está en /etc/dnf/automatic.conf. Ábrelo y deja así la sección [commands]:

sudo nano /etc/dnf/automatic.conf

/etc/dnf/automatic.conf

[commands]
# Solo las actualizaciones con un aviso de seguridad
upgrade_type = security
# Descargarlas e instalarlas, no solo avisar
download_updates = yes
apply_updates = yes
# Reiniciar solo si una actualización lo necesita (un núcleo nuevo, por ejemplo)
reboot = when-needed

AlmaLinux y Rocky publican sus avisos de seguridad igual que Red Hat, así que upgrade_type = security funciona como se espera. Si tu servidor no se puede reiniciar sin avisar, deja reboot = never y reinícialo tú cuando veas el aviso del paso 4.

Fedora

Los valores por defecto están en /usr/share/dnf5/dnf5-plugins/automatic.conf. No toques ese archivo: tus ajustes van en /etc/dnf/automatic.conf, que solo necesita lo que quieras cambiar:

sudo nano /etc/dnf/automatic.conf

/etc/dnf/automatic.conf

[commands]
# Descargar e instalar, no solo avisar
apply_updates = yes
# Reiniciar solo si una actualización lo necesita (un núcleo nuevo, por ejemplo)
reboot = when-needed

Fedora no es una distribución estable como las demás: sus actualizaciones traen versiones nuevas, no solo parches, y no todas las correcciones llevan un aviso de seguridad. Por eso aquí se instala todo (upgrade_type = default, el valor de fábrica). Si prefieres limitarlo a los avisos de seguridad, añade upgrade_type = security.

Paso 3: ponerlo en marcha y probarlo

Ubuntu

unattended-upgrades funciona con dos temporizadores de systemd: uno actualiza la lista de paquetes y el otro instala. Comprueba cuándo les toca:

systemctl list-timers 'apt-daily*'

Y haz un ensayo, que te dirá qué instalaría sin instalar nada:

sudo unattended-upgrade --dry-run --debug

Al final de la salida verás los paquetes que se actualizarían, o que no hay ninguno pendiente. Si hay un error en tu archivo de ajustes, aparecerá aquí.

Debian

unattended-upgrades funciona con dos temporizadores de systemd: uno actualiza la lista de paquetes y el otro instala. Comprueba cuándo les toca:

systemctl list-timers 'apt-daily*'

Y haz un ensayo, que te dirá qué instalaría sin instalar nada:

sudo unattended-upgrade --dry-run --debug

Al final de la salida verás los paquetes que se actualizarían, o que no hay ninguno pendiente. Si hay un error en tu archivo de ajustes, aparecerá aquí.

AlmaLinux / Rocky

Activa el temporizador, que lanza la revisión cada mañana:

sudo systemctl enable --now dnf-automatic.timer
systemctl list-timers 'dnf-automatic*'

Para ver qué avisos de seguridad tienes pendientes ahora mismo:

sudo dnf updateinfo list --security

Fedora

Activa el temporizador, que lanza la revisión cada mañana:

sudo systemctl enable --now dnf5-automatic.timer
systemctl list-timers 'dnf5-automatic*'

Para ver qué avisos de seguridad tienes pendientes ahora mismo:

sudo dnf updateinfo list --security

Paso 4: saber qué ha hecho

Que algo se haga solo no significa que no tengas que mirarlo nunca. Repasa de vez en cuando lo que se ha instalado y si queda algún reinicio pendiente.

Ubuntu

El registro de cada ejecución está en /var/log/unattended-upgrades/unattended-upgrades.log:

sudo tail -n 30 /var/log/unattended-upgrades/unattended-upgrades.log

Cuando una actualización necesita reiniciar el servidor, aparece el archivo /var/run/reboot-required, y en /var/run/reboot-required.pkgs se ve qué paquete lo ha pedido. Además, Ubuntu te lo recuerda al entrar por SSH.

Hay actualizaciones que no piden reiniciar el servidor, pero sí los servicios que usan la biblioteca parcheada. needrestart (de serie en Ubuntu; en Debian, sudo apt install needrestart) te dice cuáles: lánzalo con sudo needrestart.

Debian

El registro de cada ejecución está en /var/log/unattended-upgrades/unattended-upgrades.log:

sudo tail -n 30 /var/log/unattended-upgrades/unattended-upgrades.log

Cuando una actualización necesita reiniciar el servidor, aparece el archivo /var/run/reboot-required, y en /var/run/reboot-required.pkgs se ve qué paquete lo ha pedido. Además, Ubuntu te lo recuerda al entrar por SSH.

Hay actualizaciones que no piden reiniciar el servidor, pero sí los servicios que usan la biblioteca parcheada. needrestart (de serie en Ubuntu; en Debian, sudo apt install needrestart) te dice cuáles: lánzalo con sudo needrestart.

AlmaLinux / Rocky

Lo que ha hecho cada ejecución queda en el diario de systemd:

journalctl -u dnf-automatic.service --since "1 week ago"

Para saber si hace falta reiniciar, y por qué paquete:

sudo dnf needs-restarting -r

Si dnf no reconoce la orden, instala antes dnf-plugins-core.

Fedora

Lo que ha hecho cada ejecución queda en el diario de systemd:

journalctl -u dnf5-automatic.service --since "1 week ago"

Para saber si hace falta reiniciar, y por qué paquete:

sudo dnf needs-restarting -r

Lo que no se actualiza solo

Las actualizaciones automáticas cubren los paquetes de tu distribución. Todo lo demás sigue siendo cosa tuya, y suele ser lo más expuesto:

  • Los contenedores. Las imágenes de Docker no se actualizan con el sistema. Repasa la sección del día a día de Docker y Compose y hazlo con la misma regularidad.
  • Las aplicaciones instaladas a mano: un WordPress con sus plugins, un Nextcloud, cualquier cosa que descargaste de una web. Muchas tienen su propio sistema de actualizaciones; actívalo o apúntate sus avisos.
  • Los paquetes de lenguajes, como los de pip o npm que instalaste fuera de la distribución.
  • Los saltos de versión de la distribución, como de Debian 12 a 13. Esos, con calma, con copia de seguridad y a mano.

Para enterarte de lo importante, suscríbete a los avisos de seguridad de tu distribución: los USN de Ubuntu, la lista debian-security-announce de Debian o los avisos de AlmaLinux y Rocky.

Listo

Tu servidor se parchea solo cada día y se reinicia de madrugada cuando hace falta. La próxima vez que salga una vulnerabilidad grave en algún paquete del sistema, lo más probable es que, cuando leas la noticia, tu servidor ya esté corregido.

X LinkedIn
¿Te ha resultado útil?

Sigue leyendo

Cifra el disco de tu ordenador

Tutorial / Sistemas

Cifra el disco de tu ordenador

Si te roban el portátil, que solo se lleven el aparato: cifrado completo con LUKS, FileVault o BitLocker, y dónde guardar la llave de recuperación.

/12 min

Copias de seguridad cifradas con restic

Tutorial / Sistemas

Copias de seguridad cifradas con restic

Copias diarias, cifradas antes de salir de tu equipo y sin duplicados, a otro servidor, un disco o la nube. Y una restauración que hayas probado.

/16 min