Actualizaciones automáticas en Ubuntu
En esta entrada os explico cómo habilitar las actualizaciones automáticas en Ubuntu, en unos pocos pasos. No hace falta que os diga la importancia tener asegurados nuestros sistemas informáticos, de hecho, hace poco os hablé de los 12 pasos para asegurar tu servidor Linux. Entre otras cosas, una de las partes más importantes, es tener todos los parches de seguridad al día.
Para ello podemos hacerlo de dos formas, la más habitual, por lo menos en entornos de producción, es de manera manual, coordinando dicha tarea con el correspondiente departamento de seguridad. La otra, generalmente enfocada para entornos de desarrollo, es de forma automática.
Actualizaciones automáticas en Ubuntu
En esta entrada vamos a ver cómo utilizar el paquete «unattended-upgrades«, ofrecido para distribuciones Ubuntu, para facilitar la instalación automática de paquetes de seguridad; aunque también existe la posibilidad de configurarlo para que actualice todos los paquetes disponibles, esto es, actualizaciones por mejoras, bugs o erratas.
Instalación de unattended-upgrades en Ubuntu
El paquete no viene por defecto instalado, (parece ser que a partir 18.04 sí) aunque esta disponible en los repositorios principales de esta popular distribución sudafricana.
sudo apt install unattended-upgrades
Configuración de unattended-upgrades
La instalación, por defecto, solo actualizará los paquetes de seguridad.
Su fichero de configuración está ubicado en la ruta /etc/apt/apt.conf.d/50unattended-upgrades
, podemos ver su contenido.
En un primero apartado indica que repositorios va a utilizar:
// Automatically upgrade packages from these (origin:archive) pairs
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";
};
Tal y como se observa, solo actualizará los paquetes de seguridad. Para que actualice otros, solo debemos descomentar las líneas correspondientes.
Además, le podemos indicar que paquetes queden excluidos de las actualizaciones:
// List of packages to not update (regexp are supported)
Unattended-Upgrade::Package-Blacklist {
// "vim";
// "libc6";
// "libc6-dev";
// "libc6-i686";
};
Aquí podemos añadir los paquetes que nos interesen que no queremos que se actualicen.
En cualquier caso, para habilitar las actualizaciones automáticas, debemos editar el fichero /etc/apt/apt.conf.d/20auto-upgrades
, y configurar las opciones de apt más apropiadas:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
La configuración anterior actualiza la lista de paquetes, descarga e instala las actualizaciones disponibles todos los días. El archivo de descarga local se limpia cada semana. En los servidores actualizados a versiones más nuevas de Ubuntu, dependiendo de sus respuestas, el archivo mencionado anteriormente puede no estar allí. En este caso, crear un nuevo archivo con este nombre también debería funcionar.
Para comprobar que todo ha ido bien y que efectivamente las actualizaciones automáticas están funcionando correctamente, podemos revisar los ficheros de registros ubicados en /var/log/unattended-upgrades
o bien en /var/log/apt
Habilitar notificaciones
Hace un tiempo, os hablé de Debsecan, y como nos permitía recibir notificaciones de los paquetes de seguridad, por correo, en distribuciones Debian. Pues bien, con Ubuntu podemos conseguir algo similar.
Para ello debemos añadir «Unattended-Upgrade::Mail» en el fichero de configuración de APT ubicado en /etc/apt/apt.conf.d/50unattended-upgrades
, de esta manera se enviará un correo electrónico a un administrador destallando los paquetes que necesitan actualizarse.
Para que el envío funcione debemos tener instalado el paquete «mailx» y configurada una cuenta de correo.
En este aspecto, otro paquete útil es apticron, este configurará un trabajo en cron para enviar por correo electrónico a un administrador, información sobre cualquier paquete en el sistema que tenga actualizaciones disponibles, así como un resumen e los cambios de cada paquete.
Para ello debemos instalarlo:
sudo apt install apticron
Una vez instalado el paquete, debemos editar /etc/apticron/apticron.conf
, para configurar la dirección de correo electrónico, entre otras opciones:
EMAIL="root@example.com"
Más adelante, en otra entrada, os explicaré como realizar los parcheos de seguridad de forma manual, en este sistema operativo de la compañía Canonical.
Para elaborar esta entrada, he consultado:
Muy importante vuestro artículo: mi preocupación en los equipos en producción son los reinicios necesarios (pero eso aplica a las actualizaciones de kernel y Ubuntu tiene «Livepatch» como servicio de pago).
Voy a revisar esto de instalar las actualizaciones automáticamente de seguridad porque recientemente estuve casi 7 días sin conexión a Internet por mi principal ISP y es necesario automatizar ciertas tareas; os dejo el guion con alias que utilizo actualmente para la tarea de marras:
touch ~/.bash_aliases
echo «alias actualizar=’sudo — sh -c \»apt update && sudo apt upgrade -y && cat /var/run/reboot-required\»‘» >> ~/.bash_aliases
Añadir que al hacer siempre actualizaciones automáticas de todo el sistema, se corre riesgo de que el sistema se acabe rompiendo a la larga. Hay algunas actualizaciones que pueden requerir intervención manual porque sobreescriban ficheros de configuración ya existentes o por otros motivos. En este caso, por ejemplo, se podría configurar la aplicación reseñada para que no se instalara el paquete y se avisara al usuario? Además, también es bueno leer las notas de las actualizaciones porque pueden tener información útil para prevenir errores al actualizar.
Muy acertado vuestro comentario por ello traigo a colación lo «nuevo» sobre CentOS 7, cuya distribución es considerada sumamente estable, sin embargo ahora con CentOS 8 se puede escoger una versión de actualización continua, fuente:
https://pandorafms.com/blog/es/centos-8-un-clon-que-se-renueva/
Me alegro que lo encuentres acertado. Aprovechando yo a su vez que hablas de distribuciones rolling releases y estables, matizar que en una rolling release el peligro de rotura aumenta porque naturalmente el ritmo de actualizaciones es muy superior al de una estable.
Sí, por eso he indicado que no es recomendado para entornos productivos. En mis clientes, en los entornos productivos los parcheados de seguridad son manuales, previa coordinación con los compañeros de seguridad y los funcionales de cada entorno. Saludos
Yo incluso para entornos de desarrollo o domésticos me lo pensaría mucho, pero eso ya son preferencias personales, claro. Solo quería hacer notar los inconvenientes que tiene este método. Saludos!
En los entornos que los configures, debes tener en cuenta que cada cierto tiempo tendrás que reiniciar los equipos.
Eso por supuesto, y también en el caso de los manuales según la actualización, claro.