Introducción
Al desplegar instancias en Hetzner Cloud, garantizar la seguridad es un factor crítico. Dos herramientas esenciales para proteger tus servidores son firewall y fail2ban. En este artículo abordaremos, de forma detallada, cómo configurarlos y optimizarlos, así como buenas prácticas adicionales para mantener tus instancias seguras.
1. Arquitectura de seguridad recomendada
Antes de implementar cualquier medida, es conveniente definir una arquitectura de seguridad en capas:
- Capa de red: firewall a nivel de instancia y/o red privada.
- Capa de sistema operativo: configuración de puertos, usuarios, actualizaciones.
- Capa de servicio: limitación de intentos de conexión, autenticación reforzada.
- Monitorización: alertas y análisis de logs.
2. Configuración del Firewall
Hetzner ofrece un firewall en la red configurable desde su panel, pero es recomendable añadir uno a nivel de máquina.
2.1. UFW (Uncomplicated Firewall)
UFW simplifica iptables y es ideal para comenzar.
- Instalar:
apt-get update apt-get install ufw - Permitir SSH (puerto 22, adapta si cambias el puerto):
ufw allow 22/tcp - Habilitar UFW:
ufw enable - Verificar estado:
ufw status verbose
Para servicios web:
ufw allow 80/tcp(HTTP)ufw allow 443/tcp(HTTPS)
2.2. Iptables avanzado
Para necesidades más complejas o personalizadas:
| Regla | Descripción |
|---|---|
iptables -P INPUT DROP |
Establece política por defecto de denegar todo trafico entrante. |
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT |
Permite respuestas a conexiones iniciadas. |
iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
Abre el puerto SSH. |
Recuerda guardar reglas:iptables-save gt /etc/iptables/rules.v4.
3. Protegiendo con Fail2ban
Fail2ban escanea logs y bloquea IPs con comportamiento malicioso, muy útil contra ataques de fuerza bruta.
3.1. Instalación y configuración básica
- Instalar:
apt-get install fail2ban - Crear copia de configuración:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local - Editar
/etc/fail2ban/jail.local:
| Parámetro | Valor recomendado | Descripción |
|---|---|---|
bantime |
3600 |
Tiempo en segundos para ban. |
findtime |
600 |
Ventana de tiempo para contar intentos. |
maxretry |
5 |
Intentos fallidos antes de ban. |
Activar servicios comunes:
[sshd]: activa protección SSH.[nginx-http-auth]: bloquea intentos fallidos de Nginx.
Reiniciar servicio:systemctl restart fail2ban
Ver estado de jails:fail2ban-client status
4. Buenas prácticas adicionales
- Deshabilitar login como root: usar sudo con usuarios específicos.
- Clave SSH con passphrase: aumentar seguridad de la clave privada.
- Autenticación de dos factores (2FA) para paneles de control o servicios expuestos.
- Limitación de usuarios y permisos: emplear
chmodychowncorrectamente. - Actualizaciones automáticas: mantener sistema y software al día.
Ejemplounattended-upgradesen Debian/Ubuntu.
5. Monitorización y alertas
Implementar herramientas de monitorización mejora la detección temprana:
- Prometheus Grafana: métricas de uso y alertas.
- Fail2ban-email: notificaciones de nuevos bans por correo.
- Logwatch o ELK Stack: análisis de logs centralizado.
6. Respaldo y recuperación
Prepararse para incidentes es clave:
- Realizar backups regulares de configuración y datos.
- Probar procedimientos de restauración periódicamente.
- Usar snapshots de Hetzner para recuperación rápida.
Conclusión
La combinación de un firewall bien configurado y fail2ban ofrece una sólida defensa contra ataques comunes. Complementa estas medidas con buenas prácticas de administración, monitorización y respaldo. Así, garantizarás que tus instancias en Hetzner sean seguras, estables y resistentes ante incidentes.
Para ampliar información, consulta:
Leave a Reply