07. Aplicar parches y actualizar Ubuntu Server: una guía completa

Mantener tu Ubuntu Server parcheado y actualizado es esencial para conservar la seguridad, la estabilidad y el cumplimiento. Las actualizaciones periódicas protegen contra vulnerabilidades, mejoran el rendimiento del sistema y garantizan el cumplimiento de los estándares del sector. Esta guía ofrece ideas prácticas, ejemplos prácticos y herramientas para automatizar las actualizaciones y gestionar eficazmente los parches del kernel.


Artículo anterior:

01. Introducción a Ubuntu Server – SysOSX: AI & Cloud

02. Cómo configurar tu primer servidor Ubuntu: guía para principiantes – SysOSX: AI & Cloud

03. Dominar la línea de comandos de Linux para Ubuntu Server – SysOSX: AI & Cloud

04. Gestión de usuarios y permisos en Ubuntu Server: una guía completa – SysOSX: AI & Cloud

05. Fundamentos de redes para Ubuntu Server: una guía completa – SysOSX: AI & Cloud

06. Instalar y gestionar software en Ubuntu Server: una guía completa – SysOSX: AI & Cloud



Por qué las actualizaciones periódicas de Ubuntu Server son cruciales

1. Protección de seguridad

Las vulnerabilidades sin parchear son un riesgo de seguridad importante. Según CISA, el 87% de las brechas afectan a sistemas con software sin parchear. Las actualizaciones periódicas mitigan estos riesgos al abordar las vulnerabilidades conocidas.

Ejemplo real:

La vulnerabilidad de OpenSSL de 2023 (CVE-2023-0286) permitió a los atacantes robar datos confidenciales. Los servidores que aplicaron el parche con prontitud evitaron ser explotados.


2. Estabilidad del sistema

Las actualizaciones suelen incluir correcciones de errores y problemas de rendimiento, lo que garantiza un funcionamiento estable. También mejoran la compatibilidad del hardware, especialmente en servidores que se ejecutan en plataformas en la nube como AWS y Azure.

Ejemplo real:

El problema «Dirty Pipe» del kernel de Linux 5.15 de 2022 provocó fugas de memoria e inestabilidad del sistema. Un parche del kernel resolvió el problema y restauró la fiabilidad del sistema.


3. Requisitos de cumplimiento

Muchos sectores exigen actualizaciones periódicas para cumplir con los estándares de seguridad y privacidad. El incumplimiento puede acarrear multas, consecuencias legales y daños a la reputación.

Ejemplos de estándares:

  • PCI-DSS: Obligatorio para los sistemas de pago.
  • HIPAA: Protege los datos sanitarios.
  • GDPR: Garantiza la privacidad de los ciudadanos de la UE.

Hoja de referencia de comandos de actualización de Ubuntu

Esta es una guía de referencia rápida de los comandos de actualización de Ubuntu:

ComandoPropósitoCuándo usarlo
sudo apt updateActualizar las listas de paquetesAntes de cualquier instalación
sudo apt upgradeInstalar actualizaciones de seguridadMantenimiento semanal
sudo apt full-upgradeActualizaciones de versiones principalesActualizaciones de versión de Ubuntu
sudo apt autoremoveLimpiar paquetes antiguosDespués de las actualizaciones

Configuración de parches automatizados (guía de 5 minutos)

Automatizar las actualizaciones con unattended-upgrades garantiza que los parches críticos se apliquen sin intervención manual. Sigue estos pasos para configurar las actualizaciones automáticas:

Paso 1: Instalar unattended-upgrades

sudo apt install unattended-upgrades


Paso 2: Configurar las actualizaciones de seguridad

Edita el archivo de configuración:

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

Descomenta las siguientes líneas:

"Ubuntu:${distro_codename}-security";
"Ubuntu:${distro_codename}-updates";

Paso 3: Habilitar reinicios automáticos

Añade estas líneas al mismo archivo para habilitar los reinicios automáticos después de las actualizaciones:

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";


Cuándo usar parches automatizados

Los parches automatizados son ideales para entornos en los que el tiempo de inactividad es aceptable o la intervención manual no es práctica. Algunos ejemplos son:

  • Sistemas no críticos: Entornos de desarrollo o pruebas donde el tiempo de actividad no es crítico.
  • Pequeñas empresas o uso personal: Garantiza la seguridad de los usuarios sin personal de TI dedicado.
  • Dispositivos perimetrales o sistemas IoT: Dispositivos remotos que no se pueden actualizar manualmente.

Sin embargo, los parches automatizados no son adecuados para todos los entornos. Evítalos en los siguientes escenarios:

  • Sistemas de misión crítica: Las actualizaciones deben probarse en entornos de staging para evitar introducir errores o tiempos de inactividad.
  • Entornos de alta disponibilidad (HA): Los parches automatizados podrían interrumpir los sistemas en clúster o los mecanismos de conmutación por error.
  • Sectores regulados: Los estándares de cumplimiento suelen exigir que las actualizaciones pasen por procesos de aprobación y prueba.
  • Configuraciones personalizadas: Los servidores con configuraciones únicas pueden enfrentarse a problemas de compatibilidad con las actualizaciones automáticas.

En tales casos, considera aplicar parches manualmente o usar herramientas como Ansible para mantener el control sobre el proceso de actualización.


Gestión de actualizaciones del kernel

Las actualizaciones del kernel son vitales para corregir vulnerabilidades y mejorar el rendimiento del sistema. Así es como se gestionan eficazmente las actualizaciones del kernel:

1. Comprobar actualizaciones del kernel pendientes

Usa el siguiente comando para comprobar las actualizaciones del kernel disponibles:

apt list --upgradable | grep linux-image


2. Aplicar actualizaciones sin reiniciar (Livepatch)

Ubuntu Livepatch solo está disponible para la suscripción a Ubuntu Pro y te permite aplicar actualizaciones del kernel sin reiniciar, minimizando el tiempo de inactividad.

Pasos para habilitar Livepatch:

  • Instalar Livepatch:
sudo snap install canonical-livepatch
  • Habilita Livepatch con tu token:
sudo canonical-livepatch enable YOUR_TOKEN

    3. Procedimiento de reinicio seguro

    Si es necesario reiniciar, sigue estos pasos para reiniciar con elegancia:

    Comprueba si es necesario reiniciar:

    Ubuntu crea un archivo /var/run/reboot-required cuando es necesario reiniciar después de las actualizaciones. Si este archivo no existe, significa que no es necesario reiniciar. Sin embargo, puedes comprobar manualmente lo siguiente:

    • Comprobar la versión del kernel:
      Compara la versión del kernel en ejecución con el kernel instalado más reciente:
    uname -r apt list --installed | grep linux-image
    
    • Comprobar si hay procesos en ejecución que usan archivos eliminados:
      Identificar los procesos que usan archivos obsoletos:
    sudo lsof | grep deleted
    

      Avisar a los usuarios sobre el tiempo de inactividad:

      wall "Maintenance reboot in 10 minutes"
      
      

      Programar el reinicio:

      sudo shutdown -r +10
      
      

      Plantillas de automatización empresarial

      Playbook de Ansible para actualizaciones en varios servidores

      Para gestionar las actualizaciones en varios servidores, usa Ansible para automatizar el proceso.

      Playbook de ejemplo:

      - name: Apply security patches
        hosts: all
        become: yes
        tasks:
          - name: Update apt cache
            ansible.builtin.apt:
              update_cache: yes
      
          - name: Apply security updates
            ansible.builtin.apt:
              upgrade: yes
              cache_valid_time: 3600
      

      Ejecuta el playbook:

      ansible-playbook update.yml
      

      Trabajo cron para actualizaciones fuera de las horas punta

      Programa las actualizaciones durante las horas de menor actividad usando trabajos cron.

      Ejemplo de trabajo cron:

      Edita el crontab:

      sudo crontab -e
      

      Añade la siguiente línea para programar actualizaciones todos los domingos a las 3 a. m.:

      0 3 * * 7 apt update && apt upgrade -y
      

      Problemas comunes y soluciones

      1. Poco espacio en disco durante las actualizaciones

      Si tu servidor se queda sin espacio en disco durante las actualizaciones, limpia los archivos innecesarios:

      Comandos:

      sudo apt clean
      sudo apt autoremove --purge
      

      Comprueba el uso del disco:

      df -h
      
      

      2. Recuperación de actualizaciones fallidas

      Si las actualizaciones fallan, usa los siguientes comandos para recuperarte:

      Corregir dependencias rotas:

      sudo apt --fix-broken install
      

      Restablecer los estados de los paquetes:

      sudo dpkg --configure -a
      

      3. Actualizaciones de servidores sin conexión

      Para servidores sin acceso a internet, usa apt-offline para descargar actualizaciones en una máquina conectada y aplicarlas sin conexión.

      En la máquina conectada:

      apt-offline set update.sig
      

      Transfiere los archivos y aplícalos:

      apt-offline install update.sig
      

      Lista de comprobación de mantenimiento

      Sigue esta lista de comprobación para garantizar que tu Ubuntu Server siga siendo seguro y estable:

      • Semanalmente: Realizar actualizaciones de seguridad manuales.
      • Mensualmente: Probar las actualizaciones completas en un entorno de staging.
      • Trimestralmente: Limpiar el almacenamiento y eliminar los paquetes no utilizados.
      • Anualmente: Realizar una auditoría de cumplimiento para cumplir con los estándares del sector.

      Documento oficial: Instalar y gestionar paquetes – documentación de Ubuntu Server


      Conclusión

      La aplicación periódica de parches y la actualización de Ubuntu Server son esenciales para mantener la seguridad, la estabilidad y el cumplimiento. Al comprender la importancia de las actualizaciones, dominar los comandos de apt, automatizando las actualizaciones con unattended-upgrades y gestionando eficazmente los parches del kernel, los administradores pueden garantizar que sus servidores sigan siendo sólidos y fiables. Para entornos empresariales, herramientas como Ansible y Livepatch agilizan aún más el proceso, reduciendo el tiempo de inactividad y mejorando la eficiencia.

      Mirando hacia adelante: proteger tu Ubuntu Server

      Ahora que entiendes cómo mantener tu Ubuntu Server actualizado y parcheado, el siguiente paso es garantizar que siga siendo seguro frente a amenazas externas. En nuestro próximo artículo, Proteger tu Ubuntu Server, cubriremos pasos prácticos para reforzar tu servidor, entre ellos:

      • Configurar firewalls usando ufw.
      • Configurar SSH de forma segura para evitar accesos no autorizados.
      • Usar herramientas como fail2ban para protegerse contra ataques de fuerza bruta.

      ¡Mantente atento a ideas prácticas para proteger tu servidor y proteger tu infraestructura de posibles amenazas!

      3 thoughts on “07. Patching and Updating Ubuntu Server: A Comprehensive Guide”

      Deja un comentario