El hardening
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