GH GambleHub

Protección y filtrado de paquetes DDoS

1) Por qué es necesario

DDoS es una «degradación masiva» de recursos: bandas/pps, tablas de estado, CPU de núcleo/IRQ, agrupaciones de conexiones, límites de aplicaciones. El objetivo es relajar la protección: extinguir el volumen en el perímetro de la red, neutralizar las anomalías protocolarias a la pila TCP/IP, y en la L7 cortar las solicitudes no deseadas, manteniendo el SLO para usuarios legítimos.

2) Clases de ataque

2. 1 L3/L4 (volumetric/protocol)

Volumetric: UDP flood, UDP-reflection/amplification (DNS/CLDAP/NTP/SSDP/memcached/mDNS), GRE flood.
Protocol/state exhaustion: SYN flood, ACK/RST flood, TCP connection-exhaustion, ICMP flood, TCP fragmentation.
Características QUIC/UDP: falsas tormentas Initial/Retry, spoofed source.

2. 2 L7 (application)

HTTP/1. 1: consultas para rutas costosas, header oversize/field smuggling.
HTTP/2: Rapid Reset, stream-flood, HEADERS flood, PRIORITY abuse.
HTTP/3 (QUIC): conexiones/hilos sin completar, flood inicial.
Slow-атаки: slowloris/slow-read/slow-POST.
gRPC/WebSocket: interminables streams, message-flood, grandes marcos.

3) Arquitectura de protección básica

1. Anycast + Scrubbing

Pulverizar el tráfico globalmente y correr a través de los centros de scrubbing proveedores (corte volumétrico/spoofing en el borde).

2. Multi-CDN / Multi-Edge

Variedad de dominios (web, API, estática), agregación de protección y caché para carga de lectura.

3. Filtros de bajo nivel en su perímetro

ACL en enrutadores de border (RFC1918, bogon, puertos notoriamente falsos).
eBPF/XDP para early-drop en firmas y límites de rate a conntrack.

4. L7-perímetro (NGINX/Envoy/WAF)

Comprimir RPS por clave, desafío (captcha/PoW), caché, priorizar rutas «caras».

5. Sostenibilidad interna

Grupos de conexiones, colas, circuitos/timeout, aislamiento de servicios (bulkhead) y autoscaling con «tapones» (shedder).

4) «Válvulas de red»: qué incluir directamente

4. 1 Linux sysctl (núcleo/pila)

bash
TCP SYN flood sysctl -w net. ipv4. tcp_syncookies=1 sysctl -w net. ipv4. tcp_max_syn_backlog=4096 sysctl -w net. ipv4. tcp_synack_retries=3

Conntrack/sysctl -w net tables. netfilter. nf_conntrack_max=262144 sysctl -w net. netfilter. nf_conntrack_tcp_timeout_established=300

ICMP/redirect sysctl -w net. ipv4. icmp_echo_ignore_broadcasts=1 sysctl -w net. ipv4. conf. all. accept_redirects=0 sysctl -w net. ipv4. conf. all. send_redirects=0

sysctl -w net socket resources. core. somaxconn=4096 sysctl -w net. core. netdev_max_backlog=250000 sysctl -w net. core. rmem_max=134217728 sysctl -w net. core. wmem_max=134217728

4. 2 nftables: filtros básicos y ratelimit en paquetes

nft table inet filter {
sets {
bogon { type ipv4_addr; flags interval; elements = { 0. 0. 0. 0/8, 10. 0. 0. 0/8, 100. 64. 0. 0/10,
127. 0. 0. 0/8, 169. 254. 0. 0/16, 172. 16. 0. 0/12, 192. 0. 2. 0/24, 192. 168. 0. 0/16, 198. 18. 0. 0/15, 224. 0. 0. 0/4 } }
}
chains {
input {
type filter hook input priority 0; policy drop;
ip saddr @bogon drop ct state established,related accept

UDP amplification ports - limit pps udp dport {53,123,1900,11211,389,1900,5353} limit rate over 2000/second drop

SYN rate-limit tcp flags syn tcp dport {80,443} limit rate over 2000/second drop

ICMP flood ip protocol icmp limit rate 100/second accept
}
}
}

4. 3 XDP/eBPF (idea)

Paquetes Early-drop con origen spoofed (uRPF en el router es bienvenido).
hash baquetas pps per/32 y per/24; «cuarentena» dinámica de fuentes.
Firmas de reflexión UDP: DNS response-like a la entrada (filtrar fuera de contexto).

5) amplificación UDP: inventario y bloques

Reflectores/amplificadores frecuentes: DNS (resolvers abiertos), NTP (monlist), CLDAP, SSDP, mDNS, Memcached (UDP), Chargen.

Medidas:
  • Cerrar/restringir servicios UDP, minimizar los puertos abiertos.
  • En el perímetro, limite el pps/bitrate para puertos conocidos.
  • Recomendación DNS: Recursiva sólo para sus redes, RRL (Responder Rate Limiting), minimización de ANY.
  • El NTP es solo un «bootstrap» a los de confianza, un 'noquery' para los públicos.

6) TCP state exhaustion

SYN flood: 'tcp _ syncookies = 1', elevado 'tcp _ max _ syn _ backlog', 'synack _ retries = 3', drop por pps.
ACK/RST flood: límites de bajo nivel, abandono de secuencias ilegítimas (nftables/ebpf).
Conntrack-less en el border: no gastar tablas de estado donde el filtro es posible por la firma sin estado.

7) Ataques HTTP/2/3 e «inteligentes» L7

HTTP/2 Rapid Reset: límite de frecuencia de marcos RST y número de subprocesos abiertos; cerrar la conexión en caso de anomalías.
Stream abuse: лимит concurrent streams, headers size, max frame size.
QUIC/HTTP/3: restringir los pps iniciales, habilitar Retry; tiempos cortos handshake.

NGINX (fragmento L7)

nginx
Header/body constraint client_max_body_size 1m;
large_client_header_buffers 4 8k;

HTTP/2 limits http2_max_concurrent_streams 128;
http2_recv_buffer_size 256k;

Rate limit by IP (example)
limit_req_zone $binary_remote_addr zone=reqs:20m rate=100r/s;
limit_req zone=reqs burst=200 nodelay;

Envoy (anti-reset y límites)

yaml http2_protocol_options:
max_concurrent_streams: 128 initial_stream_window_size: 65536 max_outbound_frames: 10000 stream_error_on_invalid_http_messaging: true

8) Ataques de slow y protección de recursos

Slowloris/slow-read/slow-POST: habilitar 'proxy _ request _ bufering on', idle-timeout bajo, mínimo aceptable 'read _ rate'.
Detenga las conexiones a intervalos largos entre paquetes por solicitud.
En la aplicación: lectura/eliminación temprana del cuerpo, límites de tamaño/profundidad JSON.

9) Filtración L7: quién es más importante - deje pasar

Clasificación de tráfico: known good (socios mTLS/JWT), usuarios registrados, anónimos.
Prioridades: rutas de escritura «caras» (depósitos/retiros) - proteger, pero saltarse las confirmadas; directorios de lectura - caché + throttle.
Challenge-capa: captcha/PoW/JS-challenge para zonas grises en pico.

10) Caché, calzado y degradación

Caché edge para respuestas estáticas/cuasiestáticas, 'stale-while-revalidate'.
Request coalescing: capturar solicitudes paralelas a una sola clave - en el proxy y en la aplicación.
Degrade-modo: desactivar los fichajes secundarios (personalización, informes pesados), emitir páginas «ligeras».

11) Observabilidad y telemetría

Métricas (per RR/nodo/clúster):
  • L3/L4: `pps_in/out`, `bps_in/out`, `drop_pps{reason}`, `syn_recv`, `conntrack_used/limit`, `xdp_drop_pps`.
  • L7: `requests_total{route}`, `429_total`, `challenge_total{type}`, `h2_rst_rate`, `slow_req_total`.
  • Dependencias: CPU IRQ soft/hard, NIC queue drops, run-queue length.

Logs: sampleados, agregados por/24, ASN, puertos y firmas; sin PII.
Trekking: incluir en las listas blancas, expandir accidentalmente sampling para depurar.

12) Planes de respuesta (runbook)

1. Detect: activación de los umbrales de pps/bps/429/h2_rst_rate.
2. Clasificación: nivel (L3/4/7), protocolo (UDP/TCP/h2/h3), geo/ASN.

3. Válvulas:
  • habilitar perfiles de scrubbing/blackhole en el proveedor,
  • reforzar nftables/ebpf límites,
  • reducir los límites L7 y aumentar los retos,
  • habilitar Retry para QUIC (Flood inicial).
  • 4. Comunicaciones: página de estado, plantillas de notificación a los socios.
  • 5. Forenzika: captura de PCAP durante 60-120 segundos, muestra de talkers principales ASNs/ports.
  • 6. Retrospectiva: actualizar firmas, umbrales, listas de reflectores.

13) Pruebas y ejercicios

Los playbooks de DDoS-drill son trimestrales: bursts sintéticos UDP/HTTP, tráfico slow, HTTP/2 reset.
Día de juego: conmutación Anycast/migración entre CDN, degradación a «modo fácil».
Verificación del proveedor: SLA scrubbing, tiempo de encendido/apagado de los filtros, max pps/bps.

14) Antipattern

Confiar sólo en el L7-WAF en un ataque volumétrico.
La ausencia de uRPF/ACL en el border y el filtrado «de frente» de conntrack-heavy.
Encabezados/cuerpos ilimitados y largo keep-alive en el pico.
Región única/RR sin Anycast/multi-edge.
No hay existencias de NIC/IRQ/CPU y monitoreo de colas.
Sin caché/coalesing - RPS extra en el backend.

15) Especificidad de iGaming/finanzas

Picos de tiempo (partidos/derbi/sorteos de lotería): amplía la capacidad POP de antemano, habilita un caché de coeficientes agresivo, pon retos canarios para los anónimos.
Rutas de pago/salida: grupo edge independiente con mTLS, tiempos cortos, límites de competencia; No hay 0-RTT.
Políticas geográficas: allow-laists regionales, filtrado ASN de «hostings», conmutación geo rápida.
Intersección con antifraude: los límites de velocidad y la API de riesgo pasan a un perfil «duro» en un incidente DDoS.

16) Lista de comprobación prod

  • Anycast или multi-edge/CDN; canales de scrubbing verificados.
  • Border-ACL/uRPF; nftables/ebpf/perfiles XDP, conntrack-less filtración.
  • Ajuste Sysctl TCP/SYN, pps de límite para puertos amplificadores UDP.
  • HTTP/2/3 límites (streams, frames, headers), slow-protection, body/header-limits.
  • L7-limites y desafío; caché y calzado en el perímetro.
  • Dashboards pps/bps/conntrack/IRQ + L7 RED; alertas a las anomalías h2_rst/429.
  • Runbook/playbooks, contactos de proveedores, activación de perfiles de un solo clic.
  • Enseñanzas: Burst, slow, HTTP/2 reset; informe y confirmación de mejoras.
  • Agrupaciones separadas para rutas de pago/críticas, mTLS y límites estrictos.

17) TL; DR

Relajar la protección: Anycast + scrubbing extingue el volumen, eBPF/XDP + nftables cortan la basura a la pila, L7-limites/challenge/caché guardan SLA. Afine las cookies TCP (SYN, backklog), limite los amplificadores UDP, coloque los límites de protección HTTP/2/3 y slow. Tenga un runbook y entrenarlo; para iGaming: amplíe el edge de antemano en horas de pico y separe las rutas de pago con mTLS y límites estrictos.

Contact

Póngase en contacto

Escríbanos ante cualquier duda o necesidad de soporte.¡Siempre estamos listos para ayudarle!

Telegram
@Gamble_GC
Iniciar integración

El Email es obligatorio. Telegram o WhatsApp — opcionales.

Su nombre opcional
Email opcional
Asunto opcional
Mensaje opcional
Telegram opcional
@
Si indica Telegram, también le responderemos allí además del Email.
WhatsApp opcional
Formato: +código de país y número (por ejemplo, +34XXXXXXXXX).

Al hacer clic en el botón, usted acepta el tratamiento de sus datos.