🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Seguridad en Servidores Linux: Hardening y Cumplimiento CIS

Actualizado el 15 de septiembre de 2025

La seguridad en servidores Linux no es un lujo, es una necesidad operativa. Cada día, miles de sistemas son escaneados por bots y atacantes en busca de configuraciones débiles, puertos abiertos o servicios mal asegurados. El hardening Linux (endurecimiento) es el proceso sistemático de reducir la superficie de ataque de un sistema, eliminando servicios innecesarios, aplicando políticas de acceso estrictas y asegurando que cada capa del sistema operativo esté configurada de forma segura.

Una de las metodologías más aceptadas globalmente para lograr este objetivo son los CIS benchmarks, guías de configuración segura desarrolladas por el Center for Internet Security. Estas guías cubren desde el kernel hasta las aplicaciones, y son la base para la auditoría Linux y el cumplimiento normativo en entornos corporativos.

¿Por qué es crítico el Hardening en Linux?

Linux domina el mundo de los servidores web, cloud, bases de datos y contenedores. Sin embargo, su flexibilidad es también su talón de Aquiles. Una instalación por defecto de cualquier distribución (Ubuntu Server, CentOS, Rocky, Debian) incluye servicios, usuarios y configuraciones que rara vez son necesarias en producción.

El hardening Linux persigue estos objetivos fundamentales:

  • Minimizar la superficie de ataque: Cada servicio en ejecución es un vector potencial. Apagar lo que no se usa es la regla de oro.
  • Principio de mínimo privilegio: Usuarios, procesos y aplicaciones deben tener solo los permisos estrictamente necesarios.
  • Defensa en profundidad: Múltiples capas (firewall, SELinux/AppArmor, auditoría, cifrado) que protegen incluso si una capa falla.
  • Cumplimiento normativo: Para sectores como finanzas, salud o gobierno, cumplir con estándares como PCI-DSS, HIPAA o ISO 27001 es obligatorio. Los CIS benchmarks son el camino más directo para demostrar ese cumplimiento.

[INFO] El 80% de las vulnerabilidades críticas explotadas en Linux se deben a configuraciones incorrectas o servicios innecesarios, no a bugs del kernel. El hardening previene estos fallos.

CIS Benchmarks: El estándar de referencia para la seguridad

Los CIS benchmarks son documentos que detallan configuraciones de seguridad específicas para sistemas operativos, aplicaciones, cloud providers y dispositivos de red. Para Linux, existen benchmarks dedicados a distribuciones concretas (RHEL 9, Ubuntu 22.04, Debian 12, etc.) y uno genérico (CIS Distribution Independent Linux).

Estructura de un benchmark CIS

Cada benchmark organiza sus recomendaciones en niveles:

  • Nivel 1: Configuraciones de seguridad básicas que no afectan negativamente al rendimiento ni a la funcionalidad. Son el punto de partida obligatorio.
  • Nivel 2: Configuraciones más restrictivas que pueden romper funcionalidades específicas. Se aplican solo si el entorno lo soporta.
  • Nivel 3 (o Stig): Configuraciones extremas, típicas de entornos militares o de alta seguridad.

Las recomendaciones se agrupan en secciones como:

  • 1. Initial Setup (particiones, actualizaciones, GPG)
  • 2. Services (deshabilitar servicios innecesarios)
  • 3. Network Configuration (firewall, kernel parameters)
  • 4. Logging and Auditing (rsyslog, auditd)
  • 5. Access, Authentication, and Authorization (PAM, sudo, SSH)
  • 6. System Maintenance (permisos de archivos, cron)

Herramientas para aplicar CIS benchmarks

Aplicar manualmente cientos de reglas es inviable. Por suerte existen herramientas automatizadas:

  • OpenSCAP: La herramienta de código abierto más potente. Escanea, evalúa y remedia configuraciones basadas en SCAP (Security Content Automation Protocol), que incluye los perfiles CIS.
  • CIS-CAT Pro: Herramienta comercial del propio CIS, muy precisa pero de pago.
  • Ansible + roles CIS: Existen roles de Ansible (como devsec.hardening) que aplican las reglas CIS automáticamente.
  • Lynis: Aunque no es específico CIS, es excelente para auditoría general y da pistas sobre qué hardening aplicar.
# Ejemplo de escaneo con OpenSCAP usando perfil CIS para Ubuntu 22.04
oscap xccdf eval --profile xccdf_org.ssgproject.content_profile_cis --results-arf results.xml --report report.html /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml

Este comando genera un reporte HTML detallado con cada regla evaluada (pass/fail) y recomendaciones.

Pasos prácticos para un Hardening Linux efectivo

No necesitas aplicar los 300 controles de un benchmark de golpe. Aquí tienes una guía práctica para empezar:

1. Gestión de actualizaciones y repositorios

Un sistema desactualizado es un sistema comprometido. La regla CIS más básica es mantener el software al día.

# Configurar actualizaciones automáticas de seguridad (Ubuntu/Debian)
apt install unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgrades

# En RHEL/CentOS/Rocky
dnf install dnf-automatic
systemctl enable --now dnf-automatic.timer

[WARNING] No configures actualizaciones automáticas sin probarlas en staging. Un paquete conflictivo puede romper tu aplicación.

2. Particionado seguro y montaje de sistemas de archivos

Las particiones separadas para /tmp, /var, /home y /opt no solo mejoran el rendimiento, sino que permiten aplicar opciones de montaje restrictivas.

# En /etc/fstab, añadir opciones como noexec, nosuid, nodev
/dev/sda1  /tmp  ext4  defaults,nosuid,nodev,noexec  0 0
/dev/sda2  /var  ext4  defaults,nosuid,nodev  0 0

3. Configuración del kernel (sysctl)

Parámetros del kernel que mitigan ataques de red y kernel exploits.

# /etc/sysctl.d/99-cis-hardening.conf
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
kernel.randomize_va_space = 2
kernel.kptr_restrict = 2
fs.suid_dumpable = 0

Aplicar con sysctl -p /etc/sysctl.d/99-cis-hardening.conf.

4. Servicios mínimos y eliminación de paquetes innecesarios

Revisa qué servicios arrancan con el sistema:

systemctl list-unit-files --type=service --state=enabled
# Deshabilitar servicios como avahi-daemon, cups, rpcbind, etc.
systemctl disable avahi-daemon

5. Endurecimiento de SSH

El servicio SSH es la puerta de entrada principal. Configúralo al máximo:

# /etc/ssh/sshd_config
Port 2222                              # Cambiar puerto
Protocol 2
PermitRootLogin no                     # Nunca permitir root directo
PubkeyAuthentication yes
PasswordAuthentication no              # Solo claves
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 0
AllowUsers tu_usuario

[TIP] Usa ssh-keygen -t ed25519 para generar claves más seguras que RSA de 4096 bits.

6. Firewall restrictivo

Usa ufw (en Ubuntu) o firewalld (en RHEL) para aplicar reglas por defecto denegadas.

ufw default deny incoming
ufw default allow outgoing
ufw allow 2222/tcp   # Puerto SSH cambiado
ufw enable

7. Auditoría con auditd

El demonio auditd registra eventos críticos: cambios en binarios, accesos a archivos sensibles, intentos de autenticación fallidos.

# Reglas básicas en /etc/audit/rules.d/audit.rules
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k sudoers
-w /sbin/insmod -p x -k modules
-a always,exit -F arch=b64 -S execve -k processes

Auditoría Linux: Cómo medir el cumplimiento

La auditoría Linux no es un evento único. Debe ser un proceso continuo. Las herramientas clave son:

OpenSCAP (línea de comandos)

Como vimos antes, genera informes XML y HTML detallados. Puedes integrarlo en pipelines CI/CD para auditar cada nuevo servidor antes de ponerlo en producción.

Lynis (auditoría general)

Lynis es perfecto para un escaneo rápido que cubre hardening general, no solo CIS.

lynis audit system --quick

Scripts personalizados

Muchos SysAdmin crean scripts bash que verifican puntos específicos del benchmark CIS. Por ejemplo, verificar que PermitRootLogin esté en no:

if grep -q "^PermitRootLogin no" /etc/ssh/sshd_config; then
    echo "PASS: Root login deshabilitado"
else
    echo "FAIL: Root login permitido"
fi

Herramientas de cumplimiento continuo

  • Wazuh: Plataforma SIEM open source que incluye decodificadores para eventos CIS y alertas en tiempo real.
  • Osquery: Permite consultar el estado del sistema con SQL, ideal para verificar cumplimiento a gran escala.

Cumplimiento normativo: De CIS a la auditoría real

El cumplimiento normativo exige demostrar que se siguen buenas prácticas. Los CIS benchmarks son el puente entre la configuración técnica y los requisitos legales.

Relación con estándares comunes

EstándarCómo ayuda CIS
PCI-DSSRequisito 2.2: Desarrollar configuraciones seguras. CIS cubre hardening de SO.
HIPAARegla de Seguridad: Controles de acceso, integridad, auditoría. CIS proporciona las reglas concretas.
ISO 27001Anexo A.12.6.1: Gestión de vulnerabilidades técnicas. CIS es la base para parchear y endurecer.
NIST 800-53Controles AC-3 (Access Enforcement), CM-6 (Configuration Settings). CIS mapea directamente.

Cómo documentar el cumplimiento

  1. Elige el perfil CIS correcto para tu distribución y versión.
  2. Aplica las reglas usando OpenSCAP o Ansible.
  3. Genera un reporte (HTML o XML) que muestre el porcentaje de cumplimiento.
  4. Corrige los fallos (remediación manual o automática con --remediate).
  5. Repite el escaneo hasta alcanzar el objetivo (normalmente >90% en nivel 1).
  6. Guarda los reportes como evidencia para auditores externos.

[INFO] Muchos auditores aceptan los reportes de OpenSCAP como prueba válida de cumplimiento. Asegúrate de que el reporte incluya la fecha, el perfil usado y el hostname.

Automatización del hardening con Ansible

Para entornos con decenas o cientos de servidores, la automatización es obligatoria. El rol devsec.hardening de Ansible aplica reglas CIS de forma idempotente.

# playbook.yml
- hosts: all
  become: yes
  roles:
    - devsec.hardening

Este rol configura:

  • SSH hardening
  • sysctl seguro
  • Fail2ban
  • Actualizaciones automáticas
  • Deshabilitación de servicios innecesarios
  • Permisos de archivos sensibles

Puedes personalizarlo mediante variables:

# vars.yml
ssh_permit_root_login: false
ssh_port: 2222
ssh_password_authentication: false

Conclusión: El hardening es un viaje, no un destino

La seguridad en servidores Linux no se logra aplicando un script y olvidándose. Es un proceso iterativo que combina hardening Linux técnico, auditoría Linux periódica y cumplimiento normativo documentado.

Los CIS benchmarks te dan la hoja de ruta. Herramientas como OpenSCAP, Lynis y Ansible te dan los medios. Y tu criterio como SysAdmin decide qué reglas aplicar según el riesgo y la criticidad del sistema.

Empieza por lo básico: actualiza, deshabilita servicios, endurece SSH, aplica firewall y audita. Luego escala a automatización y cumplimiento continuo. Tus servidores (y tus auditores) te lo agradecerán.

[WARNING] No copies y pegues configuraciones sin entenderlas. Un sysctl mal aplicado puede dejar tu servidor inaccesible. Siempre prueba en un entorno de staging.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel