Si administra su(s) propio(s) servidor(es), tarde o temprano se enfrenta a este problema: tiene que reiniciar el sistema operativo, pero la máquina proporciona un servicio importante que no puede interrumpir.
Pero, ¿por qué reiniciar en primer lugar? Todo parece estar funcionando bien después de un apt-get upgrade
dominio. Sin embargo, las cosas no siempre son lo que parecen. A pesar de que el sistema continúa ejecutándose felizmente después de cada actualización, sin forzar un reinicio como lo hace Windows, es posible que aún necesite uno.
Por ejemplo, cuando se descubre una vulnerabilidad en el núcleo del sistema (kernel), se repara y se envía a su servidor como un nuevo paquete. Después de instalar el kernel parcheado, algunos archivos se escriben en el disco, pero aún es el kernel antiguo el que ejecuta el programa, ya que es el que se carga en la memoria (RAM).
Esto significa que su servidor aún es vulnerable a los agujeros de seguridad descubiertos anteriormente. Se pueden recargar otros procesos, demonios y servicios sin reiniciar el sistema operativo. Sin embargo, el núcleo se encuentra en el corazón del sistema y solo se puede recargar en el siguiente arranque.
Ubuntu Livepatch resuelve esto al permitirle cerrar los agujeros de seguridad del kernel sin reiniciar. De esta forma, puede evitar o retrasar los reinicios durante semanas o meses sin comprometer la seguridad.
La idea central detrás de los parches en vivo es simple: cuando una función es vulnerable, reescríbala, elimine la falla y cargue una 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 núcleo, redirija la llamada para usar el código reescrito.
Pero, como ocurre con la mayoría de las cosas que parecen funcionar de forma sencilla, el implementacion y detalles tecnicos no son tan simples.
Cómo configurar Livepatch en Ubuntu
Vaya a esta página y crea tu cuenta Ubuntu One. (O simplemente inicia sesión si ya lo tienes). Revisa tu correo electrónico y luego haz clic en el enlace de confirmación de la cuenta. A continuación, visita la Página del servicio Canonical Livepatch. Seleccione que es un «usuario de Ubuntu» y haga clic en el botón para generar su token. La página siguiente le mostrará los comandos exactos que debe ingresar en su servidor. Después del primer comando, ingrese
sudo snap install canonical-livepatch
Espere unos segundos hasta que el paquete instantáneo esté completamente instalado. Cuando haya terminado, obtendrá un resultado similar al que puede ver en la siguiente imagen.
Finalmente, con el último comando de la página de Canonical,
sudo canonical-livepatch enable #PASTE_YOUR_TOKEN_HERE
el servicio se activa y automáticamente aplicará parches de seguridad a su kernel, siempre que sea necesario, sin necesidad de ninguna intervención por su parte.
Instale Snap Daemon si es necesario
En raras ocasiones, el primer comando de la sección anterior puede fallar, con el siguiente mensaje de error: -bash: /usr/bin/snap: No such file or directory
. En este caso, significa que su proveedor de servidor tiene una imagen del sistema operativo Ubuntu que no incluye el servicio Snap Daemon de forma predeterminada. Instalarlo con:
sudo apt update && sudo apt install snapd
Ahora ejecute los dos comandos de la sección anterior nuevamente.
Mantener su servidor actualizado
Livepatch aplicará todas las actualizaciones de seguridad necesarias a su kernel. Sin embargo, aún debe actualizar el resto de su sistema regularmente con un comando como:
sudo apt update && sudo apt upgrade
Debe hacer esto semanalmente, o incluso más a menudo, si puede. Los paquetes importantes del sistema pueden indicarle que deben reiniciarse para aplicar las últimas correcciones de seguridad.
Estos suelen ser reinicios correctos, 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, puede reiniciar los servicios usted mismo para asegurarse de que el nuevo código parcheado se vuelva a cargar y se apliquen las correcciones de seguridad. Por ejemplo, si nota que el paquete nginx se ha actualizado, puede ejecutar
systemctl restart nginx.service
para recargar el demonio nginx en la memoria. De lo contrario, aunque se actualice un paquete, es posible que aún se ejecute con el código antiguo y vulnerable, lo que pone a su servidor en riesgo de sufrir ataques conocidos. Algunas actualizaciones de paquetes hacen esto por usted, pero otras no. Por eso es un buen hábito prestar atención a lo que hace “apt upgrade” y reiniciar algunos servicios, si es necesario. También puede mirar los registros para ver si esto se ha hecho automáticamente.
Conclusión
Como puede ver, Canonical ha facilitado bastante la implementación de esto en un servidor. En lo que respecta al núcleo, no se requiere ningún trabajo de mantenimiento de su parte. Lo único que puedes hacer es correr
canonical-livepatch status
de vez en cuando para comprobar las cosas.