Cómo configurar Nginx Proxy Manager + Fail2Ban + GeoIP2
- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Securización total de Nginx Proxy Manager con Fail2Ban y GeoIP2
Protege tus servicios Docker expuestos a Internet con bloqueo geográfico automatizado, detección de intrusiones y filtrado de IPs maliciosas. Privacidad y control total desde tu servid or.
¿Por qué securizar Nginx Proxy Manager?
Nginx Proxy Manager (NPM) es una herramienta poderosa para gestionar proxies inversos, certificados SSL y dominios de forma visual. Sin embargo, al exponer puertos 80/4 43 a Internet, tu infraestructura queda expuesta a una amplia gama de amenazas: ataques de fuerza bruta, escaneos automatizados, bots maliciosos y accesos desde países con alto índice de cibe rataques.
La solución: Implementar una capa de seguridad proactiva que combine filtrado geográfico (GeoIP2) con bloqueo automático de IPs (Fail2Ban). Esto permite bloquear tráfic o no deseado antes de que llegue a tus servicios, reduciendo drásticamente la superficie de ataque.
Componentes de la solución
Nginx Proxy Manager
Proxy inverso con interfaz web intuitiva. Gestión visual de hosts, SSL y redirecciones.
Fail2Ban
Monitorea logs y banea IPs tras intentos fallidos. Reglas personalizables y notificaciones.
GeoIP2 (MaxMind)
Base de datos GeoLite2-Country para filtrar tráfico por país en tiempo real via nginx.
Filtrado proactivo
Bloquea países enteros antes de que lleguen a tu aplicación. Reduce carga y riesgos.
Bloqueo reactivo
Fail2Ban analiza logs en tiempo real y banea IPs que intentan ataques o escaneos.
Logs centralizados
Todos los intentos quedan registrados para auditoría y análisis forense detallado.
Actualizaciones automáticas
Base de datos GeoIP2 se actualiza semanalmente. Reglas Fail2Ban se recargan dinámicamente.
100% Open Source
Ninguna dependencia de terceros o servicios en la nube. Control total sobre tu seguridad.
Docker Compose
Despliegue unificado y reproducible. Fácil mantenimiento y escalabilidad futura.
Compatibilidad
Compatible con cualquier servicio backend: Home Assistant, Nextcloud, Plex, etc.
Notificaciones
Configura alertas email, Telegram o Discord cuando se produce un baneo de IP.
Whitelist flexible
Define excepciones por IP, red o país. Nunca bloquearás accidentalmente tu acceso.
Requisitos del sistema
- Docker y Docker Compose instalados (v2.0.0+)
- 1-2 GB de RAM para el stack completo (NPM + Fail2Ban + geoipupdate)
- 10+ GB de espacio para logs, base de datos GeoIP y certificados SSL
- Puertos 80/443 disponibles y redirigidos en el router/firewall
- Cuenta gratuita en MaxMind para descargar GeoLite2-Country (license key)
- Opcional: Notificaciones email/Telegram configuradas para alertas Fail2Ban
cap_add: [NET_ADMIN] o mod
o privileged: true según tu entorno.
Instalación con Docker Compose
Paso 1: Crea tu archivo docker-compose.yml
Paso 2: Configura Fail2Ban
Crea el archivo fail2ban-jail.local:
Crea el filtro personalizado en fail2ban-filters/nginx-npm.conf:
Paso 3: Configura GeoIP2 en Nginx
Crea/modifica el archivo data/nginx/custom/server_proxy.conf en el volumen de NPM:
Paso 4: Iniciar los servicios
Acceso
Abre http://localhost:81 para acceder al panel de administración de Nginx Proxy Manager. Configura tu primer proxy host y certificado SSL. Las IPs bloqueadas por GeoIP2 re
cibirán una respuesta 444 (connection closed without response).
Primeros pasos tras la instalación
1. Configurar proxy hosts en NPM
- Accede al panel web de NPM en
http://localhost:81 - Credenciales por defecto:
admin@example.com/changeme - Ve a Hosts → Proxy Hosts → Add Proxy Host
- Indica el dominio, esquema (http/https), IP interna y puerto del servicio backend
- Activa Websockets Support si tu app lo requiere (ej: Home Assistant)
2. Solicitar certificado SSL
- Edita tu proxy host recién creado
- Ve a la pestaña SSL
- Selecciona Request a new SSL Certificate
- Activa Force SSL y HTTP/2 Support
- Acepta los términos de Let's Encrypt y guarda
3. Verificar reglas de Fail2Ban
- Conéctate al contenedor de Fail2Ban:
docker compose exec fail2ban sh - Revisa el estado de la cárcel:
fail2ban-client status nginx-npm - Lista IPs baneadas:
fail2ban-client status nginx-npm | grep Banned - Prueba un baneo manual (para verificar): desconecta tu VPN y haz varios intentos fallidos 404 desde otra IP
4. Verificar filtrado GeoIP2
- Comprueba que la base de datos existe:
ls ./geoip-data/ - Verifica que el módulo GeoIP2 cargó correctamente en los logs de NPM
- Prueba desde una IP extranjera (VPN) que debería estar bloqueada
- Revisa los logs:
docker compose logs app | grep 444
Reglas y automatizaciones de seguridad
1. Bloquear intentos de path traversal
2. Rate limiting por IP
3. Whitelist de IPs conocidas (evita baneo accidental)
4. Alertas de correo para baneos
Integraciones adicionales
Monitorización
- Grafana + Loki: Visualiza logs de NPM y Fail2Ban en dashboards centralizados
- Prometheus: Métricas de contenedores Docker y estado de Fail2Ban
- Uptime Kuma: Monitoriza si tus servicios son accesibles desde IPs permitidas
Notificaciones
- Telegram: Bot de alertas instantáneas cuando se banea una IP
- Discord: Webhooks para alertas en canales de tu servidor
- Slack: Integración con apps de trabajo para equipos IT
Servicios protegidos comunes
- Nextcloud: Protege tu nube privada contra escaneos de cuentas
- Home Assistant: Evita intentos de acceso al panel de administración
- Plex/Jellyfin: Bloquea distribución de contenido desde países no autorizados
- Portainer: Acceso restringido solo a IPs de tu país
Gestión y mantenimiento
Ver logs en tiempo real
Desbanear una IP manualmente
Backup de configuraciones
Actualizar imágenes Docker
Actualizar base de datos GeoIP2 manualmente
Casos de uso
- Blog personal: Bloquea accesos masivos de bots de scraping y comentarios spam desde países no deseados
- Home Lab: Protege todos tus contenedores Docker con una única puerta de entrada segura y monitoreada
- Pequeña empresa: Centraliza acceso a servicios internos (CRM, ERP) exponiendo solo lo necesario al exterior
- Proyecto freelance: SSL automático, redirecciones y seguridad sin tocar línea de comando
- Comunidad gamer/Discord: Panel web para administrar servidores protegido por reglas geográficas
- Fotógrafo/Diseñador: Galerías privadas para clientes con acceso restringido por IP y país
Referencias y documentación oficial
Apoya el canal GENBYTE
Suscríbete al canal de YouTube Suscríbete a la newsletter semanal Invítame a un Ko-fi genbyte@proton.me- Obtener enlace
- X
- Correo electrónico
- Otras aplicaciones
Comentarios
Publicar un comentario