Cómo mantener actualizados los servidores Ubuntu 20.04

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: seguir las mejores prácticas para la gestión de aplicaciones
  • Paso 2: Configuración de actualizaciones no supervisadas
  • Paso 3: actualización y aplicación de parches en vivo al kernel
    1. Cómo habilitar Livepatch para garantizar el funcionamiento del servidor durante las actualizaciones del kernel
  • Conclusión
  • En este tutorial, explorará algunas prácticas recomendadas para mantener actualizado su conjunto de servidores Ubuntu 20.04. Al igual que con el fortalecimiento de la seguridad de la red , existen muchos pasos que puede seguir para garantizar que sus servidores sigan funcionando de manera segura sin futuras intervenciones.

    Hay una serie de herramientas y configuraciones que puedes aplicar a la mayoría de los servidores Ubuntu más allá de lo que viene configurado automáticamente. Si te encargas de la administración de tu propio servidor, puede resultar bastante molesto y propenso a errores aplicar parches a todos tus entornos de forma manual.

    Este tutorial cubrirá:

    • Probar reinicios elegantes siguiendo las mejores prácticas para la gestión de aplicaciones, para minimizar cualquier complicación derivada de las actualizaciones de mantenimiento
    • Configurar actualizaciones automáticas para la mayoría de los paquetes y bibliotecas que se ejecutan en su máquina
    • Aplicación de parches de kernel en vivo y otras prácticas recomendadas en torno a las actualizaciones de kernel

    Prerrequisitos

    • Un servidor Ubuntu 20.04 y un usuario no root con privilegios sudo. Puede obtener más información sobre cómo configurar un usuario con estos privilegios en nuestra guía Configuración inicial del servidor con Ubuntu 20.04 .

    Paso 1: seguir las mejores prácticas para la gestión de aplicaciones

    Una parte fundamental de la configuración de su servidor para actualizaciones automáticas es asegurarse de que todas las aplicaciones que se ejecutan en el servidor puedan reiniciarse correctamente después de un tiempo de inactividad no planificado o un reinicio. Los administradores de paquetes de Linux están diseñados para ejecutarse sin interrupciones en segundo plano, de modo que el mantenimiento necesario no implique ninguna sobrecarga adicional. A pesar de esto, una de las razones más comunes para no tener una buena estrategia de actualización implementada es la preocupación por cómo se comportará su servidor después de reiniciarse.

    Siempre que sea posible, las aplicaciones de su pila deben ser administradas por el sistema de inicio de su servidor, que en la mayoría de las distribuciones de Linux modernas, incluido Ubuntu, es systemd. Systemd proporciona el comando systemctl para interactuar con sus servicios en ejecución y reiniciarlos automáticamente según sea necesario. Prácticamente todo el software que se instala a través de su administrador de paquetes y está diseñado para ejecutarse en segundo plano debe proporcionar automáticamente un servicio systemd y un archivo de unidad de configuración como práctica recomendada.

    Cuando ejecute su propio software o software implementado desde repositorios de Git, no es una mala idea escribir sus propios archivos de unidad para integrarlos con systemd. Como alternativa liviana, puede preferir usar una herramienta como supervisor . También puede usar el programador cron de su sistema con la @rebootsintaxis.

    Una vez que la configuración esté en su lugar, asegúrese de probarla mediante reinicios. Puede reiniciar ejecutando sudo shutdown now -r, lo que detendrá limpiamente los procesos en ejecución y reiniciará de inmediato. También puede especificar una hora en hh:mm o una cantidad de minutos a partir de ahora, en lugar de nowpara programar un reinicio en el futuro. Las implementaciones de producción generalmente no deberían requerir su atención después de interrupciones no planificadas, y todos los servicios y puntos finales necesarios deberían volver a funcionar automáticamente.

    Ahora que se ha asegurado de que su entorno no tendrá problemas para persistir durante los reinicios de mantenimiento, en el siguiente paso aprenderá a programar actualizaciones automáticas.

    Paso 2: Configuración de actualizaciones no supervisadas

    El administrador de paquetes de Ubuntu, apt, tiene un flujo de trabajo bien establecido para realizar una actualización completa del sistema. Primero, se ejecuta apt updatepara actualizar las listas de paquetes y, luego, se ejecuta apt upgradesin especificar un paquete para actualizar todos los paquetes del sistema. Este flujo de trabajo puede ser ligeramente diferente si tiene algún conflicto de versiones con paquetes de terceros o si desea mantener algunos paquetes sin actualizar, pero los comandos principales son los mismos.

    Ubuntu ofrece una herramienta exclusiva llamada unattended-upgradespara recuperar e instalar automáticamente parches de seguridad y otras actualizaciones esenciales para su servidor. La mayoría de los servidores Ubuntu vienen con esta herramienta instalada y configurada automáticamente, pero puede instalarla con los siguientes aptcomandos:

    1. sudo apt update
    2. sudo apt install unattended-upgrades

    Después de la instalación, puede comprobar que el unattended-upgradesservicio se está ejecutando mediante systemctl:

    1. sudo systemctl status unattended-upgrades.service
    Output● unattended-upgrades.service - Unattended Upgrades Shutdown     Loaded: loaded (/lib/systemd/system/unattended-upgrades.service; enabled; vendor preset: enabled)     Active: active (running) since Mon 2022-02-14 17:51:49 UTC; 3h 4min ago       Docs: man:unattended-upgrade(8)   Main PID: 829 (unattended-upgr)      Tasks: 2 (limit: 1137)     Memory: 10.6M     CGroup: /system.slice/unattended-upgrades.service

    La configuración predeterminada de unattended-upgradesrecuperará automáticamente las correcciones de errores y las actualizaciones de seguridad para la mayoría de los paquetes incluidos en los repositorios de Ubuntu. Sin embargo, si está utilizando versiones anteriores de algunos paquetes para evitar cambios en el servidor, o si su servidor utiliza repositorios de paquetes de terceros además de los de Ubuntu, puede configurar aún más el unattended-upgradesservicio.

    Su configuración se almacena en formato /etc/apt/apt.conf.d/50unattended-upgrades. Abra este archivo con nanosu editor de texto favorito:

    1. sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

    El archivo está bien anotado y se pueden ver muchas líneas de comentarios de código (que comienzan con //) que explican su funcionalidad. El primer bloque de configuración maneja qué paquetes se actualizarán automáticamente, coincidiendo con una plantilla para los nombres de repositorios de paquetes de Ubuntu. Los archivos en el repositorio principal y en el -securityrepositorio se actualizarán de forma predeterminada, pero las líneas que contienen los repositorios -updates, -proposedy -backportsestán comentadas de forma predeterminada.

    Estos repositorios están deshabilitados de forma predeterminada porque es más probable que contengan cambios importantes en los paquetes instalados. Para habilitarlos manualmente para actualizaciones sin supervisión, puede eliminar los //símbolos de comentarios de estas líneas.

    /etc/apt/apt.conf.d/50actualizaciones-unattendidas

    // Automatically upgrade packages from these (origin:archive) pairs//// Note that in Ubuntu security updates may pull in new dependencies// from non-security sources (e.g. chromium). By allowing the release// pocket these get automatically pulled in.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}ESMApps:${distro_codename}-apps-security";        "${distro_id}ESM:${distro_codename}-infra-security";//      "${distro_id}:${distro_codename}-updates";//      "${distro_id}:${distro_codename}-proposed";//      "${distro_id}:${distro_codename}-backports";};…

    Más abajo en el archivo, hay varias opciones con interruptores de configuración true/ false. Por ejemplo, hay un interruptor para reiniciar automáticamente después de la instalación de paquetes que necesitan un reinicio para que surtan efecto. Puede habilitar esta opción eliminando el //símbolo de comentario y cambiando falsea true. Sin embargo, al hacerlo, su servidor dejará de estar disponible en intervalos impredecibles. Si habilita esta opción, asegúrese de que sus aplicaciones o usuarios puedan tolerar el tiempo de inactividad.

    /etc/apt/apt.conf.d/50actualizaciones-unattendidas

    // Automatically reboot *WITHOUT CONFIRMATION* if//  the file /var/run/reboot-required is found after the upgrade//Unattended-Upgrade::Automatic-Reboot "false";

    Guarde y cierre el archivo cuando haya terminado de editarlo. Si está utilizando nano, presione Ctrl+X, luego cuando se le solicite Yy luego Enter.

    Si realizó cambios en la configuración, vuelva a cargar el unattended-upgradesservicio para que surtan efecto:

    1. sudo systemctl reload unattended-upgrades.service

    Ahora debería tener soluciones implementadas para garantizar que todos los paquetes de su servidor reciban actualizaciones de seguridad esenciales sin ninguna intervención adicional. En el último paso, aprenderá a mantener actualizado su núcleo y a manejar mejor los reinicios del servidor cuando sean necesarios.

    Paso 3: actualización y aplicación de parches en vivo al kernel

    Con menos frecuencia que otros paquetes, necesitará actualizar el núcleo de su sistema. El núcleo de Linux contiene (casi) todos los controladores de hardware en ejecución y es responsable de la mayoría de las interacciones de bajo nivel del sistema. Las actualizaciones del núcleo generalmente solo son necesarias si existe una vulnerabilidad de alto perfil que solucionar, si necesita hacer uso de una nueva característica del núcleo que se haya publicado o si su núcleo se ha vuelto tan antiguo que existe un mayor riesgo de que se acumulen errores y vulnerabilidades de los que quizás no esté al tanto.

    No existe un método universal para programar automáticamente las actualizaciones del kernel de Linux. Esto se debe a que, históricamente, las actualizaciones del kernel han requerido un reinicio completo del sistema y es imposible programar reinicios sin hacer suposiciones sobre el entorno. Se espera que muchos servidores brinden una disponibilidad lo más cercana posible a las 24 horas del día, los 7 días de la semana, y un reinicio puede demorar una cantidad de tiempo desconocida o requerir una intervención manual.

    Si está dispuesto a tolerar algún tiempo de inactividad, actualizar su kernel es sencillo: sus aptactualizaciones no supervisadas se pueden configurar para instalar y preparar nuevos kernels junto con otros paquetes y, después de reiniciar, su servidor debería usar automáticamente el nuevo kernel. La mayoría de las implementaciones de producción requieren una complejidad adicional en torno a reinicios como este para garantizar la disponibilidad del servicio. Por ejemplo, puede usar un balanceador de carga para redirigir automáticamente el tráfico a servidores que pueden proporcionar una funcionalidad idéntica en una implementación de escala horizontal mientras se reinician individualmente en secuencia, para evitar cualquier tiempo de inactividad visible.

    Cómo habilitar Livepatch para garantizar el funcionamiento del servidor durante las actualizaciones del kernel

    Para evitar tiempos de inactividad durante las actualizaciones del kernel, puede utilizar una característica del kernel de Linux llamada parches en vivo. Esta característica permite implementar actualizaciones del kernel sin tener que reiniciar. Hay dos mantenedores principales de parches en vivo del kernel: Canonical, que proporciona su propio servicio Livepatch para Ubuntu, y KernelCare, que brinda soporte para Ubuntu además de la mayoría de las otras distribuciones principales de Linux. Ambos requieren registro para su uso, y solo el servicio de Canonical es gratuito para uso individual.

    Puede registrarse para obtener una clave Livepatch en https://auth.livepatch.canonical.com/ . Después de registrarse, puede instalar el canonical-livepatchpaquete snap. Snap es otro administrador de paquetes de Ubuntu que se ejecuta junto con apt.

    1. sudo snap install canonical-livepatch

    Puedes habilitarlo canonical-livepatchcon un comando de una línea usando la clave de su sitio web:

    1. sudo canonical-livepatch enable your-key

    La salida debe contener el mensaje Successfully enabled device.El servicio debe ejecutarse en segundo plano a partir de ahora sin ninguna intervención adicional, y puede verificar su estado utilizando canonical-livepatch status:

    1. sudo canonical-livepatch status
    Outputlast check: 55 seconds agokernel: 5.4.0-26.30-genericserver check-in: succeededpatch state: ✓ all applicable livepatch modules insertedpatch version: 84.1tier: updates (Free usage; This machine beta tests new patches.)machine id: d56589e7fa994005a266d4caf9b9dcf7

    Ahora ha configurado actualizaciones automáticas del kernel para su servidor, lo que significa que ya no debería ser necesario reiniciar para mantener un entorno seguro y actualizado.

    Conclusión

    En este tutorial, exploró varias estrategias para mantener sus servidores Ubuntu actualizados automáticamente. También aprendió algunos de los matices de los repositorios de paquetes, las actualizaciones del kernel y el manejo de reinicios de servidores. Todos estos son conceptos fundamentales importantes de DevOps y del trabajo con servidores en general, y casi todas las configuraciones de producción se basan en estos conceptos básicos.

    A continuación, puede que quieras aprender más sobre la gestión de paquetes en Ubuntu . Si quieres aprender más sobre el formato de paquete Snap, visita nuestro tutorial Cómo empaquetar y publicar una aplicación Snap en Ubuntu 18.04 .

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion