Filtrado Multicapa de Tráfico: ipset, Bloqueo Automático y CrowdSec para Seguridad de Servidores
Un sistema de filtrado basado en ipset con bloqueo automático de IPs sospechosas y CrowdSec reduce el tráfico basura de un 12% a menos del 0,3%. El bloqueo ocurre a nivel del kernel de Linux (L3/L4), antes de que nginx y PHP-FPM procesen las solicitudes. Esto alivia la carga del servidor en sitios Bitrix en producción, donde los escaneos de .env, wp-login.php y config.php solían causar fallos de hasta el 99%.
Beneficios clave: visibilidad total de los bloqueos, actualizaciones atómicas de listas de IPs y diseño modular para ajustes rápidos específicos del proyecto.
Ventajas Sobre WAF Externos y CDNs
Los WAF externos y CDNs brillan en aplicaciones globales masivas, pero para configuraciones locales de bajo tráfico, el filtrado autoalojado es la mejor opción.
Razones principales para crearlo tú mismo:
- Control total: Ve exactamente qué IPs están bloqueadas, por qué regla y durante cuánto tiempo.
- Bloqueo antes de la app: No se desperdician recursos de nginx/PHP en tráfico basura.
- Flexibilidad: Añade fácilmente reglas para patrones específicos de Bitrix como .env o .git.
- Simplicidad: Sin capas extras que hinchen tu pila.
El análisis se ejecuta en logs HTTP (L7), pero los descartes de paquetes ocurren en iptables con ipset a nivel del kernel.
Estructura de Defensa en Tres Capas
El sistema está escalonado para un filtrado paso a paso.
Capa 1: Bloqueo geográfico. Los paquetes de países irrelevantes se descartan de inmediato, sin necesidad de analizar HTTP.
Capa 2: Bloqueo automático de IPs sospechosas. Tras el geo-bloqueo, busca patrones como wp-login.php, shell.php, .env. Los culpables se banean por 2 horas.
Capa 3: CrowdSec. El bouncer alimenta una lista negra global en ipset con TTL.
La modularidad permite activar/desactivar capas de forma independiente, minimizando falsos positivos.
ipset: La Base de la Escalabilidad
iptables simple con miles de reglas de IP implica escaneos lineales O(n), que hunden el rendimiento bajo carga.
ipset usa hash:ip o hash:net para búsquedas O(1):
-m set --match-set blocked_ips src
Las actualizaciones de listas son atómicas mediante sets temporales y swaps, sin tiempo de inactividad:
ipset create "${country}_temp" hash:net 2>/dev/null || ipset flush "${country}_temp"
if [[ -s "$temp_file" ]]; then
while read network; do
ipset add "${country}_temp" "$network"
done < "$temp_file"
ipset swap "${country}_temp" "$country"
fi
ipset destroy "${country}_temp"
Esto mantiene la protección sólida incluso durante actualizaciones masivas de listas.
Detección de Escáneres por Patrones
El script auto-block-suspicious.sh sigue los logs y detecta solicitudes sospechosas:
- wp-login.php (incluso en Bitrix).
- shell.php, shoha.php.
- .env, .git, .aws/credentials.
Las IPs se banean automáticamente por 2 horas. Ejemplo: Una ráfaga de más de 200 accesos a /wp-login.php neutralizada en 20-30 segundos, con la carga normalizada al instante.
Estadísticas de bloqueos:
- China: 8.802 IPs.
- Sospechosas: 10 IPs (p. ej., 4.193.97.168, 195.178.110.109).
Integración con CrowdSec
El bouncer de CrowdSec pobla el ipset crowdsec_blacklist con TTL:
- Sincroniza automáticamente firmas globales.
- Expira automáticamente al vencimiento.
CrowdSec refuerza los módulos personalizados, manejando amenazas conocidas sin rehacer tu lógica.
Resultados de la Implementación
Comparación de métricas (2025 sin WAF vs. 2026 con WAF):
| Métrica | Sin Protección | Con WAF |
|------------------|----------------|-------------|
| Tráfico Basura | ~12% | <0,3% |
| Carga Promedio | 1,8–2,5 | 0,9–1,2 |
| Tasa de Fallos | Hasta 40% | 12–15% |
Los picos de escaneo RPS mueren en el kernel; las analíticas ahora están libres de bots.
Limitaciones:
- No defiende contra ataques L4 de alto volumen.
- Requiere actualizaciones de CMS (Bitrix).
- Débil contra IPs residenciales.
- No apto para proyectos a escala CDN global.
Lecciones Clave
- Escalabilidad: ipset ofrece verificaciones O(1) para millones de IPs.
- Atomicidad: Los swaps evitan huecos en el filtrado.
- Modularidad: Capas independientes (geo, sospechosas, CrowdSec) para ajustes precisos.
- Eficiencia: Tráfico basura al 0,3%, carga promedio reducida a la mitad.
- Transparencia: Visibilidad total, sin cajas negras.
— Editorial Team
Aún no hay comentarios.