Cisco Flexible NetFlow com IPFIX no IOS-XE e no IOS-XR para o EdgeWarden

Flow record, exporter, monitor e sampler no IOS-XE, mapas no IOS-XR, timeouts certos e como validar a coleta no roteador e no EdgeWarden.

O que você vai configurar

Este guia mostra como configurar o Flexible NetFlow (FNF) de um roteador Cisco para exportar IPFIX, ou NetFlow v9, ao coletor do EdgeWarden. No IOS-XE você monta quatro peças: flow record, flow exporter, flow monitor e sampler. No IOS-XR as mesmas ideias viram mapas: flow exporter-map, flow monitor-map e sampler-map.

O foco é o que pesa na detecção de DDoS: interfaces de entrada e saída, flags TCP, taxa de amostragem anunciada pelo próprio roteador e timeouts curtos. Com os padrões de fábrica, um flow longo pode levar 30 minutos para ser exportado, e o ataque aparece quando já é tarde.

O EdgeWarden atende Cisco pelos padrões: coleta por NetFlow v9 ou IPFIX e mitigação por BGP FlowSpec ou RTBH. Integrações específicas de fabricante (PBR, templates e contadores) existem hoje para Juniper, Huawei e MikroTik. Para Cisco IOS e IOS-XR, o recurso específico é o terminal SSH aberto a partir do cadastro do dispositivo.

Pré-requisitos

  • Coletor do EdgeWarden alcançável a partir do roteador. Neste exemplo, 192.0.2.10, porta 2055/UDP: NetFlow v5, v9 e IPFIX usam a mesma porta.
  • Uma loopback com IP estável como origem da exportação. Aqui, Loopback0 com 198.51.100.1. É esse IP que você vai cadastrar no EdgeWarden.
  • IOS-XE com export-protocol ipfix. O recurso "Flexible NetFlow: IPFIX Export Format" entrou no IOS XE 3.7S; em plataformas ou versões sem IPFIX, use netflow-v9, que o EdgeWarden coleta do mesmo jeito.
  • SNMP liberado do servidor do EdgeWarden para o roteador, para dar nome às interfaces e medir capacidade.
  • Uma vaga na cota de exportadores da licença: Starter 1, Professional 2, Enterprise 10.

Passo 1: flow record no IOS-XE

O record define o que é chave do flow (match) e o que é só contado (collect). Para DDoS, use como chave endereços, protocolo, portas, ToS e interface de entrada; colete interface de saída, flags TCP, TTL mínimo, campos de fragmentação, contadores de 64 bits e timestamps. O IPv6 precisa de um record próprio.

IOS-XE: flow records IPv4 e IPv6
flow record EW-REC-V4
 match ipv4 tos
 match ipv4 protocol
 match ipv4 source address
 match ipv4 destination address
 match transport source-port
 match transport destination-port
 match interface input
 collect interface output
 collect transport tcp flags
 collect ipv4 ttl minimum
 collect ipv4 fragmentation flags
 collect ipv4 fragmentation offset
 collect counter bytes long
 collect counter packets long
 collect timestamp sys-uptime first
 collect timestamp sys-uptime last
!
flow record EW-REC-V6
 match ipv6 protocol
 match ipv6 source address
 match ipv6 destination address
 match transport source-port
 match transport destination-port
 match interface input
 collect interface output
 collect transport tcp flags
 collect counter bytes long
 collect counter packets long
 collect timestamp sys-uptime first
 collect timestamp sys-uptime last

No record IPv4, o TTL mínimo e os campos de fragmentação alimentam os detectores de variação de TTL (anti-spoofing) e de fragment flood. Sem eles, o EdgeWarden avisa que esses detectores ficaram sem dado. Nem toda plataforma IOS-XE aceita todos os collect; se alguma linha for recusada, remova só ela.

Se preferir não montar o record, os registros predefinidos record netflow ipv4 original-input e record netflow ipv6 original-input no flow monitor também servem, mas não trazem TTL mínimo nem fragmentação.

Passo 2: flow exporter

IOS-XE: flow exporter IPFIX
flow exporter EW-EXP
 destination 192.0.2.10
 source Loopback0
 transport udp 2055
 export-protocol ipfix
 template data timeout 60
 option interface-table timeout 300
 option sampler-table timeout 60

Três padrões de fábrica precisam ser trocados aqui:

  • transport udp: sem ele, o exporter usa a porta 9995, e o coletor escuta na 2055.
  • export-protocol: o padrão é netflow-v9. Funciona, mas IPFIX é o formato que entrega mais campos ao EdgeWarden.
  • template data timeout: o padrão é 600 s. Sem template o coletor não decodifica os registros, então, depois de um reinício do coletor, você ficaria até 10 minutos sem dados.

O option sampler-table envia a tabela de amostragem por Options Template. Quando o EdgeWarden associa essa tabela aos flows, a taxa anunciada vence o cadastro manual. Mesmo assim, cadastre a taxa no dispositivo: o EdgeWarden aplica a taxa anunciada aos flows do mesmo observation domain, e, se a tabela de sampler não chegar ou vier por outro domain, quem vale é o cadastro. Isso acontece na prática: há capturas de um C8000V com IOS XE 17.18 em que a tabela de sampler sai num observation domain diferente do dos flows. O option interface-table envia o mapa de ifIndex para nome de interface; o EdgeWarden nomeia as interfaces pelo SNMP, então essa linha é opcional.

Passo 3: sampler e flow monitor

IOS-XE: sampler e flow monitors
sampler EW-SAMP
 mode random 1 out-of 1000
!
flow monitor EW-MON-V4
 record EW-REC-V4
 exporter EW-EXP
 cache timeout active 60
 cache timeout inactive 15
!
flow monitor EW-MON-V6
 record EW-REC-V6
 exporter EW-EXP
 cache timeout active 60
 cache timeout inactive 15

O cache timeout active padrão é 1800 s. Com 60 s, um ataque em curso é reportado a cada minuto; valores menores detectam mais rápido, mas aumentam CPU e volume de exportação. O inativo de 15 s já é o padrão e está aqui só para ficar explícito.

A faixa do mode random 1 out-of varia por plataforma: a referência de comandos do IOS cita 2 a 32768, e os switches Catalyst documentam faixas menores. Em bordas de 10G a 100G, 1:1000 é um ponto de partida comum.

Passo 4: aplicar nas interfaces

IOS-XE: monitor e sampler na interface
interface GigabitEthernet0/0/1
 ip flow monitor EW-MON-V4 sampler EW-SAMP input
 ipv6 flow monitor EW-MON-V6 sampler EW-SAMP input

Aplique input em todas as interfaces que interessam: trânsito, IX e clientes. Assim cada pacote é contado uma vez, na porta onde entra, e você enxerga tanto o ataque que chega quanto o cliente que vira refletor.

Passo 5: o equivalente no IOS-XR

No IOS-XR, a versão do protocolo é um submodo do exporter-map, e as opções e o template ficam dentro dele.

IOS-XR: exporter-map, monitor-map e sampler-map
flow exporter-map EW-EXP
 version ipfix
  template data timeout 60
  options interface-table timeout 300
  options sampler-table timeout 60
 !
 transport udp 2055
 source Loopback0
 destination 192.0.2.10
!
flow monitor-map EW-MON-V4
 record ipv4
 exporter EW-EXP
 cache timeout active 60
 cache timeout inactive 15
!
flow monitor-map EW-MON-V6
 record ipv6
 exporter EW-EXP
 cache timeout active 60
 cache timeout inactive 15
!
sampler-map EW-SAMP
 random 1 out-of 1000
!
interface TenGigE0/0/0/1
 flow ipv4 monitor EW-MON-V4 sampler EW-SAMP ingress
 flow ipv6 monitor EW-MON-V6 sampler EW-SAMP ingress
!
commit

Diferenças que importam no IOS-XR:

  • Sem o comando options, as tabelas de opções não são exportadas (timeout 0). No IPFIX do IOS-XR, o registro da tabela de sampler leva o N de 1 em N no IE 305, sem o IE 306; os IEs 309 e 310 só entraram nas releases 7.8.2 e 7.9.1 (defeito CSCwe26529). O EdgeWarden só calcula a taxa pelo IE 305 quando o IE 306 vem junto, então no IOS-XR a taxa não é detectada: a que vale é a cadastrada no dispositivo.
  • O record ipv4 e o record ipv6 do IOS-XR têm campos fixos. Se o EdgeWarden avisar que falta algum campo, confira o que o record da sua plataforma exporta.
  • random 1 out-of aceita de 1 a 65535, mas algumas plataformas (NCS 540 e 560, por exemplo) documentam taxas específicas. Confira o guia da sua plataforma e release.
  • Em várias plataformas só a direção ingress é suportada.
  • Nem toda combinação de plataforma e release aceita version ipfix. Se o comando não existir, use version v9.
  • O exporter fica inativo se a interface de origem não tiver IP, e a Cisco recomenda não exportar pela interface de gerência.

Verificação no roteador

IOS-XE: conferir exportação
show flow exporter EW-EXP statistics
Flow Exporter EW-EXP:
  Packet send statistics (last cleared 00:05:12 ago):
    Successfully sent:         1830                  (2213464 bytes)
show flow monitor EW-MON-V4 cache format table
show sampler EW-SAMP
show flow interface GigabitEthernet0/0/1
IOS-XR: conferir exportação
show flow exporter-map EW-EXP
TransportDestPort   : 2055
Export Version: IPFIX
show flow exporter EW-EXP location 0/0/CPU0
show flow monitor EW-MON-V4 cache location 0/0/CPU0
show sampler-map EW-SAMP

No IOS-XR, troque 0/0/CPU0 pelo nó da linecard onde está a interface monitorada.

Verificação no EdgeWarden

  1. Em Configurações → Rede → Dispositivos, cadastre o roteador com o Endereço IP da Loopback0 (198.51.100.1). As telas casam o IP de origem dos flows com esse campo.
  2. Preencha a Taxa de Amostragem de Flow com 1000, o mesmo valor do sampler, mesmo usando option sampler-table. Quando a taxa anunciada é lida, a tela mostra o selo detectado; se o cadastro divergir, aparece o aviso de valor ignorado. O selo mostra que a tabela chegou, não que ela foi aplicada aos flows: a prova de que a multiplicação está certa é o passo 5.
  3. Configure o SNMP no mesmo cadastro. Interface sem registro SNMP fica fora da tela de Interfaces.
  4. Em 1 a 2 minutos os flows começam a aparecer. Abra a tela Flows e filtre pelo roteador.
  5. Compare o volume de uma interface com o contador SNMP no painel Fluxo × SNMP nas interfaces, da tela Análise do instante. Se o flow mostrar exatamente 1/1000 do SNMP, a taxa não está sendo aplicada.

O EdgeWarden também informa quais campos o roteador não exporta e qual detector fica cego por isso. Se nada chegar, confira no servidor:

Servidor do EdgeWarden: o IPFIX está chegando?
sudo tcpdump -i any -n udp port 2055 and host 198.51.100.1
sudo journalctl -u flowspec-core -f
sudo ufw allow from 198.51.100.1 to any port 2055 proto udp

Armadilhas comuns

SintomaCausa provávelCorreção
Nada chega na 2055Porta padrão 9995 do exportertransport udp 2055
Interfaces sem nome (if:12)Exportação sai de um IP diferente do cadastradosource Loopback0 e o mesmo IP no cadastro
Volume 1000 vezes menor que o SNMPTaxa não cadastrada e tabela de sampler ausente ou não associada aos flowsTaxa 1000 no cadastro, igual ao sampler, e option sampler-table (XR: options sampler-table)
Ataque aparece minutos depoiscache timeout active padrão de 1800 scache timeout active 60
Dados somem após reiniciar o coletorTemplate reenviado a cada 600 stemplate data timeout 60
IOS-XE recusa trocar o record do monitor, ou pôr ou tirar o sampler da interfaceMonitor ainda aplicado nas interfacesno ip flow monitor (com o mesmo sampler e input) nas interfaces, alterar e reaplicar
Roteador some sem erro na telaCota de exportadores da licençaConferir o plano; o excedente é descartado antes do parse

Qualquer um que alcance a 2055/UDP pode injetar flows forjados e envenenar a detecção. Libere a porta só para os IPs dos seus roteadores.

O ciclo de análise do EdgeWarden é de 10 s, e com NetFlow e IPFIX soma-se o active timeout do roteador. Para rajadas sub-segundo, o caminho é sFlow ou o Packet Sensor.

Próximos passos

Com os flows chegando, o próximo passo é ajustar thresholds e preparar a mitigação por FlowSpec ou RTBH. Se algo não aparecer, siga o checklist de diagnóstico de flows. Para comparar com outro fabricante, veja Traffic Flow no MikroTik RouterOS. Para subir o servidor, use o guia de instalação, e para entender o que cada detector procura, a página de detecção de ataques.

Artigos relacionados

Todos os artigos

Quer ver esses flows no EdgeWarden?

Peça uma demonstração com a exportação da sua própria rede, ou siga o guia de instalação para subir o coletor.