240 likes | 345 Views
Detecção de ataques em Backbones IP através do Netflow. Autor: Claus Rugani Töpke claus@ravel.ufrj.br. www.ravel.ufrj.br. www.coppe.ufrj.br. Sumário. 1 - Objetivo; 2 - Definições; 3 - Meios para a Detecção; 4 - O funcionamento do BPF; 5 - O funcionamento do Netflow;
E N D
Detecção de ataques em Backbones IP através do Netflow Autor: Claus Rugani Töpke claus@ravel.ufrj.br www.ravel.ufrj.br www.coppe.ufrj.br
Sumário 1 - Objetivo; 2 - Definições; 3 - Meios para a Detecção; 4 - O funcionamento do BPF; 5 - O funcionamento do Netflow; 6 - Implementação do detector; 7 - Conclusões.
Objetivo Ilustrar os métodos de detecção de ataques em Backbones IP. Apresentar uma implementação utilizando o NetFlow.
Definições (Ataques a serem detectados) 1 - Flood IP; 2 - DoS (ou Distribuido); 3 - ICMP Scan; 4 - Port Scan (UDP e TCP); Backdoor scan, service scan... 5 - Spoofing;
Meios para detecção 1 - RMON; 2 - IP Accounting; 3 - IP CEF Accounting; 4 - BGP Accounting; 5 - BPF (BSD Packet Filter); 5 - Netflow;
Nível O funcionamento do BPF Usuário snort tcpdump libpcap /dev/bpf... Protocol Stack Buffer Buffer Programação da máquina de estado Filtro Filtro Kernel BPF Link-layer driver Link-layer driver ... Network *BSD = Berkeley Software Distribution
O funcionamento do Netflow (sem NetFlow) Pacote chega pela interface Procura na tabela de roteamento ou cache Procura na tabela de roteamento ou cache identificando a interface de saída, depois procura na ACL. Procura na ACL Envia para saída Desvia ou filtra
O funcionamento do Netflow (com NetFlow) Tabela BGP Pacote chega pela interface Procura na tabela de roteamento ou cache tabela cache de fluxos Exportação Para o coletor Procura no cache de fluxos Procura na ACL Procura na tabela de roteamento ou cache procura cache de fluxos Envia para saída Desvia ou filtra
Funcionamento do Netflow (quando exportar ?) Tabela BGP tabela cache de fluxos Exportação Para o coletor 1 - Tabela cheia; 2 - Tempo grande do fluxo (default 30min); 3 - Tempo inativo grande (default 15s); 4 - Identificação do final do fluxo (TCP FIN ou RST); http://www.cisco.com/univercd/cc/td/doc/cisintwk/intsolns/netflsol/nfwhite.htm
Funcionamento do Netflow (tipos de fluxos exportados) * * - Linha Catalyst
Funcionamento do Netflow (tipos de fluxos exportados) Versão 1 Versão 5 ~Versão 7 (router shortcut)
Funcionamento do Netflow (método de envio dos fluxos) “clientes” “clientes” AR export flow UDP AR export flow UDP PR UDP Backbone IP Backbone B Conexão FastEthernet Máquina Coletora Backbone A
Implementação Utilizando Netflow Identificação dos ataques 1- Fluxo (grande) para IP destino com média do tamanho dos pacotes pequeno ( <100 bytes ); 2- Fluxo (grande) para IP destino com média do tamanho dos pacotes grande ( = 1500bytes); 3- Muitos fluxos com IP destino fixo e IP origem variando; 4- Muitos fluxos com IP destino fixo, IP origem fixo e portas destino variando; 5- Muitos fluxos com IP destino fixo, IP origem fixo e portas origem variando; 6- Assimetricidade grande de tráfego (fluxo de saída e entrada – pode se utilizar MIB Octets);
Implementação Utilizando Netflow Identificação dos ataques 7- Assimetricidade dos fluxos ( fluxo de saída não corresponde a respostas do fluxo de entrada e vice-versa); 8- Tráfego maior que a capacidade do AL (necessário consulta a MIB do AR ou base de dados); 9- Tráfego ICMP ou SNMP excessivo (necessário avaliar histograma de protocolos); 10- Tráfego de uma porta UDP ou TCP (necessário avaliar histograma de portas); 11- TCP flags em estado anormal (SYN constante ou combinações estranhas)*; * - Discussão das TCP Flags no Capítulo 8 do www.ravel.ufrj.br/~claus/Msc/tese.ps.gz
Implementação Utilizando Netflow Construção básica de detector • Tabela HASH: • A chave pode ser: • O IP destino; • A rede destino (ver tabela IGP); • As redes destino apontadas para o AR;
Implementação Utilizando Netflow Construção do detector • PERL (fácil implementação/lento para hashes grandes); • C++ ( rapidez utilizando maps e multimaps ); • C ( rapidez, necessário criar hash ou utilizar libliotecas);
Implementação Utilizando Netflow Utilizando C++ typedef struct { uint32_t Pkts; uint32_t Bytes; ipv4addr_t Router; ipv4addr_t SrcIP; uint16_t DstPort; uint16_t SrcPort; uint16_t IfIndexSrc; uint16_t IfIndexDst; uint8_t Proto; uint16_t Asn; } CrtTblType, *CrtTblTypePtr ; typedef map<ipv4addr_t, CrtTblType> CrtTblMap; CrtTblMap ExampleCrtTbl;
Implementação Utilizando Netflow Tempo de resposta Tamanho do pacote para a rede destino (resposta 10minutos) Tráfego em bytes para a rede destino (resposta 1minutos) Tráfego em pacotes para a rede destino (resposta 1minutos) Fluxos por IP destino (resposta 1minutos) Problema => muitas vezes o fluxo tem que acabar para ser exportado...
Referências http://www.pdos.lcs.mit.edu/thomer/mit/multops_usenix2001.pdf http://www.net.ohio-state.edu/security/talks/2000-02-09_ddos-and-netflow_oartech/oartech.pdf http://www.cisco.com/univercd/cc/td/doc/product/software/ios121/121newft/121t/121t5/tms.htm http://www.cisco.com/univercd/cc/td/doc/product/software/ios122/122cgcr/ fswtch_c/swprt1/xcfcefc.htm http://www.hpovua.org/PUBLICATIONS/PROCEEDINGS/8_HPOVUAWS/Papers/ Paper02.4-Kotsokalis-Router.pdf http://www.switch.ch/tf-tant/floma/frankfurt/floma.html ftp://ftp.ee.lbl.gov/papers/bpf-usenix93.ps.Z