Principios básicos de hardening

Introducción

El hardening (endurecimiento) de un sistema consiste en reducir su superficie de ataque eliminando todo lo que no sea necesario y configurando correctamente lo que sí lo es. Un servidor recién instalado tiene una configuración genérica que no es óptima para producción: el hardening lo adapta para minimizar el riesgo de compromiso.

Principios fundamentales

  • Mínimo privilegio: cada usuario, proceso o servicio debe tener solo los permisos estrictamente necesarios para su función. Nunca ejecutar servicios como root si no es imprescindible.
  • Mínima superficie de ataque: desinstalar paquetes innecesarios, deshabilitar servicios que no se usen, cerrar puertos que no se necesiten.
  • Defensa en profundidad: no depender de una sola medida de seguridad. Combinar firewall, autenticación fuerte, monitorización y actualizaciones.
  • Fail secure: ante un fallo, el sistema debe quedar en un estado seguro (acceso denegado por defecto, no permitido).
  • Auditoría y trazabilidad: registrar accesos, cambios de configuración y eventos relevantes para poder detectar y analizar incidentes.
  • Actualizaciones regulares: mantener el sistema y los paquetes actualizados para corregir vulnerabilidades conocidas.

Primeros pasos en un servidor Ubuntu nuevo


# 1. Actualizar el sistema completamente
apt update && apt upgrade -y

# 2. Crear usuario administrativo (no usar root directamente)
adduser adminuser
usermod -aG sudo adminuser

# 3. Revisar los servicios activos
systemctl list-units --type=service --state=running

# 4. Deshabilitar servicios innecesarios
systemctl disable --now nombre-servicio

# 5. Revisar paquetes instalados
dpkg -l | grep -v "^ii" | head       # paquetes en estado no limpio
apt list --installed 2>/dev/null | wc -l   # total de paquetes

# 6. Eliminar paquetes que no se usen
apt autoremove --purge
          

Auditoría con Lynis

Lynis es una herramienta de auditoría de seguridad para sistemas Unix/Linux. Analiza el sistema y genera un informe con recomendaciones de hardening ordenadas por prioridad.


apt install lynis

# Ejecutar auditoría completa del sistema
lynis audit system

# El informe queda en:
cat /var/log/lynis.log
cat /var/log/lynis-report.dat

# Ver solo las sugerencias de hardening
grep "suggestion" /var/log/lynis-report.dat
          

Lynis genera una puntuación (hardening index) entre 0 y 100. Un sistema básico suele partir de 55-65. El objetivo es mejorarla aplicando las sugerencias del informe.

Hardening del kernel con sysctl

Algunos parámetros del kernel mejoran la seguridad de la red y del sistema. Se configuran en /etc/sysctl.d/99-hardening.conf:


# Deshabilitar reenvío de paquetes IP (si no es un router)
net.ipv4.ip_forward = 0

# Protección contra SYN flood
net.ipv4.tcp_syncookies = 1

# Ignorar pings de broadcast
net.ipv4.icmp_echo_ignore_broadcasts = 1

# No aceptar redirecciones ICMP
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

# No enviar redirecciones ICMP
net.ipv4.conf.all.send_redirects = 0

# Protección contra IP spoofing
net.ipv4.conf.all.rp_filter = 1

# Deshabilitar IPv6 si no se usa
net.ipv6.conf.all.disable_ipv6 = 1
          

# Aplicar los cambios sin reiniciar
sysctl --system
          

Permisos por defecto: umask

El umask define los permisos que se restan al crear nuevos ficheros y directorios. El valor recomendado para servidores es 027 (ficheros 640, directorios 750), más restrictivo que el defecto 022.


# Ver el umask actual
umask

# Establecer umask más restrictivo para todos los usuarios
# Añadir a /etc/profile y /etc/bash.bashrc:
umask 027
          

El hardening no es un proceso puntual sino continuo: hay que revisar periódicamente el estado del sistema, aplicar actualizaciones y adaptar la configuración a medida que cambian los servicios desplegados.

Comprobación de puertos abiertos

Índice de la sección

Índice del curso