Cómo Evitar Reinicios del Servidor con Ubuntu Livepatch

Ubuntu Livepatch Featured

Si administras tu propio servidor(es), tarde o temprano te enfrentas a este problema: tienes que reiniciar el sistema operativo, pero la máquina proporciona un servicio importante que no puedes interrumpir.

Pero, ¿por qué reiniciar en primer lugar? Todo parece estar funcionando bien después de un comando apt-get upgrade. Sin embargo, las cosas no siempre son lo que parecen. A pesar de que el sistema continúa funcionando felizmente después de cada actualización, sin forzar un reinicio como lo hace Windows, podría necesitar uno.

Por ejemplo, cuando se descubre una vulnerabilidad en el núcleo del sistema (kernel), se parchea y se envía a tu servidor como un nuevo paquete. Después de instalar el kernel parcheado, algunos archivos se escriben en el disco, pero sigue siendo el viejo kernel el que está ejecutando el espectáculo, ya que es el que se carga en la memoria (RAM).

Esto significa que tu servidor sigue siendo vulnerable a los agujeros de seguridad descubiertos anteriormente. Otros procesos, demonios y servicios pueden recargarse sin reiniciar el sistema operativo. Sin embargo, el kernel se encuentra en el corazón del sistema y solo puede recargarse en el próximo arranque.

También lee: Cómo Agregar Usuarios en Ubuntu Server

Ubuntu Livepatch resuelve esto al permitirte cerrar agujeros de seguridad del kernel sin reiniciar. De esta manera, puedes evitar o retrasar reinicios durante semanas o meses sin comprometer la seguridad.

La idea principal detrás del parcheo en vivo es simple: cuando una función es vulnerable, reescríbela, elimina el defecto y carga la nueva función en algún lugar de la memoria. Cuando se llama a la función, en lugar de ejecutar el código en el kernel, redirige la llamada para usar el código reescrito.

Ubuntu Livepatch Code Text

Pero, como con la mayoría de las cosas que parecen funcionar de manera simple, la implementación y los detalles técnicos no son tan simples.

Cómo Configurar Livepatch en Ubuntu

Ve a esta página y crea tu cuenta de Ubuntu One. (O simplemente inicia sesión si ya la tienes). Revisa tu correo electrónico y haz clic en el enlace de confirmación de la cuenta después. A continuación, visita la página del Servicio Livepatch de Canonical. Selecciona que eres un “usuario de Ubuntu” y haz clic en el botón para generar tu token. La siguiente página te mostrará los comandos exactos que debes ingresar en tu servidor. Después del primer comando, ingresa

sudo snap install canonical-livepatch

Espera unos segundos hasta que el paquete snap esté completamente instalado. Cuando haya terminado, obtendrás un resultado similar al que puedes ver en la siguiente imagen.

Ubuntu Livepatch Install Snap

Finalmente, con el último comando de la página de Canonical,

sudo canonical-livepatch enable#PASTE_YOUR_TOKEN_HERE

el servicio se activa y aplicará automáticamente parches de seguridad a tu kernel, siempre que sea necesario, sin que se requiera tu intervención.

Instalar el Demonio Snap si es Necesario

En algunas raras ocasiones, el primer comando de la sección anterior podría fallar, con el siguiente mensaje de error: -bash: /usr/bin/snap: No such file or directory. En este caso, significa que tu proveedor de servidor tiene una imagen del sistema operativo Ubuntu que no incluye el servicio del demonio snap por defecto. Instálalo con:

sudo apt update &&sudo apt install snapd

Ahora ejecuta los dos comandos de la sección anterior nuevamente.

También lee: 5 Parcheos Útiles para Mejorar Tu Experiencia con dwm

Manteniendo Tu Servidor Actualizado

Livepatch aplicará todas las actualizaciones de seguridad necesarias a tu kernel. Sin embargo, aún debes actualizar el resto de tu sistema de forma regular con un comando como:

sudo apt update &&sudo apt upgrade

Debes hacer esto semanalmente, o incluso más a menudo, si puedes. Los paquetes importantes del sistema podrían indicarte que necesitan ser reiniciados para aplicar las últimas correcciones de seguridad.

Ubuntu Livepatch Service Restart

Estos son generalmente reinicios suaves, lo que significa que no interrumpen ningún servicio en el proceso. Por ejemplo, en este caso, el demonio SSH se reinició sin interrumpir la sesión SSH activa.

En otras situaciones, podrías reiniciar servicios tú mismo para asegurarte de que el nuevo código parcheado se recargue y se apliquen las correcciones de seguridad. Por ejemplo, si notas que el paquete nginx ha sido actualizado, puedes ejecutar

systemctl restart nginx.service

para recargar el demonio nginx en la memoria. De lo contrario, aunque un paquete esté actualizado, podría seguir ejecutándose con el viejo código vulnerable, poniendo a tu servidor en riesgo de ataques conocidos. Algunas actualizaciones de paquetes hacen esto por ti, pero otras no. Por eso, es una buena práctica prestar atención a lo que hace “apt upgrade” y reiniciar algunos servicios, si es necesario. También puedes mirar los registros para ver si esto se ha hecho automáticamente.

Conclusión

Como puedes ver, Canonical ha hecho que sea bastante fácil implementar esto en un servidor. En lo que respecta al kernel, no se requiere trabajo de mantenimiento de tu parte. Lo único que puedes hacer es ejecutar

canonical-livepatch status

de vez en cuando para verificar cómo van las cosas.