Proteção e filtragem de pacotes
1) Por que é necessário
DDoS são «degradação em massa» de recursos: banda/pps, tabelas de estado, CPU de núcleo/IRQ, pool de conexões, limites de aplicativos. O objetivo é dissecar a proteção: apagar o volume no perímetro da rede; neutralizar as anomalias protocolares até a pilha TCP/IP; e cortar os pedidos indesejados em L7, mantendo o SLO para usuários legítimos.
2) Classes 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.
QUIC/UDP características são falsas tempestades Inicial/Retry, spoofed surce.
2. 2 L7 (application)
HTTP/1. 1: pedidos de rotas caras, header oversize/field smuggling.
HTTP/2: Rapid Reset, stream-flood, HEADERS flood, PRIORITY abuse.
HTTP/3 (QUIC): conexões/fluxos sem conclusão, Inicial flood.
Slow-атаки: slowloris/slow-read/slow-POST.
Striptease sem fim, mensagem-flood, grandes quadros.
3) Arquitetura básica de proteção
1. Anycast + Scrubbing
Espalhe o tráfego globalmente e deslize através dos centros de escrutínio (corte de volume/spufing na borda).
2. Multi-CDN / Multi-Edge
Compartilhamento de domínios (Web, API, estática), agregação de proteção e cachê para carga read.
3. Filtros de baixo nível em seu perímetro
LCA em roteadores border (RFC1918, mogon, portos falsificados).
eBPF/XDP para early-drop por assinatura e rate-limite até conntrack.
4. Perímetro L7 (NGINX/Envoy/WAF)
Compactação RPS por chave, challenge (captcha/PoW), dinheiro, priorização de caminhos «caros».
5. Sustentabilidade interna
Poulas de conexões, filas, circuito/timeout, serviços de isolamento (bulkhead) e autoscaling com «tapas» (shedder).
4) Válvulas de rede: o que ligar imediatamente
4. 1 Linux sysctl (núcleo/pilha)
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 nftáveis: filtros básicos e ratelimit em pacotes
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 (ideia)
Early-drop pacotes com origem spoofed (uRPF no roteador é bem-vindo).
hash-baquetas pps por/32 e per/24; quarentena dinâmica de fontes.
Assinaturas UDP-reflation: DNS response-like para logon (filtrar fora do contexto).
5) UDP amplificação: inventário e blocos
Refletores/amplificadores frequentes: DNS (open resisters), NTP (monlist), CLDAP, SSDP, mDNS, Memcached (UDP), Chargen.
Medidas:- Fechar/limitar serviços UDP, minimizar portas abertas.
- No perímetro, limite pps/bitrite para portas conhecidas.
- Recomendação DNS: Recorsando apenas para suas redes, RRL (Response Rate Limiting), minimizando ANY.
- NTP é apenas «botstrap» para fiéis, «noquery» para 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: limites de baixo nível, descontinuidade de sequências ilegais (nftable/ebpf).
Conntrack-less no border: não consome tabelas de estado onde o filtro é possível por assinatura stateless.
7) HTTP/2/3 e L7 ataques «inteligentes»
HTTP/2 Rapid Reset: limite de frequência de quadros RST e número de fluxos abertos; fechar a ligação em casos de anomalias.
Stream abuse: лимит concurrent streams, headers size, max frame size.
QUIC/HTTP/3: limitar o Inicial pps, incluir o Retry; Times de handshake curtos.
NGINX (fatia 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 e limites)
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 slow e proteção de recursos
Slowloris/slow-read/slow-POST: incluir 'proxy _ request _ buffering on', baixo idle-timeout, mínimo 'read _ rate' aceitável.
Interromper conexões quando o intervalo de solicitação é longo.
No aplicativo, leitura precoce do corpo, limites de tamanho/profundidade do JSON.
9) L7 filtragem: quem é mais importante - deixe passar
Classificação de tráfego: known good (parceiros mTLS/JWT), usuários registrados, anônimos.
Prioridades: rotas write «caras» (depósitos/conclusões) - proteger, mas omitir confirmados; diretório read - dinheiro + throttle.
Camada de challenge captcha/PoW/JS-challengs para zonas cinzentas no pico.
10) Cash, coalescing e degradação
Edge-dinheiro para respostas estáticas/quasistáticas, 'stale-while-revalidate'.
Request coalescing: contrate solicitações paralelas a uma chave, no proxy e no aplicativo.
Modo Degrade: desativar fichas secundárias (personalização, relatórios pesados), emitir páginas «leves».
11) Observabilidade e telemetria
Métricas (per RR/nó/cluster):- 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`.
- Dependências: CPU IRQ soft/hard, NIC queue drops, run-queue length.
Logs: sampleados, agregados por/24, ASN, portos e assinaturas; sem PII.
Traising: Incluir em listas brancas, expandir o sampling para depuração.
12) Planos de resposta (runbook)
1. Detecção: ativa liminares pps/bps/429/h2 _ rst _ rate.
2. Classificação: nível (L3/4/7), protocolo (UDP/TCP/h2/h3), geo/ASN.
- incluir perfis de agrubbing/blackhole no provedor,
- reforçar nftable/ebpf limites,
- Reduzir os limites L7 e aumentar o desafio,
- incluir Retry para QUIC (Inicial flood).
- 4. Comunicações: Página de status, modelos de notificação para parceiros.
- 5. Forensica: captura de PCAP entre 60 e 120 segundos, amostra top talkers ASNs/porte.
- 6. Retrospectiva: atualizar assinaturas, liminares, listas de refletores.
13) Testes e exercícios
Playbooks trimestrais: UDP sintético/HTTP burst, tráfego slow, HTTP/2 reset.
Game day: alternar Anycast/migração entre CDN, degradação para «modo fácil».
Verificação do provedor: SLA agrubbing, tempo de ativação/desligamento de filtros, max pps/bps.
14) Antipattern
Basear-se apenas no L7-WAF no ataque de volume.
Sem uRPF/ACL no border e conntrack-heavy filtra «testa».
Títulos/corpos ilimitados e longos keep-alive no auge.
Uma única região/RR sem Anycast/multi-edge.
Falta de suprimentos NIC/IRQ/CPU e monitoramento de filas.
Nada de dinheiro/coligação - RPS extra para backend.
15) Especificidades do iGaming/Finanças
Picos temporários (jogos/derbi/jogos loto): aprimore a capacidade do POP com antecedência, inclua o dinheiro agressivo de coeficientes, instale canary-challengs para anónimos.
Rotas de pagamento/saída: edge-pool separado com mTLS, curtos horários, limites de competição; Nada de 0-PTT.
Políticas geo: alow-light regionais, filtragem ASN «hospedagem», mudança geo rápida.
Cruzamento com antifrode: os limites velocity e Risk API passam para um perfil rígido em um incidente DDoS.
16) Folha de cheque pró-prontidão
- Anycast или multi-edge/CDN; canais de agrubbing verificados.
- Border-LCA/uRPF; nftable/ebpf/XDP perfis, conntrack-less filtragem.
- Sysctl-sintonizar TCP/SYN, limity pps para amplificadores de portas UDP.
- HTTP/2/3 limites (streams, frames, headers), protecção slow, body/header-limits.
- Limites L7 e challenge; cash e coalescing no perímetro.
- Dashboard pps/bps/connack/IRQ + L7 RED; alertas em anomalias h2 _ rst/429.
- Runbook/playbooks, contatos do provedor, one-click inclusão de perfis.
- Exercícios: bursts, slow, HTTP/2 reset; relatório e captação de melhorias.
- Pool dividido para rotas de pagamento/crítica, mTLS e limites rigorosos.
17) TL; DR
Relaxe a proteção: Anycast + scrubbing apaga o volume, eBPF/XDP+nftables corta o lixo até a pilha, L7-limites/challengs/dinheiro mantém a SLA. Assinar TCP (SYN cookies, backlog), limitar amplificadores UDP, definir limites HTTP/2/3 e proteção slow. Tenha runbook e treine-o; para iGaming - expanda o edge com antecedência nos horários de pico e separe as rotas de pagamento com limites mTLS e rígidos.