Cómo configurar actualizaciones automáticas del kernel sin reiniciar en un servidor Linux
Parchear el kernel de un servidor Linux parece sencillo. Se puede hacer utilizando herramientas comunes como dpkg, apt-get o kexec. Estos métodos, sin embargo, se complican si una organización gestiona cientos o miles de servidores. Muchos servidores significan múltiples distribuciones que parchear, cada una de las cuales requiere la atención personal de un administrador de sistemas o un ingeniero.
Estos métodos de parcheo manual también son arriesgados porque requieren reinicios. Los reinicios implican tiempo de inactividad del servidor, lo que siempre es problemático, por lo que suelen hacerse en ciclos de reinicio. Dado que el parcheado manual se realiza durante estos ciclos, proporciona a los hackers una «ventana de tiempo» en la que pueden atacar la infraestructura del servidor.
Para las organizaciones que gestionan más de unos pocos servidores, el parcheado en vivo es una opción mejor. Es una forma automatizada de parchear un núcleo Linux mientras el servidor está funcionando, lo que permite que sea más eficaz y más seguro que los métodos manuales. Vamos a aprender a configurar cuatro de los sistemas de live patching más populares de Canonical, Oracle, Red Hat y CloudLinux.
Qué es el live patching y cómo funciona
En última instancia, hay dos métodos de parcheado en vivo para núcleos y bibliotecas: temporal y persistente. El método temporal aplica un parche sin reiniciar, pero en realidad requiere reiniciar el servidor más tarde. El parcheado en vivo persistente no requiere reiniciar.
El método temporal
El método método temporal (o parcheado «en pila») se ejecuta con software de gestión de paquetes (como el plugin YUM). Los parches se envían a los repositorios y se aplican según los flujos de trabajo de actualización especificados por el usuario.
El parcheado «en pila» equivale a reinicios del servidor y tiempo de inactividad, aunque puede que no necesites un reinicio justo después de instalar el parche, pero debido a la arquitectura de este tipo de actualizaciones en vivo, los parches de seguridad se apilan unos sobre otros con el tiempo, disminuyendo potencialmente el rendimiento y la estabilidad. La única solución a este problema es reiniciar el servidor para cargar un núcleo nuevo en la memoria.
Los proveedores que ofrecen parches temporales son
El método persistente
En el caso de un método persistenteun servidor almacena los parches más recientes y estos parches se denominan «monolíticos», ya que contienen parches anteriores. Para actualizar los servidores, un programa agente se ejecuta en segundo plano, comprobando si hay parches en el servidor de parches. Si hay un parche para un núcleo en el servidor de parches, el agente llama al módulo de parches y éste aplica el parche.
El parcheado persistente tiene otras ventajas importantes:
- Los servidores que utilizan el método persistente siguen funcionando incluso con vulnerabilidades de hardware que suelen requerir reinicios para parchear, como Spectre, Meltdown y Zombieload;
- Reduce el tiempo y el esfuerzo necesarios para administrar los servidores mediante la automatización completa del proceso de aplicación de parches;
- Permite que los servidores sigan funcionando, a menudo durante años.
El método de parcheo persistente suele conllevar el pago de cuotas al proveedor, aunque la mayoría de los proveedores ofrecen periodos de prueba gratuitos:
Configurar actualizaciones automáticas del kernel sin reiniciar en un servidor Linux
A continuación te mostraremos cómo configurar actualizaciones del kernel sin reinicio en un servidor Linux utilizando los servicios Livepatch, Kpatch, Ksplice y KernelCare.
Nota: Antes de empezar a poner en práctica estas instrucciones, asegúrate de que tu sistema está actualizado y de que tienes una copia de seguridad.
1. Configurar Canonical Livepatch
El servicio Canonical Livepatch puede configurarse durante o después de la instalación. Instalará los parches de seguridad del kernel sólo cuando ejecutes el comando apt-get upgrade (de ahí que sea semiautomático).
Ventajas: Sencillo. Semiautomático. No es necesario reiniciar.
Contras: Caro para 4 o más hosts (pero gratis hasta 3 hosts para todos y hasta 50 máquinas si eres miembro de la Comunidad Ubuntu). No hay reversión de parches.
Cuotas, por servidor: Mensual (No disponible), Anual (225 $).
Para instalar Livepatch en Ubuntu 20.04 LTS Server (también funciona en las versiones 16.04 LTS, 14.04 LTS y 18.04 LTS), abre un terminal y ejecuta estos dos comandos:
sudo snap install canonical-livepatch sudo canonical-livepatch enable <your key>
Para dar de baja un servidor, utiliza este comando:
sudo canonical-livepatch disable <your key>
Para comprobar el estado del servicio, utiliza este comando:
sudo canonical-livepatch status --verbose
2. Configuración de Oracle Ksplice
A menos que estés ejecutando una instancia de Ksplice dentro de Oracle Cloud, necesitarás una clave de acceso para instalarlo. Puedes obtenerla iniciando sesión en la Red Unbreakable Linuxy siguiendo las instrucciones para registrar tu sistema para Ksplice.
Para instalar Ksplice, tu sistema debe tener acceso a Internet. Si utilizas un proxy, configúralo en tu shell:
# export http_proxy=http://proxy.example.com:port
# export https_proxy=http://proxy.example.com:port
El proxy debe soportar la realización de conexiones HTTPS, y la cadena del proxy debe tener este formato
[protocol://][username:password@]<host>[:port]
- protocolo es el protocolo de conexión al proxy (http o https)
- nombre de usuario y contraseña son la información de autenticación necesaria para utilizar tu proxy (si existe).
- host y puerto son el nombre de host/dirección IP y el número de puerto utilizados para conectarse al proxy
Ejecuta las siguientes instrucciones como root, sustituyendo TU_CLAVE_DE_ACCESO por la clave de acceso que recibiste en el paso anterior.
Dentro de la Nube de Oracle
Para instalar Ksplice dentro de la Nube de Oracle de modo que las actualizaciones del núcleo se instalen automáticamente, ejecuta estos comandos:
# wget -N https://ksplice.oracle.com/uptrack/install-uptrack-oc
# sh install-uptrack-oc --autoinstall
Para aplicar las actualizaciones disponibles a Uptrack, la aplicación que instala automáticamente las actualizaciones del núcleo, ejecuta este comando:
# uptrack-upgrade -y
Si ya has instalado Uptrack, puedes activarlo configurando autoinstalación = sí en /etc/uptrack/uptrack.conf después de instalar Ksplice.
Para instalar Ksplice de modo que las actualizaciones se apliquen manualmente, ejecuta estos comandos:
# wget -N https://ksplice.oracle.com/uptrack/install-uptrack-oc
# sh install-uptrack-oc
Fuera de la Nube de Oracle
Para instalar Ksplice fuera de la Nube de Oracle de modo que las actualizaciones del núcleo se instalen automáticamente, ejecuta estos comandos:
# wget -N https://ksplice.oracle.com/uptrack/install-uptrack
# sh install-uptrack YOUR_ACCESS_KEY --autoinstall
Para instalar Ksplice de modo que las actualizaciones se apliquen manualmente, ejecuta estos comandos:
# wget -N https://ksplice.oracle.com/uptrack/install-uptrack
# sh install-uptrack YOUR_ACCESS_KEY
Nota: Si instalas Ksplice en un servidor Debian o Ubuntu, es posible que primero tengas que instalar el archivo ca-certificados con apt-get install ca-certificados. Sin este paquete, verás un «error de verificación de certificado».
4. Configuración de Red Hat Kpatch
La instalación de Kpatch es simple y directa:
Ejecuta el comando actualizar para actualizar los repositorios de paquetes y obtener la información más reciente sobre los paquetes:
sudo apt-get update -y
Ejecuta el comando instalar con la bandera -y para instalar rápidamente los paquetes y dependencias:
sudo apt-get install -y patch
5. Configurar CloudLinux KernelCare
Para ver si el kernel que se está ejecutando es compatible con KernelCare, ejecuta cualquiera de estos comandos
curl -s -L https://kernelcare.com/checker | python
o
wget -qq -O – https://kernelcare.com/checker | python
Para instalar KernelCare, ejecuta cualquiera de estos comandos:
curl -s -L https://kernelcare.com/installer | bash
o
wget -qq -O - https://kernelcare.com/installer | bash
Si utilizas una licencia basada en IP, no necesitas nada más. Si utilizas una licencia basada en clave, ejecuta este comando:
$ /usr/bin/kcarectl --register KEY
CLAVE es la cadena de claves de registro que recibiste cuando compraste KernelCare o te registraste para una prueba gratuita. Puedes obtener una clave aquí.
Para dar de baja un servidor, ejecuta
sudo kcarectl --unregister
Para comprobar el estado del servicio, ejecuta:
sudo kcarectl --info
KernelCare comprueba automáticamente si hay nuevos parches cada 4 horas. Para realizar las actualizaciones manualmente en lugar de automáticamente, ejecuta:
/usr/bin/kcarectl –update
Conclusión
Estas instrucciones de instalación de varias soluciones de live patching enumeran todos los pasos necesarios para instalar una en tu entorno. Una vez hecho esto, disfrutarás de las ventajas de la tecnología live patching: poder actualizar el kernel sin detener el servidor, sin necesidad de reinicios posteriores durante meses, o incluso años.