Que es el hardening de servidores
El hardening (endurecimiento) de un servidor Linux es el proceso de reducir la superficie de ataque del sistema operativo deshabilitando servicios innecesarios, eliminando software no utilizado, aplicando configuraciones de seguridad restrictivas y siguiendo las mejores practicas establecidas por organismos de seguridad como el CIS (Center for Internet Security). Un servidor recien instalado viene con una configuracion generica que prioriza la compatibilidad y la facilidad de uso sobre la seguridad, y el hardening lo adapta a un entorno de produccion mas seguro.
Lista de verificacion de hardening para Linux
| Categoria | Medida | Prioridad |
|---|---|---|
| Actualizaciones | Sistema operativo y paquetes actualizados | Critica |
| SSH | Puerto no estandar, sin root, llaves SSH obligatorias | Critica |
| Firewall | UFW o iptables configurado, solo puertos necesarios abiertos | Critica |
| Usuarios | Sin cuentas de usuario innecesarias, sudo limitado | Alta |
| Servicios | Solo servicios necesarios en ejecucion | Alta |
| Permisos | Archivos criticos con permisos restrictivos | Alta |
| Logs | Logging centralizado y revision periodica | Media |
| Fail2ban | Instalado y configurado para SSH y servicios web | Alta |
| Contraseñas | Politica de contraseñas fuertes activa | Alta |
Configuraciones de seguridad del sistema
# Deshabilitar el acceso root por contraseña en SSH sed -i "s/PermitRootLogin yes/PermitRootLogin no/" /etc/ssh/sshd_config # Configurar el firewall UFW ufw default deny incoming ufw default allow outgoing ufw allow 2222/tcp # SSH en puerto personalizado ufw allow 80/tcp ufw allow 443/tcp ufw enable # Instalar y configurar fail2ban apt install fail2ban -y systemctl enable fail2ban --now
Configuraciones del kernel para mayor seguridad
Agregar las siguientes configuraciones al archivo /etc/sysctl.conf para endurecer el kernel de Linux:
# Deshabilitar el reenvio de paquetes IP net.ipv4.ip_forward = 0 # Proteccion contra SYN flood net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 2048 # Ignorar paquetes ICMP broadcast (Smurf attacks) net.ipv4.icmp_echo_ignore_broadcasts = 1 # Habilitar proteccion de IP spoofing net.ipv4.conf.all.rp_filter = 1 # Deshabilitar respuesta a ICMP redirects net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0
Aplicar los cambios sin reiniciar:
sudo sysctl -p
Auditoria periodica de seguridad
- Usar Lynis (
sudo apt install lynis && sudo lynis audit system) para un analisis automatizado de la postura de seguridad del servidor con recomendaciones especificas. - Revisar periodicamente los logs de autenticacion en
/var/log/auth.log(Ubuntu) o/var/log/secure(AlmaLinux). - Ejecutar
ss -tlnppara verificar que solo los puertos esperados estan abiertos y escuchando.
