Cómo mantener actualizados los servidores Rocky Linux 8

Introducción

En este tutorial, explorarás algunas prácticas recomendadas para mantener tu servidor Rocky Linux 8 actualizado. Al igual que con el fortalecimiento de la seguridad de la red , existen muchas medidas que puedes tomar para garantizar que tus servidores sigan funcionando de forma segura sin necesidad de intervención futura.

Hay varias herramientas y configuraciones que puedes aplicar a la mayoría de los servidores Rocky Linux, además de las que vienen configuradas automáticamente. Si administras tu propio servidor, parchear todos tus entornos manualmente puede ser bastante problemático y propenso a errores.

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 del 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

Un aspecto fundamental de la configuración de su servidor para actualizaciones automáticas es garantizar que todas las aplicaciones que se ejecutan en él puedan reiniciarse correctamente tras una inactividad imprevista o un reinicio. Los administradores de paquetes de Linux están diseñados para ejecutarse en segundo plano sin interrupciones, de modo que el mantenimiento necesario no suponga una sobrecarga adicional. A pesar de ello, una de las razones más comunes para no contar con una buena estrategia de actualización es la preocupación por el comportamiento del servidor tras un reinicio.

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 modernas de Linux, incluyendo Rocky Linux, es systemd. Systemd proporciona el comando systemctl para interactuar con los servicios en ejecución y reiniciarlos automáticamente cuando sea necesario. Prácticamente todo el software instalado a través de su gestor de paquetes y diseñado para ejecutarse en segundo plano debería proporcionar automáticamente un servicio systemd y un archivo de unidad de configuración como práctica recomendada.

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

Una vez establecida la configuración, asegúrese de probarla reiniciando el sistema. Puede reiniciar ejecutando “ sudo shutdown now -r, lo que detendrá automáticamente los procesos en ejecución y reiniciará el sistema inmediatamente. También puede especificar una hora en “hh:mm“ , o una cantidad de minutos a partir de ahora, en lugar de nowprogramar un reinicio posterior. Las implementaciones de producción generalmente no deberían requerir su atención después de interrupciones imprevistas, y todos los servicios y endpoints necesarios deberían volver a estar operativos 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 gestor de paquetes de Rocky dnfofrece dos métodos principales para realizar una actualización completa del sistema. Puede ejecutarlo dnf upgradesin especificar un paquete para actualizar todos los paquetes del sistema. También puede ejecutarlo dnf upgrade-minimalpara actualizar todos los paquetes únicamente a la última versión de corrección de errores o parche de seguridad, lo que realizará el mantenimiento necesario y evitará posibles cambios disruptivos en el servidor original. Puede leer más sobre dnflos comandos en la documentación de dnf .

Rocky también proporciona una herramienta única que dnf-automaticrecupera e instala automáticamente parches de seguridad y otras actualizaciones esenciales para su servidor. Puede instalarla usando dnf:

sudo dnf install dnf-automatic -y

dnf-automaticNo se habilita automáticamente tras la instalación. En su lugar, ofrece varios servicios que puedes 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 las actualizaciones disponibles y no instalarlas.
  • dnf-automatic-download : esto anula el archivo de configuración al solo descargar 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:

sudo vi /etc/dnf/automatic

/etc/dnf/automatic.conf

[commands]
#  What kind of upgrade to perform:
# default                            = all available upgrades
# security                           = only the security upgrades
upgrade_type = security
random_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 diversas anulaciones proporcionadas por los distintos servicios de Systemd. Una excepción es la upgrade_typeopción , que está configurada defaultcomo predeterminada. Si va a implementar actualizaciones automáticas (la configuración más proactiva), es recomendable instalar solo las actualizaciones de seguridad predeterminadas para evitar cambios inesperados en la funcionalidad. Cambie el upgrade_typevalor a securitycomo en el ejemplo anterior, luego guarde y cierre el archivo. Si usa vi, puede guardar y salir escribiendo :x.

Ahora puedes habilitar el servicio usando systemctl:

sudo systemctl enable dnf-automatic-install.timer

Puede comprobar si el dnf-automatic-installservicio se está ejecutando correctamente utilizando systemctl:

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 available
Jul 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 constantemente en segundo plano. Esto significa que se espera el estado Active: inactive (dead)entre activaciones, siempre que el servicio esté cargado y los registros reflejen ejecuciones exitosas.

Puede verificar los detalles de ese temporizador usando systemctl cat:

sudo systemctl cat dnf-automatic-install.timer

Output[Unit]
Description=dnf-automatic-install timer
# See comment in dnf-makecache.service
ConditionPathExists=!/run/ostree-booted
Wants=network-online.target

[Timer]
OnCalendar=*-*-* 6:00
RandomizedDelaySec=60m
Persistent=true

[Install]
WantedBy=timers.target

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

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

Paso 3: Actualización y parcheo en vivo del kernel

Con menos frecuencia que otros paquetes, necesitará actualizar el kernel de su sistema. El kernel 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 kernel generalmente solo son necesarias si existe una vulnerabilidad importante que abordar, si necesita usar una nueva característica del kernel ya conocida o si su kernel es tan antiguo que existe un mayor riesgo de acumular errores y vulnerabilidades que quizás desconozca.

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 ​​programar reinicios es imposible sin hacer suposiciones sobre el entorno. Se espera que muchos servidores proporcionen una disponibilidad lo más cercana posible a las 24 horas, los 7 días de la semana, y un reinicio puede tardar un tiempo indeterminado o requerir intervención manual.

La mayoría de las implementaciones de producción requieren una complejidad adicional en torno a este tipo de reinicios para garantizar la disponibilidad del servicio. Por ejemplo, se podría usar un balanceador de carga para redirigir automáticamente el tráfico a servidores que puedan ofrecer la misma funcionalidad en una implementación de escala horizontal mientras se reinician individualmente en secuencia, para evitar tiempos de inactividad visibles.

Habilitar Livepatch para garantizar el tiempo de actividad del servidor durante las actualizaciones del kernel

Para evitar tiempos de inactividad durante las actualizaciones del kernel, puede usar una función del kernel de Linux llamada parches en vivo. Esta función permite implementar actualizaciones del kernel sin reiniciar. Hay dos proveedores 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 da soporte a Rocky Linux, además de a la mayoría de las demás distribuciones principales de Linux. Ambos requieren registro para su uso.

Debido al funcionamiento del modelo de licencias de Red Hat Enterprise Linux, no podrá recibir parches de kernel en vivo al kpatchejecutar Rocky Linux. Rocky funciona, en muchos sentidos, como una versión sin licencia de Red Hat, y no es posible inscribirse en los 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:

sudo dnf install kpatch-dnf

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

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á los servicios de parches configurados y, al no encontrar ninguno, finalizará correctamente. En Red Hat, esto verificará la licencia y se registrará en los kpatchservidores de Red Hat. En Rocky, podría ser útil considerar KernelCare como una opción de soporte comercial.

Conclusión

En este tutorial, exploraste diversas estrategias para mantener tus servidores Rocky Linux actualizados automáticamente. También aprendiste algunos detalles sobre los repositorios de paquetes, las actualizaciones del kernel y la gestión de reinicios del servidor. Estos son fundamentos 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 desees aprender a usar Watchtower para actualizar automáticamente las imágenes del contenedor Docker.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post