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