El hardening es el proceso de fortalecimiento de la seguridad de un sistema operativo mediante la eliminación de vulnerabilidades y la implementación de controles de seguridad.

¿Qué es el Hardening?

El hardening es la práctica de configurar un sistema operativo de manera que reduzca su superficie de ataque y mejore su seguridad mediante la eliminación de servicios innecesarios, la aplicación de parches y la configuración de controles de seguridad.

Principios del Hardening

Principio de Menor Privilegio

  • Usuarios: Mínimos privilegios necesarios
  • Servicios: Ejecutar con privilegios mínimos
  • Procesos: Limitar capacidades de procesos
  • Acceso: Restringir acceso a recursos

Defensa en Profundidad

  • Múltiples capas: Varias capas de seguridad
  • Controles redundantes: Múltiples controles
  • Detección: Múltiples sistemas de detección
  • Respuesta: Múltiples mecanismos de respuesta

Seguridad por Diseño

  • Configuración segura: Configuración segura por defecto
  • Validación: Validación de entrada
  • Cifrado: Cifrado de datos sensibles
  • Monitoreo: Monitoreo continuo

Hardening de Windows

Configuración del Sistema

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Deshabilitar servicios innecesarios
Set-Service -Name "Telnet" -StartupType Disabled
Set-Service -Name "FTP" -StartupType Disabled
Set-Service -Name "IIS" -StartupType Disabled

# Configurar firewall
New-NetFirewallRule -DisplayName "Block Inbound" -Direction Inbound -Action Block
New-NetFirewallRule -DisplayName "Allow Outbound" -Direction Outbound -Action Allow

# Configurar políticas de contraseña
net accounts /minpwlen:12
net accounts /maxpwage:90
net accounts /minpwage:1
net accounts /lockoutthreshold:5

Configuración de Registro

1
2
3
4
5
6
7
8
9
# Deshabilitar autologon
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name "AutoAdminLogon" -Value 0

# Deshabilitar ejecución de scripts
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" -Name "EnableLUA" -Value 1

# Configurar auditoría
auditpol /set /category:"Logon/Logoff" /success:enable /failure:enable
auditpol /set /category:"Object Access" /success:enable /failure:enable

Configuración de Red

1
2
3
4
5
6
7
8
# Deshabilitar protocolos innecesarios
Disable-NetAdapterBinding -Name "Ethernet" -ComponentID "ms_tcpip6"
Disable-NetAdapterBinding -Name "Ethernet" -ComponentID "ms_lltdio"

# Configurar TCP/IP
netsh int ipv4 set global autotuninglevel=normal
netsh int ipv4 set global rss=enabled
netsh int ipv4 set global chimney=enabled

Hardening de Linux

Configuración del Sistema

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Deshabilitar servicios innecesarios
systemctl disable telnet
systemctl disable ftp
systemctl disable rsh
systemctl disable rlogin

# Configurar firewall
ufw enable
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow http
ufw allow https

# Configurar iptables
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP

Configuración de Usuarios

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Crear usuario con privilegios limitados
useradd -m -s /bin/bash usuario
usermod -aG sudo usuario

# Configurar sudo
echo "usuario ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart apache2" >> /etc/sudoers

# Configurar contraseñas
passwd -x 90 usuario
passwd -n 1 usuario
passwd -w 7 usuario

Configuración de Red

1
2
3
4
5
6
7
8
# Deshabilitar IPv6 si no se necesita
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf

# Configurar parámetros de red
echo "net.ipv4.ip_forward = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.default.send_redirects = 0" >> /etc/sysctl.conf

Herramientas de Hardening

Windows

  • Microsoft Security Compliance Toolkit: Herramientas de Microsoft
  • CIS-CAT: Herramienta de CIS
  • Nessus: Escáner de vulnerabilidades
  • OpenSCAP: Herramienta de compliance

Linux

  • CIS-CAT: Herramienta de CIS
  • OpenSCAP: Herramienta de compliance
  • Lynis: Auditor de seguridad
  • AIDE: Detector de intrusiones

Automatización

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# Script de hardening para Linux
#!/bin/bash

# Deshabilitar servicios innecesarios
systemctl disable telnet
systemctl disable ftp
systemctl disable rsh

# Configurar firewall
ufw enable
ufw default deny incoming
ufw default allow outgoing

# Configurar parámetros de red
echo "net.ipv4.ip_forward = 0" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.send_redirects = 0" >> /etc/sysctl.conf

# Aplicar cambios
sysctl -p

Estándares de Hardening

CIS Benchmarks

  • Windows: CIS Controls para Windows
  • Linux: CIS Controls para Linux
  • Docker: CIS Controls para Docker
  • Kubernetes: CIS Controls para Kubernetes

NIST Guidelines

  • SP 800-53: Controles de seguridad
  • SP 800-70: Guías de configuración
  • SP 800-123: Guía de hardening de servidores
  • SP 800-147: Guía de hardening de BIOS

ISO 27001

  • A.8.1: Gestión de activos
  • A.9: Control de acceso
  • A.10: Criptografía
  • A.12: Seguridad en el desarrollo

Monitoreo y Auditoría

Herramientas de Monitoreo

1
2
3
4
5
6
7
8
9
# Monitorear cambios en archivos críticos
aide --init
aide --check

# Monitorear procesos
ps aux | grep -E "(telnet|ftp|rsh)"

# Monitorear puertos
netstat -tuln | grep -E "(23|21|514)"

Logs de Seguridad

1
2
3
4
5
6
7
# Configurar logging
echo "*.info /var/log/messages" >> /etc/rsyslog.conf
echo "auth.* /var/log/auth.log" >> /etc/rsyslog.conf

# Monitorear logs
tail -f /var/log/auth.log
tail -f /var/log/messages

Mejores Prácticas

Configuración Inicial

  • Imagen base: Usar imagen base segura
  • Actualizaciones: Aplicar todas las actualizaciones
  • Servicios: Deshabilitar servicios innecesarios
  • Usuarios: Configurar usuarios apropiadamente

Mantenimiento Continuo

  • Parches: Aplicar parches regularmente
  • Monitoreo: Monitorear cambios
  • Auditorías: Realizar auditorías regulares
  • Documentación: Mantener documentación actualizada

Automatización

  • Scripts: Automatizar tareas repetitivas
  • Configuración: Gestión de configuración
  • Despliegue: Despliegue automatizado
  • Validación: Validación automática

Conceptos Relacionados

Referencias