Performance de nível operadora, do driver da placa ao painel
Um motor em Rust sem garbage collector, filtros eBPF/XDP rodando no driver da NIC e um banco colunar feito para bilhões de flows. Tudo instalado no seu servidor, sem depender de nuvem de terceiros para detectar ou mitigar.
- testes automatizados no core
- 1.198
- vetores de ataque decodificados
- 50
- tabelas analíticas no ClickHouse
- 125
- materialized views
- 20
- refletores bloqueados no XDP
- 13
- endpoints na API REST v1
- 46
Como o dado anda
Telemetria entra pela esquerda, a cada 10 s o motor decide, e a resposta volta para a borda por BGP ou passa pelo scrubber. Tudo fica gravado no ClickHouse: flows, ataques, decisões e auditoria.
Arraste para o lado para ver o diagrama inteiro.
- Roteadores de bordaJuniper, Huawei, MikroTik, Cisco e qualquer equipamento que exporte flow.
- ColetorNetFlow, IPFIX e sFlow em
UDP 2055/6343, BMP emTCP 11019, SNMP e captura de pacotes. - EnriquecimentoASN, GeoIP, rDNS, sonda TLS, DNS passivo, decoder de túnel e mapa porta → provedor.
- Motor de análiseCiclo de 10 s, configurável até 1 s: decoders, thresholds, baseline, burst, carpet bomb, spoofing, RPKI/IRR e threat intel.
- DecisãoCascata determinística com trava de CGNAT e teto de 80% da capacidade medida do scrubber.
- AçãoGoBGP ou ExaBGP anunciam aos roteadores; o scrubber XDP/nftables limpa; a empresa de mitigação recebe o que não cabe.
- Painel e integraçõesInterface web, API REST v1, e-mail, Telegram, webhook, Syslog e SNMP Trap.
Escolhido para não engasgar no meio de um ataque
Cada peça faz uma coisa e está no lugar onde rende mais. Nenhuma depende de serviço externo para funcionar.
Rust + TokioO motor
Coleta, análise, decisão e mitigação num binário assíncrono, sem garbage collector e sem pausa no meio de um ataque. O build de release usa LTO e jemalloc, e é endurecido contra engenharia reversa.
eBPF/XDP com ayaO plano de dados
Filtro e scrubber rodando no driver da placa, antes da pilha de rede do Linux. Um destino fora de mitigação passa com um único lookup de hash.
ClickHouseFlows e histórico
Banco colunar para bilhões de flows, com consultas em milissegundos e compressão perto de 10:1. Também guarda a fila de mitigação, as decisões e a auditoria.
MariaDB / MySQLUsuários e configuração
Usuários e papéis, dashboards, Managed Objects, chaves de API e relatórios agendados.
RedisEstado quente
Baselines estatísticas e alertas em tempo real. Depois de um restart, o motor restaura as baselines do Redis em vez de reaprender a rede do zero.
GoBGP v3 / ExaBGPSessões BGP
GoBGP por gRPC nativo ou ExaBGP. A configuração gerada pela interface mostra o diff antes de aplicar e tem rollback.
Next.js 16 + React 19Interface
Mais de 60 telas em português, tema claro e escuro, terminal SSH no navegador, dashboards arrastáveis e Swagger UI embutido.
Separe quem decide de quem recebe o ataque
O mesmo pacote de instalação roda em três papéis, escolhidos por uma linha no config.toml. Os nós conversam pela fila de mitigação no ClickHouse, sem protocolo proprietário.
| Função | All-in-oneo padrão | Analyzerfora do caminho do tráfego | Scrubberno caminho do tráfego desviado |
|---|---|---|---|
| Recebe flows e detecta | Sim | Sim | Não, o coletor sobe só em loopback |
| Decide e anuncia por BGP | Sim | Sim | Não |
| Filtra com XDP e nftables | Sim | Nunca toca no filtro local | Sim, lendo a fila de mitigação |
| Interface web e API | Sim | Sim | Não, sobe enxuto |
| Quando usar | Rede única, um servidor para tudo | Separar a inteligência do equipamento que recebe o ataque | Appliance de limpeza dedicado, com quota de nós na licença |
Vigia de saúde: o desvio nunca vira buraco negro
O analyzer consulta o /health do scrubber a cada 10 s. Depois de 3 falhas seguidas, os desvios ativos são retirados e nenhum novo é anunciado. Na primeira resposta boa, tudo volta. O scrubber responde 503 se o filtro não subiu ou se o nó está fora da cota da licença.
- responde
- responde
- 1ª falha
- 2ª falha
- 3ª falha
- desvios retirados
- volta a desviar
Filtragem no driver da placa
O programa XDP do EdgeWarden roda antes da pilha de rede do Linux. Com o mapa vazio, a máquina se comporta como se o filtro não existisse, então dá para instalar sem risco. Qualquer falha resulta em passagem do pacote, nunca em descarte. Recurso do plano Enterprise.
Sanidade L3/L4
Descarta endereços martians, fragmentos e combinações de flags impossíveis.
Amplificação
Bloqueia 13 refletores conhecidos pela porta de origem e pelo tamanho mínimo do pacote.
13 refletoresRate limit por origem
Token bucket por endereço de origem, para botnets e refletores com IP real.
até 65.536 origensProteção SYN Novo
Descarta o primeiro SYN e libera quem retransmite, sem transformar o scrubber em refletor como faria um SYN cookie.
Limite por destino
Teto de tráfego por vítima, ajustável por cliente no Managed Object.
até 16.384 vítimasAssinaturas de conteúdo Novo
Assinaturas UDP de 4 ou 8 bytes mais porta, cadastradas pelo operador, com contador por assinatura.
até 1.024 assinaturasOs 13 refletores bloqueados no driver
Porta de origem UDP. QUIC em UDP/443 fica de fora de propósito: é tratado pelo detector QUIC e por FlowSpec.
- QOTD17
- chargen19
- DNS53
- portmap111
- NTP123
- NetBIOS137
- SNMP161
- CLDAP389
- RIPv1520
- SSDP1900
- WS-Discovery3702
- mDNS5353
- memcached11211
Modo observação. Com uma heurística desligada, o filtro conta o que descartaria sem descartar nada, e o painel Plano de dados mostra os acertos por heurística a cada minuto. Carpet bomb em IPv4 e IPv6 é tratado por prefixo, com a vítima procurada numa trie LPM.
Centro de limpeza 100G de referência
A implantação de referência usa um Dell PowerEdge R760 com duas placas NVIDIA/Mellanox ConnectX-6 Dx (4 portas de 100G), Debian 13 e kernel 6.12 LTS. Cada roteador recebe uma porta de 100G, ou 200G com LACP usando uma porta de cada placa, o que mantém o serviço mesmo se uma placa inteira cair.
- Arquitetura 100G/200G por roteador, com capacidade validada em cada implantação
- Descarte em dezenas de Mpps por porta com NIC de XDP nativo
- Caminho anti-loop por design: desvio
/32ou/128com community eNO_EXPORT; o tráfego limpo volta por uma tabela que nunca contém o desvio - Driver
mlx5padrão do kernel, sem instalar pacote do fabricante - NICs recomendadas: Mellanox ConnectX-5/6 e Intel E810 no topo de linha; X710, X520/X540 e ConnectX-4 no custo-benefício
Dois modos de implantação
| Item | Modo A: tudo no R760 | Modo B: analyzer separado recomendado |
|---|---|---|
| No R760 | Coletor, ClickHouse, MariaDB, interface, GoBGP e XDP | Só o core com XDP |
| BGP com a borda | O próprio R760 | O analyzer |
| Vigia de saúde | Não precisa | Obrigatório |
Bordas com template de caminho limpo
Uma porta por roteador, sujo e limpo no mesmo cabo; um filtro de entrada manda o limpo para a routing-instance CLEAN. IPv4 e IPv6.
Template VRP8 escrito a partir da documentação oficial, com uma porta suja e uma limpa. Ainda precisa de validação em laboratório.
Capacidade medida, não prometida. A capacidade de encaminhamento limpo é medida em cada implantação e registrada no sistema. O EdgeWarden só desvia até 80% do valor medido; acima disso, a decisão passa para scrubbing externo, FlowSpec no vetor e, por último, RTBH.
Protocolos abertos, fabricantes de verdade
Qualquer roteador que exporte flow e fale BGP FlowSpec ou RTBH é atendido pelas funções padrão. Os recursos específicos de fabricante estão listados abaixo, sem exagero.
Coleta e telemetria
- NetFlow v5
- NetFlow v9RFC 3954
- IPFIXRFC 7011
- sFlow v5
- SNMP v1/v2c/v3
- BMPRFC 7854
- libpcap · AF_PACKET v3
- AF_XDP · DPDKem breve
Mitigação
- BGP FlowSpecRFC 5575/8955
- RTBH
- GoBGPgRPC
- ExaBGP
- eBPF/XDP
- nftables
Validação de rota
- RPKI/RTR
- IRRRIPE · RADb
Túneis decodificados
- VxLAN
- GENEVE
- GRE
- L2TP
- IP-in-IP
- MPLS-in-UDP
| Fabricante | Flow e BGP padrão | Recursos específicos |
|---|---|---|
| JuniperJunOS, MX | Sim | FlowSpec e RTBH em produção, templates de scrubbing IPv4/IPv6, contadores de firewall (JUNIPER-FIREWALL-MIB), hardening de filtros estáticos, PBR via prefix-list, terminal SSH |
| HuaweiVRP8, NE40E/NE8000 | Sim | PBR via ACL e terminal SSH. Template de scrubbing escrito, aguardando validação em laboratório |
| MikroTikRouterOS | Sim | PBR via address-list e terminal SSH |
| CiscoIOS, IOS-XR | Sim | Terminal SSH no navegador. Sem PBR automático |
| Nokia, Arista e outros | Sim | Sem integração específica: funcionam por NetFlow/IPFIX/sFlow e BGP FlowSpec/RTBH |
Integre ao seu NOC, Zabbix, SIEM ou portal
API REST v1 documentada em OpenAPI/Swagger: 46 endpoints, chaves com escopo, restrição por IP e por cliente, limite de taxa e webhooks.
- Swagger UI embutido em
/api-docs, que funciona até em appliance sem internet - A chave aparece uma única vez; o servidor guarda só o hash SHA-256
- Escopos para tráfego, flows, ataques, violações, mitigações, Managed Objects, relatórios e sistema
- Aplique FlowSpec, RTBH, desvio ou scrubbing externo por
POST, com as mesmas travas da interface - Limite padrão de 120 requisições por minuto por chave, com resposta
429eRetry-After - Health check pronto para Zabbix em
/api/v1/system/health
# chave de exemplo: crie a sua em Configurações → Chaves de API export EW=https://edgewarden.example.net export FSK=fsk_a1b2c3d4e5f60718_SEU_SEGREDO curl -s -H "Authorization: Bearer $FSK" \ "$EW/api/v1/attacks?status=active&hours=1" { "data": [{ "target_ip": "203.0.113.9", "attack_type": "udp_flood", "severity": "high", "status": "active", "bytes_per_sec": 3750000000, "source_count": 18422, "zone_group": "AS65000-CLIENTES", "zone_cidr": "203.0.113.0/24" }], "pagination": { "page": 1, "total": 1 } }
A resposta acima é abreviada. Mitigações pedidas pela API entram como pending e o core aplica no ciclo seguinte, em cerca de 10 s.
O alerta chega sem ninguém perguntar
Cada Managed Object pode ter os próprios canais. Use a API para enriquecer o evento, não para descobrir o ataque.
- Syslog e SIEMEventos em
CEF,JSONouRFC 5424, por UDP ou TCP. - SNMP Trap v2cPara Zabbix, PRTG, LibreNMS e SolarWinds, com codificação que aguenta rajadas.
- TelegramAlvo, vetor e ação tomada, direto no grupo do NOC.
- E-mailPelo seu SMTP, com relatórios agendados e boletins do Analista de Ataques.
- WebhookEvento
attack_detectedem JSON para o seu sistema. - Slack e TeamsPelo webhook de entrada do canal.
Sua rede não para porque um servidor de licença caiu
Licenciamento
- Licença assinada com Ed25519 e verificada offline
- Heartbeat a cada 24 h e 30 dias de carência sem contato com o servidor
- Identificação de hardware que resiste a bond, LACP e VLAN
- O binário é o mesmo em todos os planos; a licença libera os recursos e a quota de roteadores e de nós de limpeza
O próprio servidor
- Os serviços rodam como
www-data, sem sudo, só com as capabilities necessárias:CAP_NET_RAWCAP_NET_BIND_SERVICECAP_BPFCAP_NET_ADMIN - Credenciais de roteador cifradas com AES-256-GCM; o SSH para a borda é feito em Rust puro
- Segredo de sessão único gerado em cada instalação
- Firewall do próprio servidor em nftables, editável pela interface
- Atualização conferida por
sha256sum, preservando configuração e logs, com rollback
Dimensionamento recomendado
Escolha o tier pelo volume de flows da sua rede. O guia de instalação traz os comandos de cada etapa, do sysctl ao HTTPS.
| Recurso | SmallISP regional | Medium recomendadoISP / DC médio | EnterpriseTier-1 / DC grande |
|---|---|---|---|
| Volume | Até 20K flows/s, redes até ~5 Gbps | Até 50K flows/s, redes até ~20 Gbps | 100K+ flows/s, redes de 40 Gbps+ |
| CPU | 8 cores (Xeon / EPYC) | 16 cores (Xeon Scalable / EPYC) | 32+ cores (EPYC / Xeon Platinum) |
| RAM | 32 GB DDR4 | 64 GB DDR4 ECC | 128+ GB DDR4/DDR5 ECC |
| Disco | 500 GB NVMe SSD | 2 TB NVMe SSD | 4+ TB NVMe (RAID 10) |
| Rede | 1 Gbps | 10 Gbps | 25 / 40 / 100 Gbps |
| Sistema | Debian 13+ (Trixie) | Debian 13+ (Trixie) | Debian 13+ (Trixie) |
- eBPF/XDP: o Debian 13 já traz kernel 6.x; use NIC com XDP nativo (Mellanox ou Intel recomendadas).
- ClickHouse: a partir do tier Medium, separe-o num servidor dedicado.
- Retenção: dimensione o disco pelo período de retenção desejado (compressão de cerca de 10:1).
- Alta disponibilidade: no Enterprise, recomenda-se cluster com 2 ou mais nós.
Arquitetura conferida. Vamos para a sua rede?
Mostramos o EdgeWarden rodando com os flows dos seus roteadores, e você recebe uma licença demo com todos os recursos Enterprise por 7 dias.