Introdução
Em redes de provedores, datacenters e ambientes corporativos, nem todo tráfego relevante passa por portas conhecidas como 80, 443, 53, 22 ou 25.
Aplicações P2P, jogos online, sistemas proprietários, túneis, tráfego lateral e alguns padrões de ataque podem utilizar portas altas tanto na origem quanto no destino.
No Wanguard, é possível criar Custom Decoders para classificar esse tipo de tráfego com mais precisão. Neste artigo, vamos detalhar a configuração do decoder TCP-1024, criado para identificar tráfego TCP onde:
protocolo = TCP
porta de origem >= 1024
porta de destino >= 1024
Esse decoder pode ser usado em sensores de fluxo, sensores de pacote, filtros DPDK, filtros Netfilter e integrações de mitigação com BGP FlowSpec via GoBGP ou ExaBGP.
Objetivo do decoder TCP-1024
O objetivo do decoder TCP-1024 é classificar conexões TCP que utilizam portas altas nos dois lados da comunicação.
Em termos práticos, ele identifica tráfego com o seguinte perfil:
Protocolo: TCP
Porta de origem: 1024 até 65535
Porta de destino: 1024 até 65535
Exemplo de tráfego que será classificado por esse decoder:
Origem: 198.51.100.10:54321
Destino: 203.0.113.20:27015
Protocolo: TCP
Exemplo de tráfego que não será classificado por esse decoder:
Origem: 198.51.100.10:54321
Destino: 203.0.113.20:443
Protocolo: TCP
No segundo exemplo, apesar da porta de origem ser alta, a porta de destino é 443. Portanto, o tráfego não atende ao critério do decoder, pois as duas portas precisam ser maiores ou iguais a 1024.
Visão geral da configuração
A configuração principal do decoder é:
| Campo | Valor |
|---|---|
| Decoder Name | TCP-1024 |
| Decoder Description | TCP PORTAS ALTAS 1024 |
| Included Decoders | IP, TCP |
| Conflicting Decoders | IP, TCP |
| Filter Engine | Generic IPv4/IPv6 |
Essa estrutura indica que o tráfego classificado pelo decoder é um subconjunto de TCP e IP, podendo ser analisado tanto em IPv4 quanto em IPv6.
Flow Matching Expressions
As Flow Matching Expressions são usadas quando o Wanguard recebe estatísticas por fluxo, como NetFlow, IPFIX ou sFlow.
Flow Syntax
proto 6 and src port ge 1024 and dst port ge 1024
Explicação:
| Expressão | Significado |
|---|---|
proto 6 | Filtra apenas tráfego TCP |
src port ge 1024 | Porta de origem maior ou igual a 1024 |
dst port ge 1024 | Porta de destino maior ou igual a 1024 |
and | Todas as condições precisam ser verdadeiras |
O protocolo TCP é representado pelo número 6 no cabeçalho IP. O operador ge significa greater than or equal, ou seja, maior ou igual.
Isso significa que a porta 1024 também é incluída na classificação. Usar gt 1024 seria diferente, pois excluiria a porta 1024.
GoBGP Syntax
Quando o Wanguard utiliza o GoBGP como conector BGP para anúncio de regras FlowSpec, a sintaxe configurada é:
source-port >=1024 destination-port >=1024 protocol tcp
Essa expressão informa ao conector que a regra FlowSpec deve casar:
protocolo TCP
porta de origem >= 1024
porta de destino >= 1024
Essa configuração é útil quando a mitigação precisa ser instalada diretamente nos roteadores de borda, reduzindo o tráfego indesejado antes que ele chegue ao destino protegido.
Observação: em alguns ambientes, dependendo da versão do conector e do parser utilizado, pode ser necessário representar o protocolo como número (
protocol 6) em vez de nome (protocol tcp). A validação deve ser feita no ambiente antes da ativação automática.
ExaBGP Syntax
Para ambientes que utilizam ExaBGP como conector BGP, a sintaxe equivalente é:
protocol [6]; source-port [>=1024]; destination-port [>=1024];
Explicação:
| Expressão | Significado |
|---|---|
protocol [6] | Protocolo TCP |
source-port [>=1024] | Porta de origem maior ou igual a 1024 |
destination-port [>=1024] | Porta de destino maior ou igual a 1024 |
Atenção: não basta filtrar apenas protocol [6], pois isso corresponderia a todo tráfego TCP. Para manter o decoder coerente, as condições de porta precisam estar presentes.
Packet Matching Expressions
As Packet Matching Expressions são usadas quando o Wanguard analisa pacotes individualmente, por exemplo em cenários com:
- Packet Sensor
- Packet Filter
- Port mirror
- TAP
- PF_RING
- libpcap
- DPDK
BPF Syntax
A expressão BPF configurada é:
tcp && src portrange 1024-65535 && dst portrange 1024-65535
Essa sintaxe segue a lógica usada em ferramentas como tcpdump.
Explicação:
| Expressão | Significado |
|---|---|
tcp | Filtra apenas pacotes TCP |
src portrange 1024-65535 | Porta de origem entre 1024 e 65535 |
dst portrange 1024-65535 | Porta de destino entre 1024 e 65535 |
&& | Todas as condições precisam ser verdadeiras |
Um teste equivalente em uma interface Linux seria:
tcpdump -ni <interface> 'tcp && src portrange 1024-65535 && dst portrange 1024-65535'
Esse teste pode ser usado para validar se o tráfego esperado está chegando na interface monitorada antes de ativar políticas de mitigação automáticas.
ACL Syntax for IPv4 com DPDK
Quando o Wanguard Filter opera com DPDK, a expressão ACL IPv4 configurada é:
0.0.0.0/0 0.0.0.0/0 1024-65535 1024-65535 6-6 0/0x0 0/0x0 0-65535
Explicação dos campos:
| Campo | Valor | Significado |
|---|---|---|
| Rede de origem | 0.0.0.0/0 | Qualquer origem IPv4 |
| Rede de destino | 0.0.0.0/0 | Qualquer destino IPv4 |
| Porta de origem | 1024-65535 | Portas altas de origem |
| Porta de destino | 1024-65535 | Portas altas de destino |
| Protocolo | 6-6 | Apenas TCP |
| Flags/mask | 0/0x0 | Sem filtro específico por flags |
| Flags/mask | 0/0x0 | Sem máscara específica |
| TCP flags range | 0-65535 | Sem restrição adicional por flags TCP |
Essa regra não restringe IP de origem, IP de destino ou flags TCP. O critério principal é o protocolo TCP com portas altas nos dois lados.
Correção aplicada: não é recomendado afirmar de forma absoluta que a ACL DPDK exige duas linhas idênticas para este decoder. Caso a versão específica do Wanguard ou o template do ambiente exija duas entradas para cobrir direções distintas, siga o padrão validado no próprio ambiente. Para a lógica do decoder apresentada aqui, a linha acima representa a condição desejada.
ACL Syntax for IPv6 com DPDK
A versão equivalente para IPv6 é:
::/0 ::/0 1024-65535 1024-65535 6-6 0/0x0 0/0x0 0-65535
Explicação:
| Campo | Valor | Significado |
|---|---|---|
| Rede de origem | ::/0 | Qualquer origem IPv6 |
| Rede de destino | ::/0 | Qualquer destino IPv6 |
| Porta de origem | 1024-65535 | Portas altas de origem |
| Porta de destino | 1024-65535 | Portas altas de destino |
| Protocolo | 6-6 | Apenas TCP |
Esse ponto é importante em redes de provedores, pois o tráfego IPv6 pode representar uma parcela relevante dos assinantes. Se o ambiente possui IPv6 ativo, o decoder deve estar corretamente definido também para IPv6.
Netfilter Expression
Para cenários em que o Wanguard Filter utiliza Netfilter/iptables no kernel Linux, a expressão recomendada é:
-p tcp -m tcp --sport 1024:65535 --dport 1024:65535
Essa expressão mantém a mesma lógica do decoder:
| Expressão | Significado |
|---|---|
-p tcp | Filtra apenas protocolo TCP |
-m tcp | Usa o módulo TCP do iptables |
--sport 1024:65535 | Porta de origem entre 1024 e 65535 |
--dport 1024:65535 | Porta de destino entre 1024 e 65535 |
A vantagem dessa forma é a simplicidade. Como há apenas um range de porta de origem e um range de porta de destino, não há necessidade de usar multiport.
Caso seja utilizado multiport, é necessário tomar cuidado para não aplicar uma lógica diferente da desejada. O decoder precisa casar tráfego onde as duas condições sejam verdadeiras ao mesmo tempo:
porta de origem alta
E
porta de destino alta
Included Decoders
IP, TCP
O decoder TCP-1024 é um subconjunto do tráfego TCP, e TCP é um subconjunto de IP. Por isso, faz sentido manter IP e TCP como decoders incluídos.
Essa configuração ajuda o Wanguard a organizar corretamente a contabilização em gráficos, relatórios e estatísticas.
Conflicting Decoders
IP, TCP
Como o tráfego TCP-1024 também pode ser classificado genericamente como TCP, existe sobreposição com decoders mais amplos.
O campo Conflicting Decoders ajuda a evitar interpretação incorreta em gráficos empilhados e classificações simultâneas. Na prática, isso evita que o mesmo tráfego seja interpretado de forma duplicada ou confusa em determinadas visualizações.
Filter Engine
Generic IPv4/IPv6
A opção Generic IPv4/IPv6 é adequada porque o decoder foi definido tanto para IPv4 quanto para IPv6.
Essa escolha permite que o Wanguard aplique a lógica do decoder nas duas pilhas de protocolo, desde que os sensores e filtros estejam corretamente configurados.
Exemplos práticos de uso
Exemplo 1: tráfego de jogo online em porta alta
Cenário:
Cliente: 198.51.100.10:52144
Servidor: 203.0.113.50:27015
Protocolo: TCP
Análise:
porta de origem = 52144
porta de destino = 27015
ambas >= 1024
protocolo = TCP
Resultado: o tráfego casa com o decoder TCP-1024.
Esse tipo de classificação pode ajudar na identificação de aplicações que não utilizam portas conhecidas e que geram grande volume de tráfego em portas altas.
Exemplo 2: acesso HTTPS comum
Cenário:
Cliente: 198.51.100.10:52144
Servidor: 203.0.113.80:443
Protocolo: TCP
Análise:
porta de origem = 52144
porta de destino = 443
somente a origem é >= 1024
Resultado: o tráfego não casa com o decoder TCP-1024.
Isso é esperado. O decoder não foi criado para classificar HTTPS padrão, pois HTTPS normalmente utiliza a porta 443 no lado do servidor.
Exemplo 3: ataque TCP com portas altas
Cenário:
Origem: múltiplos IPs externos
Destino: 203.0.113.100
Portas de origem: aleatórias acima de 1024
Portas de destino: aleatórias acima de 1024
Protocolo: TCP
Sintoma: aumento anormal de pacotes por segundo
Nesse caso, o decoder TCP-1024 pode ajudar a separar esse tráfego do TCP convencional em portas conhecidas.
Uma política de mitigação poderia considerar:
decoder = TCP-1024
destino = IP atacado
pps acima do baseline
bps acima do baseline
fluxos por segundo acima do normal
duração mínima da anomalia
A mitigação pode ser feita com rate-limit, discard, redirect para scrubbing ou anúncio FlowSpec, dependendo da política operacional da rede.
Exemplo 4: mitigação seletiva por FlowSpec
Em vez de bloquear todo TCP contra o IP atacado, a rede pode aplicar uma regra mais específica:
protocolo TCP
source-port >= 1024
destination-port >= 1024
destino = IP atacado
ação = rate-limit ou discard
Esse tipo de mitigação é mais seguro do que uma regra TCP genérica, pois reduz o escopo da ação e evita impactar serviços legítimos em portas conhecidas.
Mesmo assim, é essencial validar o comportamento do tráfego antes de ativar mitigação automática.
Cuidados operacionais
Apesar de útil, o decoder TCP-1024 é amplo. Portas altas são comuns em aplicações legítimas, especialmente em jogos, P2P, sistemas proprietários, conexões entre aplicações e alguns serviços internos.
Por isso, a recomendação é não usar esse decoder isoladamente como critério único de bloqueio.
O ideal é combinar o decoder com outros indicadores, como:
- IP de destino atacado
- volume em bits por segundo
- pacotes por segundo
- fluxos por segundo
- TCP flags
- ASN de origem
- país de origem
- baseline histórico
- threshold por IP Zone
- tipo de serviço do cliente
Também é recomendável validar o comportamento em modo passivo antes de habilitar ações automáticas.
Validação técnica das expressões
| Campo | Status | Observação |
|---|---|---|
| Flow Syntax | Correta | proto 6 and src port ge 1024 and dst port ge 1024 está coerente com a lógica do decoder. |
| GoBGP Syntax | Correta | source-port >=1024 destination-port >=1024 protocol tcp está coerente. Validar se o ambiente aceita tcp ou exige 6. |
| ExaBGP Syntax | Correta | protocol [6]; source-port [>=1024]; destination-port [>=1024]; está coerente. |
| BPF Syntax | Correta | Casa TCP com origem e destino no range 1024-65535. |
| ACL IPv4 DPDK | Correta | Representa qualquer origem/destino IPv4, portas altas nos dois lados e protocolo TCP. |
| ACL IPv6 DPDK | Correta | Mesma lógica da IPv4, usando ::/0. |
| Netfilter Expression | Ajustada | Recomendada: -p tcp -m tcp --sport 1024:65535 --dport 1024:65535. |
Resumo das expressões
| Campo | Expressão |
|---|---|
| Flow Syntax | proto 6 and src port ge 1024 and dst port ge 1024 |
| GoBGP Syntax | source-port >=1024 destination-port >=1024 protocol tcp |
| ExaBGP Syntax | protocol [6]; source-port [>=1024]; destination-port [>=1024]; |
| BPF Syntax | tcp && src portrange 1024-65535 && dst portrange 1024-65535 |
| ACL IPv4 DPDK | 0.0.0.0/0 0.0.0.0/0 1024-65535 1024-65535 6-6 0/0x0 0/0x0 0-65535 |
| ACL IPv6 DPDK | ::/0 ::/0 1024-65535 1024-65535 6-6 0/0x0 0/0x0 0-65535 |
| Netfilter | -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 |
Conclusão
O decoder TCP-1024 é uma configuração útil para classificar tráfego TCP em portas altas, tanto em IPv4 quanto em IPv6.
Ele pode ser aplicado em cenários de monitoramento, análise de anomalias, mitigação com Packet Filter, mitigação com DPDK e anúncios BGP FlowSpec via GoBGP ou ExaBGP.
A principal vantagem é permitir uma classificação mais específica do tráfego TCP, evitando que todo tráfego TCP seja tratado da mesma forma durante uma anomalia.
Por outro lado, a principal cautela é evitar ações agressivas sem validação. Como portas altas também são utilizadas por tráfego legítimo, a mitigação deve considerar volume, comportamento, destino atacado, baseline e impacto operacional.
Antes de ativar mitigação automática, valide o decoder em modo passivo, confira os gráficos, analise os tops de origem/destino e confirme se o tráfego classificado realmente corresponde ao padrão esperado.
Flowspec Solutions
Segurança, visibilidade e mitigação DDoS para provedores e redes críticas.
Flowspec Solutions
_ _
°v° 🐧😎
/(_)\ https://flowspec.net.br
^ ^


