Monitoraggio di rete con NetFlow
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - NetFlow: Introduzione Esigenza di rispondere alle domande chi, cosa, dove, quando e come? Il monitoraggio di reti a bassa velocità (100Mb/s) è possibile con i comuni tool basati sulle libpcap La cattura completa del traffico è limitata dalle potenzialità dell'hardware NetFlow è un protocollo per il monitoraggio passivo di flussi di rete anche ad alta velocità (1Gb/s e più) Inventato da Cisco (Daren Kerr e Barry Bruins) per aumentare la velocità dello switching Implementato dalla maggior parte dei produttori di apparati di rete (Cisco, Juniper, Enterasys, Extreme)
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - NetFlow: Origini NetFlow è stato ideato come metodo per aumentare le performances nella fase di switching path Ogni pacchetto viene gestito singolarmente Ogni processo deve essere applicato su ogni pacchetto Nessuna informazione sullo stato Ogni pacchetto è identificato in un flusso I processi vengono applicati una volta sola sul flusso Informazioni sullo stato del flusso
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Caratterizzazione di un Flusso Flusso unidirezionale di pacchetti IP caratterizzato dai seguenti elementi (default): Indirizzo IP sorgente Indirizzo IP destinazione Porta sorgente Porta di destinazione Tipo di protocollo ToS Interfaccia logica di input (ifInput) L'aggregazione permette di cambiare queste chiavi
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - NetFlow: Features Fornisce statistiche sul traffico di rete ispezionando gli header dei livelli 2 – 4 Supporta statistiche su IPv6, MPLS, IPSEC, BGP Real time (o quasi) Architettura a tier Non fa packet inspection Non è una tecnologia IDS / IPS
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - NetFlow: Casi d'uso Packet CountPacket Count Byte CountByte Count Packet CountPacket Count Byte CountByte Count Start TimestampStart Timestamp End TimestampEnd Timestamp Start TimestampStart Timestamp End TimestampEnd Timestamp Type of ServiceType of Service TCP FlagsTCP Flags ProtocolProtocol Type of ServiceType of Service TCP FlagsTCP Flags ProtocolProtocol Input Interface PortInput Interface Port Output Interface PortOutput Interface Port Input Interface PortInput Interface Port Output Interface PortOutput Interface Port Source IP AddressSource IP Address Destination IP AddressDestination IP Address Source IP AddressSource IP Address Destination IP AddressDestination IP Address Source TCP/UDP PortSource TCP/UDP Port Destination TCP/UDP PortDestination TCP/UDP Port Source TCP/UDP PortSource TCP/UDP Port Destination TCP/UDP PortDestination TCP/UDP Port Next Hop AddressNext Hop Address Source AS NumberSource AS Number Dest. AS NumberDest. AS Number Source Prefix MaskSource Prefix Mask Dest. Prefix MaskDest. Prefix Mask Next Hop AddressNext Hop Address Source AS NumberSource AS Number Dest. AS NumberDest. AS Number Source Prefix MaskSource Prefix Mask Dest. Prefix MaskDest. Prefix Mask Utilizzo della rete Tempistiche Utilizzo di Interfacce QoS Sorg. / Dest. Applicazioni Routing / Peering User (IP) monitoring Application monitoring Traffic analysis Attack Detection Chargeback Billing Attack mitigation Billing AS Peer monitoring Traffic engineering Network Planning
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - NetFlow: Funzionamento Arrivo di un nuovo pacchetto Viene creato un'entry nella NetFlow cache che descrive il flusso Arrivo di pacchetti appartenenti a flussi conosciuti Vengono aggiornati i contatori (aggregati se necessario) Quando il flusso viene terminato le statistiche sono esportate SYN, ACK, FIN TCP1024luser69.a.it80porno.itGi0/114:20: SYN, ACK, PSH10295TCP80porno.it1024luser69.a.itGi0/014:20: TCP flagsBytes sent Pkts sent protodst port dst IPsrc port src IPInt.Start
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Architettura base Filtraggio dei pacchetti per associare ogni pacchetto ad un flusso Filtraggio dei pacchetti per associare ogni pacchetto ad un flusso Probe Crea, aggiorna e rimuove flow records Crea, aggiorna e rimuove flow records Flow cache Flow key Flow start time Flow end Time Number of packets Legge la flow cache, prepara e esporta pacchetti NetFlow Legge la flow cache, prepara e esporta pacchetti NetFlow Exporter info Header Riceve i flussi esportati. Interfaccia per le applicazioni Riceve i flussi esportati. Interfaccia per le applicazioni Collector NetFlow vX IETF/IPFIX Applicazione di analisi analisi Application
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Export di un flusso I flussi memorizzati all'interno della cache dell'apparato vengono esportati se: Il flusso viene terminato dall'arrivo di pacchetto contenente il flag FIN o RST Il flusso è inattivo oltre una soglia di timeout: cioè nessun pacchetto relativo al flusso è stato catturato (default 15 sec) Il flusso è attivo ma è scaduto un timeout predefinito che impone l'export del flusso (default 30 min) Cache management nel caso la flow cache sia piena, i primi flussi ad essere esportati sono i più vecchi
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Versioni di NetFlow La versione specifica il formato del pacchetto di export Versione 5 Formato di export fisso Nessun tipo di aggregazione Versione 7 Creata per gli switch Cisco serie 6500 e 7600 Versione 8 Permette diversi tipi di aggregazione, in modo da esportare e memorizzare in cache solo i dati che servono Versione 9 Aggregazione flessibile basata su template definiti dall'utente
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - NetFlow v9 Si basa sul concetto di template personalizzabili che definiscono semanticamente i dati esportati I soli dati sono esportati in Data Flow Sets Il Collector si configura con i template che gli arrivano (autoconfigurazione) Transports multipli (non solo UDP) Ogni Data Flow Set è preceduto da un puntatore al template Se un template viene perso i dati perdono significato RFC 3954 Cisco Systems NetFlow Services Export Version 9, IPR statement
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - IPFIX IETF draft[1] per Find or develop a basic common IP Traffic Flow measurement technology to be available on (almost) all future routers NetFlow v9 è stato scelto come base per lo sviluppo Non sarà mantenuta la retrocompatibilità Utilizzo di TCP, UDP, SCTP, TLS, DTLS Autenticazione mutua con certificati X.509 [1]
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Sampled NetFlow Viene scelto in modo deterministico o pseudocasuale un sottoinsieme dei pacchetti che transitano (campionamento) Uso di Traffic Class (campionamento specifico per ogni traffic class) Funzionalità introdotta nei Cisco serie Allegerisce il carico sugli apparati Adatto a rete ad alta velocità Adatto a soddisfare alcune esigenze: ad es. network planning
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Considerazioni NetFlow fornisce una gran mole di informazioni, che però deve essere elaborata L'analisi di queste informazioni permette di porre ipotesi riguardanti anche la sicurezza di rete Una VLAN di amministrazione è necessaria L'impatto sulle prestazioni dell'apparato di rete è modesto <16%65000 <12%45000 < 4%10000 Additional CPU UtilizationActive Flows in Cache
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Un attacco DoS.. Router#show ip cache flow SrcIf SrcIPaddress SrcP SrcAS DstIf DstIPaddress DstP DstAS Pr Pkts B/Pk aaa bbb aaa bbb aaa bbb Alcune tipologie di attacchi (ad es. DoS) sono modellizzabili. Utilizzo di NetFlow anche per la sicurezza di rete, l'elaborazione dei dati permette di rilevare attacchi e anomalie di rete.
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Security? Senza payload? Ricerca di pattern nel traffico NetFlow Un host che ne contatta molti in breve tempo (P2P, worm) Flussi di lunga durata (VPN, covert channels) Utilizzo di porte non autorizzate Anomalie sull'uso della banda (DoS, warez) Comunicazioni non autorizzate (due macchine che normalmente non dovrebbero parlare)
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - L2 e Security Monitoring Inoltre per identificare e tracciare attacchi: Layer2 IP header Source MAC address (frame ricevuti dal router) Destination MAC address (frame spediti dal router) Received VLAN ID (802.1q e Cisco ISL) Transmitted VLAN ID (802.1q e Cisco ISL) Extra Layer 3 IP header Time-to-Live Identification field Packet length ICMP type
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Parte pratica Come implementare un'infrastruttura di monitoraggio basata su NetFlow: Decidere su quali apparati di rete e su quali interfacce abilitare NetFlow Configurare gli apparati di rete di cui sopra Setup di un collector o di più collector Setup di una o più applicazioni di analisi dei dati e di allarmistica
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Architettura Enterprise
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Dove abilitare NetFlow Decidere cosa si vuole ottenere da NetFlow Scegliere di conseguenza su che apparati andare ad abilitarlo Scegliere le interfacce Monitorare tutto il traffico in uscita e in ingresso dalla LAN Evitare il doppio conteggio!
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Hardware Apparati di rete con supporto per NetFlow (ormai tutti i grandi produttori) Sistemi (computer) con schede di rete specifiche: Endace : capacità di selezione e filtering on board, full packet capture AMP (Analytic Metadata Producers) sono NetFlow capture devices sviluppate all'NSA, fingerprinting, deep inspection COMBO6 Sistemi embedded dedicati nbox e altri...
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - NetFlow probes Primo elemento della catena deputato a associare ogni pacchetto in transito ad un flusso Sonde inserite dai vendor negli apparati di rete (spesso software proprietario) Software nProbe : buone performances fProbe : basato sulle libpcap fProbe-ulog : basato su libipulog (Netfilter) pfflowd : basato su pf di OpenBSD
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Configurazione router Cisco ip flow-export version [origin-as|peer-as|bgp-nexthop] ip flow-export destination ip flow-cache timeout inactive ip flow-cache timeout active ip flow-cache entries Juniper cflowd collector-host-address { Autonomous-system-type (origin|peer); port port-number; version version-number; (local-dump | no-local-dump); }
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Collectors Hanno il compito di memorizzare i flussi NetFlow esportati Ricezione dei pacchetti di export Memorizzazione su disco o database Eventuale compressione e rotazione dei flussi memorizzati Eventuale filtraggio Eventuale relay verso i livelli più alti dell'architettura Software: nfdump flowd flow-tools
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Cisco CLI
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Stager Aggrega e presenta statistiche di rete Monitoraggio di rete (usa anche SNMP e ping) Non adatto al monitoraggio delle sicurezze Personalizzabile
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - nfsen Visualizzazione e filtraggio dei dati Grafici (RRD) Sistema di detection e alert Architettura a plugin
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Nerd Security monitoring tool Analizza le statistiche NetFlow alla ricerca di attacchi Allarmistica
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - altri.. nTop : può funzionare anche come collector NetFlow Flamingo : genera visualizzazioni 3D del traffico Panotips : progetto che si prefigge di rilevare e bloccare gli attacchi DoS e DdoS Flowscan : produce semplici grafici
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Programming Librerie per la programmazione di applicazioni che usano il protocollo NetFlow libipfix : libreria C per IPFIX libfixbuf : libreria per IPFIX message format jflow : libreria java Net::sflow : libreria perl per sFlow NetFlow Simulator
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Tricks Nelle ultime versioni di IOS ci sono comandi alcuni comandi per l'analisi integrati nella CLI (top ten talkers ad es.) ip flow ingress|egress sulle subinterfaces Attenzione ai valori origin-as | peer-as Si può accedere via SNMP ad alcuni dati NetFlow di un apparato di rete (casi d'emergenza, sampling adattivo?) Spesso basta memorizzare dati aggregati (grande risparmio di spazio) Sincronizzare tutti gli apparati con un server NTP
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Conclusioni NetFlow mette a disposizioni dati per monitoraggio di rete, auditing, network forensics I router Cisco (e molti altri..) hanno NetFlow di default. A gratis. Usiamolo. Prodotti open source e commerciali possono venir utilizzati per analizzare dati NetFlow Nuovi worms e virus possono essere rilevati senza avere a disposizione signatures Il monitoraggio di rete si deve fare!!!
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Riferimenti CISCO NetFlow: RFC 3917: Requirements for IP Flow Information Export (IPFIX) ftp://ftp.rfc-editor.org/in-notes/rfc3917.txt ftp://ftp.rfc-editor.org/in-notes/rfc3917.txt RFC 3954: Cisco Systems NetFlow Services Export Version 9 ftp://ftp.rfc-editor.org/in-notes/rfc3954.txt ftp://ftp.rfc-editor.org/in-notes/rfc3954.txt IPFIX Version Numbers IPFIX Information Elements SWITCH NetFlow References NGN/floma/references.html NGN/floma/references.html FloMA: Pointers and Software NGN/floma/software.html NGN/floma/software.html Free NetFlow Tools List NetFlow Performance Analysis
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Riferimenti (2) User and Test Report on the Netflow Probe Autonomous NetFlow Probe csirt/meeting16/netflow-probe-lhotka.pdf csirt/meeting16/netflow-probe-lhotka.pdf Free NetFlow Tools Detecting Worms and Abnormal Activities with NetFlow NetFlow sul mio blog
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Domande?
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Licenza Questo documento viene rilasciato sotto licenza Alcoolware, la quale non è altro che una normale licenza Creative Commons Attribute-NonCommercial- ShareALike [1] ma con l'aggiunta che se mi incontrate dobbiamo andare a bere qualcosa. In sintesi è liberamente distribuibile per usi non commerciali, copiabile e modificabile purchè citiate l'autore e la fonte. Se volete distribuire questo documento sul vostro sito siete pregati per favore di comunicarmelo in modo che possa spedirvi le nuove versioni. [1]
Monitoraggio di rete con NetFlow – Alessandro Tanasi aka jekil - Dove reperisco queste slides? Le slides di questa presentazione sono già disponibili su: Per informazioni: Non esitate a contattarmi anche solo per far due chiacchere... Italian grappa a tutti!! :-)