¿Cansado de las actualizaciones manuales en tu Raspberry? ¡Es hora de automatizarlo!

unattended-upgrades

Fuente: https://xkcd.com/1328/

Una de las principales recomendaciones de seguridad para evitar potenciales ataques provenientes de vulnerabilidades de software reportadas es realizar actualizaciones de forma frecuente. Esto está muy bien, pero cuando tienes que hacerlo en múltiples equipos, suele convertirse en una tarea aburridora y puede no ser implementada rápidamente, con lo cual el dispositivo puede quedar vulnerable hasta que sea actualizado.

Obviamente, Raspberry Pi también requiere sus actualizaciones. En mi caso particular uso Raspbian, que al ser un sistema operativo derivado de Debian debe ser actualizado constantemente.

Para evitar estar realizando estas actualizaciones de forma manual (a través de apt-get update && sudo apt-get upgrade) o usando scripts en el cron, hay varias formas de automatizar el proceso. Una de ellas es empleando “unattended-upgrades” (por cierto, la otra es usando cron-apt pero es un poco más complicada).

El primer paso es instalar el paquete de software empleando apt-get:

root@raspberrypi ~ #apt-get install unattended-upgrades

Después de la instalación, se debe proceder a editar varios ficheros:

root@raspberrypi ~ #pico /etc/apt/apt.conf.d/50unattended-upgrades

Este fichero controla los paquetes que serán instalados. Aquí se puede parametrizar qué paquetes se instalarán (solamente las actualizaciones de seguridad, todas las actualizaciones, actualizaciones de releases no estables, paquetes que no se actualizarán (blacklist)), si se hacen reinicios automáticos después de la instalación, etc.  Para configurarlo, se procede de la siguiente manera:

Unattended-Upgrade::Origins-Pattern {
        "origin=Raspbian,codename=${distro_codename},label=Raspbian";
        "origin=Raspberry Pi Foundation,codename=${distro_codename},label=Raspberry Pi Foundation";
};

La anterior línea indica que se descargarán e instalarán todas las actualizaciones de paquetes de Raspbian pertenecientes a la versión de Raspbian instalada en tu Raspberry Pi.

Para terminar con la edición de este fichero, si se quieren recibir notificaciones vía e-mail de las actualizaciones, se ubica la siguiente línea:

//Unattended-Upgrade::Mail "root";

Se quita el comentario y se configura indicando el correo electrónico del administrador.

Cuando todo esté listo, se procede a reconfigurar el paquete para que incluya las configuraciones realizadas:

root@raspberrypi ~ #dpkg-reconfigure --priority=low unattended-upgrades

Se recibirá un mensaje como el siguiente (contestar “Yes”):

unattended-upgrades

Este comando al finalizar habrá creado el fichero /etc/apt/apt.conf.d/20auto-upgrades que contiene las siguientes líneas:

root@raspberrypi ~ #more /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Estas líneas indican que se descargarán los componentes a actualizar de forma diaria (“apt-get upgrade –download-only”) y se instalarán los paquetes descargados.

Posteriormente, se deben configurar las opciones del paquete. Para ello, se edita el fichero /etc/apt/apt.conf.d/02periodic y se agregan las líneas:

root@raspberrypi ~ #more /etc/apt/apt.conf.d/02periodic
APT::Periodic::Enable "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Verbose "2";

Las anteriores líneas indican que se activa el paquete,  se realizará una limpieza de paquetes cada 7 días (“apt-get autoclean”), al final se envía un correo al administrador con la salida de los comandos.

Para comprobar que todo está en orden, se ejecuta el script de actualización de la siguiente manera:

root@raspberrypi ~ #unattended-upgrades -v

Cada ejecución de las actualizaciones deja un registro de eventos ubicado en /var/log/unattended-upgrades/ con un log con la fecha del día de la ejecución y los resultados.

A pesar de la facilidad de instalación de esta utilidad, es importante monitorizar de forma continua los registros de eventos (logs) así como cualquier reinicio del servidor, para evitar problemas de compatibilidad de aplicativos que puedan dejar inservible el dispositivo.

unattended-upgrades

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.