Volver al inicio

ipset y Protección del Servidor CrowdSec contra Escáneres

El artículo describe un sistema de filtrado de tráfico de tres capas basado en ipset, autobloqueo y CrowdSec. El bloqueo a nivel de kernel reduce el tráfico basura al 0.3% y la carga. Se proporciona código para actualizar conjuntos, métricas y limitaciones.

Tres Capas WAF: ipset + CrowdSec para Servidor Linux
Advertisement 728x90

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.

Google AdInline article slot

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.

Google AdInline article slot

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.

Google AdInline article slot

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

Advertisement 728x90

Leer después