Hardening de Linux en 2026: la guía threat-model-first
published 12 de junio de 2026 · #linux #hardening #sysctl #apparmor
La mayoría de las guías de hardening de Linux son listas de verificación. Te dicen qué parámetros sysctl establecer, qué servicios deshabilitar, qué módulos del kernel poner en lista negra. Raramente responden a la pregunta previa: ¿contra qué amenaza te estás defendiendo realmente?
La respuesta cambia el trabajo. Esta guía va del modelo de amenaza a las medidas, no al revés. Está arraigada en el linaje de seguridad de este dominio — el mismo pensamiento operacional que impulsó la lista de correo Secure Desktops (2015–2017).
Paso cero: define tu modelo de amenaza
Antes de tocar un solo archivo de configuración, responde estas cuatro preguntas:
- ¿Quién es el adversario? ¿Oportunista casual, criminal organizado, investigador corporativo, Estado-nación?
- ¿Qué buscan? ¿Archivos en disco, comunicaciones, credenciales, tu identidad, tus contactos?
- ¿Cómo entrarán? ¿Exploit de red, acceso físico, cadena de suministro, ingeniería social?
- ¿Qué recursos tienen? ¿Tiempo, dinero, zero-days, autoridad legal?
Hardening del kernel: parámetros sysctl
Los siguientes parámetros son apropiados para la mayoría de instalaciones de escritorio y servidor con hardening. No requieren hardware especializado y no tienen impacto significativo en el rendimiento.
# /etc/sysctl.d/99-hardening.conf
# Restringir punteros del kernel desde el espacio de usuario
kernel.kptr_restrict=2
# Restringir acceso a dmesg (previene la lectura de direcciones de memoria del kernel)
kernel.dmesg_restrict=1
# Deshabilitar la tecla SysRq
kernel.sysrq=0
# Restringir ptrace a procesos con CAP_SYS_PTRACE
kernel.yama.ptrace_scope=2
# Deshabilitar espacios de nombres de usuario sin privilegios
kernel.unprivileged_userns_clone=0
# Deshabilitar eBPF sin privilegios (superficie de ataque significativa)
kernel.unprivileged_bpf_disabled=1
# Habilitar cookies SYN TCP
net.ipv4.tcp_syncookies=1
# Deshabilitar redirecciones ICMP
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
# Habilitar filtrado de ruta inversa
net.ipv4.conf.all.rp_filter=1
# Deshabilitar volcados de núcleo
fs.suid_dumpable=0
# Restringir seguimiento de enlaces simbólicos y físicos
fs.protected_symlinks=1
fs.protected_hardlinks=1
Aplicar inmediatamente sin reiniciar:
sudo sysctl -p /etc/sysctl.d/99-hardening.conf
Control de acceso obligatorio: AppArmor vs SELinux
AppArmor (predeterminado en Ubuntu, Debian, SUSE) utiliza perfiles basados en rutas.
# Verificar el estado de AppArmor
sudo apparmor_status
# Poner un perfil en modo enforce
sudo aa-enforce /etc/apparmor.d/usr.bin.firefox
# Instalar perfiles adicionales
sudo apt install apparmor-profiles apparmor-profiles-extra
SELinux (predeterminado en Fedora, RHEL) utiliza políticas basadas en etiquetas. En Fedora, verifica que SELinux esté en modo Enforcing:
getenforce
# Debe mostrar: Enforcing
No deshabilites SELinux. Ante denegaciones, diagnostica con ausearch -m avc -ts recent | audit2allow -a.
Opciones de montaje del sistema de archivos
# /tmp: sin ejecución, sin archivos de dispositivo, sin bits SUID
tmpfs /tmp tmpfs defaults,noexec,nodev,nosuid 0 0
# /home: sin archivos de dispositivo, sin SUID
/dev/mapper/home /home ext4 defaults,nodev,nosuid 0 2
Deshabilitar servicios no utilizados
# Servicios comunes a deshabilitar en un escritorio sin servidor de red
sudo systemctl disable cups avahi-daemon bluetooth
Lista de verificación por modelo de amenaza
Oportunista / malware masivo: parámetros sysctl anteriores, AppArmor/SELinux en enforce, disco cifrado (LUKS), actualizaciones regulares.
Atacante objetivo con acceso de red: añade minimización de servicios, firewall restrictivo, sandboxing de aplicaciones, monitoreo de salidas de red.
Adversario con acceso físico y recursos: cifrado completo del disco con frase de contraseña robusta + copia de seguridad del encabezado, Secure Boot con claves personalizadas, Tails OS para operaciones sensibles, considera Qubes OS para la compartimentación. Revisa la carta Secure Desktops.
Preguntas frecuentes
P: ¿Deshabilitar los espacios de nombres de usuario sin privilegios rompe algo? R: Rompe aplicaciones que dependen de ellos sin root — notablemente el sandboxing de Chromium en algunos sistemas y ciertos entornos de ejecución de contenedores (Docker/Podman sin root).
P: ¿Debería usar un kernel con hardening (linux-hardened en Arch)?
R: linux-hardened en Arch Linux aplica un conjunto razonable de parches de hardening y vale la pena usarlo en Arch. El kernel upstream ha absorbido muchas características anteriormente exclusivas de grsecurity (KASLR, stack protector, FORTIFY_SOURCE).
P: ¿Es Fedora o Ubuntu más seguro por defecto? R: Ambos incluyen MAC en modo enforce (SELinux en Fedora, AppArmor en Ubuntu), valores predeterminados modernos de mitigaciones del kernel y actualizaciones de seguridad automáticas. Para un escritorio con hardening, ambos son un buen punto de partida.