Por que IPFIX com inline J-Flow
Nos Juniper MX com placas MPC (Trio), o inline J-Flow amostra os pacotes e monta os flows no próprio Packet Forwarding Engine, sem placa de serviço. A exportação sai em IPFIX ou NetFlow v9, com IPv6, ASN de origem e destino e o índice das interfaces de entrada e saída. É com esses campos que o EdgeWarden identifica o destino atacado, o protocolo e a interface por onde o ataque entra.
Você vai configurar templates IPFIX para IPv4 e IPv6, a instância de amostragem que exporta para 192.0.2.10:2055, a FPC, as interfaces de borda e o SNMP, e depois conferir tudo no roteador e no EdgeWarden.
Pré-requisitos
- Juniper MX com chipset Trio e Junos OS. O que muda por versão está indicado no texto.
- Next Gen Services desativado: com ele ligado, o MX não faz inline J-Flow.
- Um endereço de origem estável para a exportação, de preferência a loopback (
198.51.100.1nos exemplos), com rota até o coletor pela rede de dados. O MX não exporta flow inline pela interface de gerênciafxp0. - Porta 2055/UDP liberada no servidor do EdgeWarden.
- Vaga na licença: cada IP de origem conta como um exportador (Starter 1, Professional 2, Enterprise 10); acima da cota, os flows são descartados sem aviso na tela.
Passo 1: templates IPFIX
Crie um template por família. Os timeouts aceitam de 10 a 600 segundos (padrão 60).
set services flow-monitoring version-ipfix template ew-ipv4 ipv4-template
set services flow-monitoring version-ipfix template ew-ipv4 flow-active-timeout 60
set services flow-monitoring version-ipfix template ew-ipv4 flow-inactive-timeout 15
set services flow-monitoring version-ipfix template ew-ipv4 template-refresh-rate seconds 60
set services flow-monitoring version-ipfix template ew-ipv4 option-refresh-rate seconds 60
set services flow-monitoring version-ipfix template ew-ipv6 ipv6-template
set services flow-monitoring version-ipfix template ew-ipv6 flow-active-timeout 60
set services flow-monitoring version-ipfix template ew-ipv6 flow-inactive-timeout 15
set services flow-monitoring version-ipfix template ew-ipv6 template-refresh-rate seconds 60
set services flow-monitoring version-ipfix template ew-ipv6 option-refresh-rate seconds 60O active timeout define de quanto em quanto tempo um flow longo, como o de um ataque, é exportado, e se soma ao ciclo de análise do EdgeWarden (10 s por padrão). 60 s é a recomendação comum; menos detecta mais cedo e gera mais exportação. O template refresh padrão é 600 s: depois de reiniciar o coletor, os dados só são decodificados quando o template chega de novo. Com 60 s, a espera cai para um minuto.
Passo 2: instância de amostragem
set forwarding-options sampling instance ew-sampling input rate 1000
set forwarding-options sampling instance ew-sampling family inet output flow-server 192.0.2.10 port 2055
set forwarding-options sampling instance ew-sampling family inet output flow-server 192.0.2.10 version-ipfix template ew-ipv4
set forwarding-options sampling instance ew-sampling family inet output inline-jflow source-address 198.51.100.1
set forwarding-options sampling instance ew-sampling family inet output inline-jflow flow-export-rate 10
set forwarding-options sampling instance ew-sampling family inet6 output flow-server 192.0.2.10 port 2055
set forwarding-options sampling instance ew-sampling family inet6 output flow-server 192.0.2.10 version-ipfix template ew-ipv6
set forwarding-options sampling instance ew-sampling family inet6 output inline-jflow source-address 198.51.100.1
set forwarding-options sampling instance ew-sampling family inet6 output inline-jflow flow-export-rate 10input rate 1000amostra 1 de cada 1.000 pacotes. Anote esse valor: ele vai para o cadastro do dispositivo.- Use o mesmo
source-addressnas duas famílias. O EdgeWarden identifica o exportador pelo IP de origem; assim o MX ocupa uma vaga da licença e um único cadastro. - Coletor e origem ficam em IPv4 também na família
inet6: os flows IPv6 viajam em pacotes IPv4. A documentação da Juniper só registra endereço IPv6 emflow-serveresource-addressa partir do Junos OS Evolved 23.1R1, em roteadores PTX. flow-export-rateé em milhares de pacotes por segundo e vale para a FPC inteira (padrão 1, pouco para uma borda sob ataque). O teto depende do chip: 100 por PFE com chip LU (200 numa MPC2, que tem dois) e 800 por PFE XL/EA. Valor acima do suportado é aceito no commit, mas pode gerar erro no log do Junos.
Prefere NetFlow v9? Troque version-ipfix por version9 nos templates e nas linhas flow-server. No inline J-Flow, o v9 para IPv6 só existe a partir do Junos 18.1R1.
Passo 3: associar a instância à FPC
Sem isso a instância fica inativa. Cada FPC aceita uma instância; repita para cada FPC com interface amostrada.
set chassis fpc 0 sampling-instance ew-sampling
set chassis fpc 0 inline-services flow-table-size ipv4-flow-table-size 8
set chassis fpc 0 inline-services flow-table-size ipv6-flow-table-size 4No MX5, MX10, MX40 e MX80 use set chassis tfeb slot 0 sampling-instance ew-sampling; no MX104, set chassis afeb slot 0 sampling-instance ew-sampling.
Cada unidade de flow-table-size vale 256K entradas. Desde o Junos 16.1R1 e 15.1F2 as tabelas IPv4 e IPv6 nascem com só 1.024 entradas cada, pouco para uma borda sob ataque com origens forjadas. O máximo por tabela depende da placa (Junos 17.3R1 ou mais novo): 15 unidades nas MPC2E, MPC3E e MPC4E, 48 nas MPC7E e 220 nas MPC5E e MPC6E.
Antes do Junos 16.1R1 e 15.1F2, mudar flow-table-size reinicia a FPC. Nessas versões, faça a alteração em janela de manutenção.
Passo 4: amostragem nas interfaces
Amostre a entrada das interfaces de trânsito e PTT, por onde o ataque chega. Para ver ataques saindo de clientes, amostre também a entrada das interfaces deles.
set interfaces xe-0/0/0 unit 0 family inet sampling input
set interfaces xe-0/0/0 unit 0 family inet6 sampling input
set interfaces xe-0/0/1 unit 0 family inet sampling input
set interfaces xe-0/0/1 unit 0 family inet6 sampling input
commit check
commit confirmed 10
commitSe a interface já tem filtro de entrada, a alternativa é um termo com then sample e then accept nesse filtro.
Passo 5: SNMP para o nome das interfaces
Os flows trazem o ifIndex; nome e capacidade da interface vêm por SNMP. Sem SNMP, a interface some da tela de Interfaces.
set snmp community ew-readonly authorization read-only
set snmp community ew-readonly clients 192.0.2.10/32Use uma community longa ou SNMPv3, e libere UDP 161 a partir de 192.0.2.10 se houver filtro na lo0. A amostragem é configurada na unidade, e o ifIndex que vai no flow é o da interface lógica (xe-0/0/0.0), não o da porta física. Para cruzar um ifIndex com a interface:
show interfaces xe-0/0/0 | match "SNMP ifIndex"
Interface index: 148, SNMP ifIndex: 526
Logical interface xe-0/0/0.0 (Index 333) (SNMP ifIndex 527)Conferência no roteador
Segundo a Juniper, os flows só começam a ser criados após a sincronização dos route records, cerca de 120 s depois do commit.
show services accounting status inline-jflow fpc-slot 0
FPC Slot: 0
IPV4 export format: Version-IPFIX, IPV6 export format: Version-IPFIX
Route-Records Set: Yes, Config Set: Yes
Service Status: PFE-0: Steady
show services accounting flow inline-jflow fpc-slot 0
Flow information
FPC Slot: 0
Flow Packets: 1843220, Flow Bytes: 1503127744
Active Flows: 20915, Total Flows: 611043
Flows Exported: 590128, Flow Packets Exported: 21870
Flows Inactive Timed Out: 561200, Flows Active Timed Out: 28928
show services accounting errors inline-jflow fpc-slot 0
Error information
FPC Slot: 0
Flow Creation Failures: 0
Route Record Lookup Failures: 0, AS Lookup Failures: 0
Export Packet Failures: 0
Memory Overload: No, Memory Alloc Fail Count: 0Config Set: Yes e Route-Records Set: Yes mostram que a instância chegou à FPC. Em versões mais novas, a mesma saída traz IPv4 MAX FLOW Count e IPv6 MAX FLOW Count: compare antes e depois do passo 3 para confirmar que o novo tamanho de tabela entrou. Flows Exported precisa crescer a cada execução. Flow Creation Failures subindo ou Memory Overload: Yes indicam tabela de flow pequena.
Conferência no EdgeWarden
- Em Configurações → Rede → Dispositivos, cadastre o MX com Endereço IP
198.51.100.1(osource-address), Taxa de Amostragem de Flow1000e os dados de SNMP. - Na lista, a coluna SNMP deve mostrar Online e a coluna Tráfego atual deve sair do traço.
- A coluna Amostragem mostra detectado quando o roteador anuncia a taxa por Options Template, e esse valor vence o cadastro; manual quando vale o cadastro. Se aparecer
cadastro: 1:N (ignorado), corrija o cadastro para o valor anunciado. - Em 1 a 2 minutos depois que o roteador começar a exportar, os flows aparecem na tela Flows. Filtre por Exporter IP
198.51.100.1. Os valores já vêm multiplicados pela taxa. - Valide a taxa no painel Fluxo × SNMP nas interfaces da tela Análise do instante (menu Tráfego → Análise do instante, ou clique num ponto de um gráfico de tráfego): 1/N do SNMP indica taxa faltando; N×, taxa aplicada duas vezes.
Se nada chegar, rode no servidor tcpdump -i any -n udp port 2055 and host 198.51.100.1 e acompanhe journalctl -u flowspec-core -f.
Armadilhas comuns
- Origem diferente do cadastro: as interfaces aparecem como
if:527e o tráfego por interface some. - Instância sem FPC: interfaces numa FPC sem
sampling-instancenão geram flow. - sFlow e inline J-Flow na mesma interface: comportamento imprevisível, segundo a Juniper.
- LAG na saída: na amostragem de entrada, se a interface de saída é um
ae, o MX reporta a interface de saída como inválida. - Campos fixos: o template do MX traz flags TCP (IE 6) e TTL mínimo e máximo (IE 52/53), mas não
fragmentOffset/fragmentFlags(IE 88/197), e nenhum template IPFIX do MX documentado pela Juniper os inclui. OfragmentIdentification(IE 54) que ele exporta não diz se o pacote é fragmento. O detector de Fragment Flood fica cego para o tráfego do MX; se só MX exporta para o EdgeWarden, o log avisa que o detector ficou inerte. - ECMP: quando o destino tem vários caminhos, o MX informa o primeiro caminho em IPv4 e zera interface de saída e next-hop em IPv6. A correção é o aprendizado de next-hop (Junos 15.1F2 ou mais novo), mostrado abaixo.
set services flow-monitoring version-ipfix template ew-ipv4 nexthop-learning enable
set services flow-monitoring version-ipfix template ew-ipv6 nexthop-learning enableQuem alcança a 2055/UDP pode injetar flows forjados e envenenar a detecção. Restrinja a porta aos IPs dos roteadores.
Próximos passos
Ainda em dúvida entre IPFIX, NetFlow v9 e sFlow? Veja NetFlow v5, v9, IPFIX ou sFlow: qual exportar. Se algum passo falhar, siga o checklist Nenhum flow aparece no EdgeWarden?. Revise portas e buffers no guia de instalação e veja em Recursos como o EdgeWarden usa esses flows para detectar ataques.