Cómo mantener actualizados los servidores Rocky Linux 8

Introducción

En este tutorial, explorará algunas prácticas recomendadas para mantener actualizado su conjunto de servidores Rocky Linux 8. 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 Rocky Linux más allá de lo que se configura 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 Rocky Linux 8 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 Rocky Linux 8 .

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, incluida Rocky Linux, es systemd. Systemd proporciona el comando systemctl para interactuar con los 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 nowprogramar 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 automáticas

El administrador de paquetes de Rocky, dnf, tiene dos formas principales de realizar una actualización completa del sistema. Puede ejecutarlo dnf upgradesin especificar un paquete para actualizar todos los paquetes de su sistema. También puede ejecutarlo dnf upgrade-minimalpara actualizar todos los paquetes solo a la última versión de corrección de errores o parche de seguridad, que realizará el mantenimiento necesario y evitará posibles cambios disruptivos en el origen. Puede leer más sobre dnflos comandos en la documentación de dnf .

Rocky también ofrece una herramienta exclusiva llamada dnf-automaticpara recuperar e instalar automáticamente parches de seguridad y otras actualizaciones esenciales para su servidor. Puede instalarla utilizando dnf:

  1. sudo dnf install dnf-automatic -y

dnf-automaticNo se habilita automáticamente después de la instalación. En cambio, ofrece varios servicios diferentes que puede registrar con Systemd para personalizar su comportamiento. Estos son:

  • dnf-automatic – este servicio sigue las dnf-automaticopciones del archivo de configuración en /etc/dnf/automatic.
  • dnf-automatic-notifyonly : esto anula el archivo de configuración al notificarle solo sobre actualizaciones disponibles y no instalarlas.
  • dnf-automatic-download : esto anula el archivo de configuración al solo descargar los paquetes y no instalarlos.
  • dnf-automatic-install : esto anula el archivo de configuración instalando siempre los paquetes descargados.

En este tutorial, habilitará el dnf-automatic-installservicio, pero primero realizará un cambio en el dnf-automaticarchivo de configuración. Abra el archivo con visu editor de texto favorito:

  1. sudo vi /etc/dnf/automatic

/etc/dnf/automatic.conf

[commands]#  What kind of upgrade to perform:# default                            = all available upgrades# security                           = only the security upgradesupgrade_type = securityrandom_sleep = 0# Maximum time in seconds to wait until the system is on-line and able to# connect to remote repositories.network_online_timeout = 60# To just receive updates use dnf-automatic-notifyonly.timer# Whether updates should be downloaded when they are available, by# dnf-automatic.timer. notifyonly.timer, download.timer and# install.timer override this setting.download_updates = yes# Whether updates should be applied when they are available, by# dnf-automatic.timer. notifyonly.timer, download.timer and# install.timer override this setting.apply_updates = no…

La mayoría de las opciones de este archivo corresponden a las distintas anulaciones proporcionadas por los diferentes servicios de Systemd. Una excepción es la upgrade_typeopción , que está establecida en defaultde forma predeterminada. Si va a implementar actualizaciones automáticas (la configuración más proactiva), es una buena idea instalar solo actualizaciones de seguridad de forma predeterminada, para evitar cambios inesperados en la funcionalidad. Cambie el upgrade_typevalor a securitycomo en el ejemplo anterior, luego guarde y cierre el archivo. Si está usando vi, puede guardar y salir ingresando :x.

Ahora puedes habilitar el servicio usando systemctl:

  1. sudo systemctl enable dnf-automatic-install.timer

Puede comprobar que el dnf-automatic-installservicio se está ejecutando correctamente mediante systemctl:

  1. sudo systemctl status dnf-automatic-install
Output● dnf-automatic-install.service - dnf automatic install updates   Loaded: loaded (/usr/lib/systemd/system/dnf-automatic-install.service; static; vendor preset: disabled)   Active: inactive (dead)Jul 14 21:01:03 droplet-name dnf-automatic[40103]: No security updates needed, but 154 updates availableJul 14 21:01:03 droplet-name systemd[1]: dnf-automatic-install.service: Succeeded.Jul 14 21:01:03 droplet-name systemd[1]: Started dnf automatic install updates.

A diferencia de algunos servicios de Systemd, dnf-automaticse implementa como un temporizador , en lugar de como un servicio que se ejecuta permanentemente en segundo plano. Esto significa que Active: inactive (dead)se espera el estado de entre activaciones, siempre que el servicio esté cargado y los registros reflejen ejecuciones exitosas.

Puede consultar los detalles de ese temporizador utilizando systemctl cat:

  1. sudo systemctl cat dnf-automatic-install.timer
Output[Unit]Description=dnf-automatic-install timer# See comment in dnf-makecache.serviceConditionPathExists=!/run/ostree-bootedWants=network-online.target[Timer]OnCalendar=*-*-* 6:00RandomizedDelaySec=60mPersistent=true[Install]WantedBy=timers.target

De forma predeterminada, el servicio está configurado para ejecutarse alrededor de las 6:00 todos los días. No debería ser necesario cambiar este valor.

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.

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 utilizar un balanceador de carga para redirigir automáticamente el tráfico a servidores que puedan 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 en el ecosistema Rocky Linux: Red Hat kpatch, que proporciona parches en vivo para Red Hat Enterprise Linux, y KernelCare, que brinda soporte a Rocky Linux además de la mayoría de las otras distribuciones principales de Linux. Ambos requieren registro para su uso.

Debido a la forma en que funciona el modelo de licencias de Red Hat Enterprise Linux, no podrá recibir parches de kernel en vivo kpatchcuando ejecute Rocky Linux. Rocky actúa en muchos sentidos como una versión sin licencia de Red Hat y no hay forma de inscribirse en la aplicación de parches de kernel en vivo sin ejecutar una instancia de Red Hat con licencia completa. Sin embargo, el método para habilitarlo es el mismo en Rocky o RHEL. Primero, instale el kpatch-dnfpaquete:

  1. sudo dnf install kpatch-dnf

A continuación, ejecute dnf kpatch autopara suscribirse automáticamente a los servicios de parches en vivo:

  1. sudo dnf kpatch auto
OutputLast metadata expiration check: 0:00:06 ago on Thu 14 Jul 2022 09:12:07 PM UTC.Dependencies resolved.Nothing to do.Complete!

kpatchcomprobará si hay servicios de parches configurados y, si no encuentra ninguno, saldrá sin problemas. En Red Hat, esto realizaría una comprobación de licencia y se registraría en los kpatchservidores de Red Hat. En Rocky, es posible que desee investigar KernelCare como una opción de soporte comercial.

Conclusión

En este tutorial, exploró varias estrategias para mantener sus servidores Rocky Linux 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, es posible que desee aprender a utilizar Watchtower para actualizar automáticamente las imágenes de contenedores Docker.

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 un comentario

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

Scroll al inicio