TP Analyse des flux - Gt-metro
TP Analyse des flux - Gt-metro
TP Analyse des flux - Gt-metro
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>TP</strong> <strong>Analyse</strong> <strong>des</strong> <strong>flux</strong><br />
<strong>TP</strong> <strong>Analyse</strong> <strong>des</strong> <strong>flux</strong><br />
Contexte :<br />
Simulation d’un routeur exportant <strong>des</strong> enregistrements de <strong>flux</strong> (trames netflow version 5) vers<br />
plusieurs collecteurs :<br />
L’analyse <strong>des</strong> <strong>flux</strong> est réalisée avec le logiciel nfdump qui fonctionne en ligne de commande.<br />
Si le temps le permet, nfsen (outil graphique se basant sur nfdump) sera abordé.<br />
Dispositif :<br />
Le PC Intervenant utilise les flowtools afin de rejouer 3Go de données netflow<br />
(enregistrements de <strong>flux</strong> anonymisés) vers les 10 PCs stagiaires. Après l’installation de<br />
nfdump, les PCs stagiaires collectent les trames netflow en écoutant sur le port 33333, les<br />
stockent dans le répertoire /tmp/netflow puis effectuent <strong>des</strong> mesures et <strong>des</strong> statistiques sur les<br />
<strong>flux</strong>.<br />
Nfdump :<br />
(Cf. Annexe et man pour les options de chacun <strong>des</strong> outils) - http://nfdump.sourceforge.net<br />
Nfdump est un ensemble d’outils en ligne de commande permettant la collecte, le stockage et<br />
le traitement <strong>des</strong> enregistrements de <strong>flux</strong>, compatibles avec netflow v5, v7, v9 et sflow :<br />
nfcapd - Capture <strong>des</strong> netflow :<br />
1
<strong>TP</strong> <strong>Analyse</strong> <strong>des</strong> <strong>flux</strong><br />
Collecte les données netflow envoyées par le(s) routeur(s) et les stocke sous forme de fichiers.<br />
Une rotation automatique sur les fichiers s’effectue (par défaut toutes les 5mn.). La capture<br />
<strong>des</strong> données sflow (non traitée dans ce <strong>TP</strong>) est réalisée avec sfcapd.<br />
nfdump – Traitement <strong>des</strong> enregistrements de <strong>flux</strong><br />
Récupère les enregistrements de <strong>flux</strong> stockés par nfcapd pour effectuer <strong>des</strong><br />
mesures/statistiques (top N par IP, ports…). La syntaxe d’utilisation est similaire à celle de<br />
tcpdump (« pcap like ») pour appliquer <strong>des</strong> filtres (dst net 10.0.0.1/24 and proto tcp or …) et<br />
restreindre les mesures.<br />
nfprofile – Création de profils de mesures<br />
A l’aide d’un filtrage spécifique, nfprofile crée un profil pour lequel nfdump récupère les<br />
enregistrements de <strong>flux</strong> correspondant et les stocke dans <strong>des</strong> fichiers dédiés à ce profil.<br />
nfreplay – Rejoue d’enregistrements de <strong>flux</strong><br />
Export <strong>des</strong> enregistrements de <strong>flux</strong> stockés par nfcapd vers d’autres collecteurs.<br />
Les enregistrements de <strong>flux</strong> collectés sont stockés, par défaut toutes les 5 mn, dans un<br />
nouveau fichier sous la forme : nfcapd.YYYYMMddhhmm. Par exemple, le fichier<br />
nfcapd.200709181140 contient les données collectées le 18 sept. 2007 de 11h40 à 11h45.<br />
Pour distinguer les enregistrements de <strong>flux</strong> provenant de routeurs différents, on les réparti<br />
dans <strong>des</strong> répertoires différents. Pour le <strong>TP</strong>, un seul routeur exporte <strong>des</strong> trames netflow qui sont<br />
stockées dans le répertoire /tmp/nfdump.<br />
La collecte est effectuée par nfcpad en écoute sur le port (UDP 33333 pour le <strong>TP</strong>) à<br />
<strong>des</strong>tination duquel le PC Intervenant exporte ses enregistrements de <strong>flux</strong> :<br />
nfcapd –w –D –l /tmp/nfdump –p 33333<br />
-D : mode Daemon<br />
-w : permet de faire une rotation <strong>des</strong> fichiers de manière arrondie. Pour une valeur par défaut<br />
de l'intervalle de rotation qui est de 5mn, la rotation <strong>des</strong> fichiers s'alignera sur 0, 5,10...<br />
-l /tmp/nfdump : répertoire de stockage <strong>des</strong> données reçues sous forme de fichier nfcapd.*.<br />
-p en écoute sur le port 33333<br />
L’analyse <strong>des</strong> données netflow avec nfdump peut être faite sur un simple fichier (option –r)<br />
ou sur un ensemble de fichier (option –R) :<br />
nfdump –r /tmp/netflow/nfcapd.YYYYMMddhhmm<br />
nfdump –R /tmp/netflow/nfcapd.YYYYMMddhh00:nfcapd.YYYYMMddhh55<br />
Le résultat est soit affiché en texte ASCII soit stocké dans un autre fichier nfcapd.*. Dans ce<br />
cas, les fichiers résultant peuvent être retraités ultérieuement avec nfdump.<br />
Le format d’affichage avec l’option –o peut se faire sous plusieurs formes :<br />
-o raw : Affiche la totalité <strong>des</strong> informations contenues dans un enregistrement de <strong>flux</strong> pour<br />
chaque <strong>flux</strong> sous forme de colonnes<br />
-o line : format par défaut en ligne, il affiche un <strong>flux</strong> par ligne selon le format suivant :<br />
Date flow start/Duration/Proto/Src IP Addr:Port/Dst IP Addr:Port/Packets/Bytes/Flows<br />
-o long : format identique au line avec ajout d’informations comme TCP flags, ToS<br />
-o extended : format étendu ajoutant les informations pps (packet per second) bps (bits per<br />
second), bps (bytes per packet).<br />
2
<strong>TP</strong> <strong>Analyse</strong> <strong>des</strong> <strong>flux</strong><br />
-o fmt : format customisé, sélection <strong>des</strong> informations à afficher. Par exemple, le format<br />
long s’execute par -o “fmt:%ts %td %pr %sap -> %dap %pkt %byt %fl" (Cf.<br />
« man nfdump »).<br />
Pour simplifier le format d’affichage, on peut agréger les <strong>flux</strong> grâce à l’option –a qui<br />
réunie sur une même ligne les <strong>flux</strong> ayant les mêmes caractéristiques suivantes : protocole,<br />
adresse IP source et <strong>des</strong>tination, port source et <strong>des</strong>tination. Il est possible de n’agréger qu’en<br />
fonction de certaines caractéristiques avec l’option –A , par exemple n’agréger les<br />
<strong>flux</strong> qu’en fonction de l’adresse IP src et du port <strong>des</strong>tination s’exécute avec l’option –a -A<br />
srcip,dstport.<br />
En fonction <strong>des</strong> besoins (<strong>Analyse</strong> d’incident, détection de scans, pistage d’une machine,<br />
métrologie par port/srcip.../tos), nfdump filtre les <strong>flux</strong> affichés à l’aide d’une syntaxe (Cf.<br />
Annexe) identique à celle utilisée avec tcpdump (pcap). Le filtre est à positionner à la fin de la<br />
ligne de commande entre ‘..’. Par exemple, si on ne souhaite afficher que le trafic http à<br />
<strong>des</strong>tination du serveur 10.0.2.3 sur une période d’1/2h :<br />
nfdump –R /tmp/netflow/nfcapd.Y…hh00:nfcapd.Y…hh30 ‘dst ip 10.0.2.3<br />
and dst port 80’.<br />
Statistiques Top N : L’option -s type[/orderby] permet de faire <strong>des</strong> top N sur les<br />
enregistrements de <strong>flux</strong> (où N est configurable avec l’option –n num, -n 0 affiche tous les<br />
enregistrements) en fonction d’une caractéristique (type : record, ip, proto, dstip, srcip,<br />
srcport…) et de manière ordonnée (orderby : décroissant par nombre de <strong>flux</strong>, nombre<br />
d’octets, de paquets…).<br />
Figure 1: Schéma général de fonctionnement de nfdump<br />
Excercices :<br />
Le choix <strong>des</strong> fichiers à analyser est libre, c’est la durée sur laquelle ils sont à analyser qui est<br />
fixe. Il n’y a donc pas de résultats fixés, il s’agit de trouver les bonnes comman<strong>des</strong> pour les<br />
recherches demandées.<br />
- Télécharger nfdump depuis le serveur F<strong>TP</strong> local et l’installer dans /tmp :<br />
tar –zxvf nfdump-1.5.5.tar.gz<br />
./configure<br />
3
make<br />
make install<br />
- Créer le répertoire /tmp/nfdump<br />
<strong>TP</strong> <strong>Analyse</strong> <strong>des</strong> <strong>flux</strong><br />
- Commencer la collecte en lançant nfcapd en mode daemon, en écoute sur le port<br />
33333. Stocker les enregistrements de <strong>flux</strong> dans /tmp/netflow avec une rotation de<br />
5mn.<br />
nfcapd –w –D –l /tmp/netflow –p 33333<br />
- Pour un fichier d’enregistrement de <strong>flux</strong> de 5mn : listing…<br />
o Afficher les statistiques par protocole.<br />
nfdump -r nfcapd.* –s proto/bytes nfcapd.**<br />
o Afficher les 30 premiers <strong>flux</strong> dans le temps (option –c) au format d’affichage<br />
long<br />
nfdump -r nfcapd.* -c 20 –o long<br />
o Afficher les <strong>flux</strong> de manière agrégée et repérer le couple srcip, dstip<br />
comportant le plus de <strong>flux</strong><br />
nfdump -r nfcapd.* -a<br />
o Afficher les <strong>flux</strong> de manière agrégée par protocole, comparer aux résultats du<br />
1 er point.<br />
nfdump --r nfcapd.* -a –A proto<br />
- Sur une période de 10mn : filtres…recherche<br />
o Afficher les <strong>flux</strong> à <strong>des</strong>tination du port tcp 80 puis mesurer la quantité de trafic<br />
correspondante en utilisant un filtre et une agrégation sur le protocole<br />
nfdump -R nfcapd.*:nfcapd.*** -a –A proto ‘dst port 80’<br />
o Trouver l’adresse IP <strong>des</strong> serveurs DNS, Web et N<strong>TP</strong> grâce aux options<br />
d’agrégation et de filtres<br />
nfdump -R nfcapd.*:nfcapd.*** -a –A dstip,dstport ‘dst port<br />
80’<br />
nfdump -R nfcapd.*:nfcapd.*** -a –A dstip,dstport ‘dst port<br />
53’<br />
nfdump -R nfcapd.*:nfcapd.*** -a –A dstip,dstport ‘dst port<br />
123’<br />
- Sur une période de 15mn : statistiques top N…<br />
o Afficher le Top 20 par nombre d’octets <strong>des</strong> <strong>flux</strong> udp<br />
nfdump -R nfcapd.*:nfcapd.*** -n 20 –s record/bytes ‘proto<br />
UDP’<br />
o Afficher le Top 10 par nombre de <strong>flux</strong> <strong>des</strong> AS <strong>des</strong>tination<br />
nfdump -R nfcapd.*:nfcapd.*** -n 10 –s dstas/flows<br />
o Afficher le Top 20 <strong>des</strong> services par nombre de <strong>flux</strong>, en quelle position arrive<br />
DNS, Web, N<strong>TP</strong> et SM<strong>TP</strong>. Faire la même chose par quantité de trafic, que<br />
constate-t’on quant à la taille moyenne d’un <strong>flux</strong> pour ces 4 services.<br />
nfdump -R nfcapd.*:nfcapd.*** -n 20 –s port/flows<br />
nfdump -R nfcapd.*:nfcapd.*** -n 20 –s port/bytes<br />
Ces 4 services sont parmis ceux qui sont les plus utilisés mais le rapport entre le nombre de<br />
<strong>flux</strong> et la quantité de trafic en octet en fait de petits consommateurs de bande passante<br />
puisque la taille moyenne d’un <strong>flux</strong> pour ces 4 services est faible.<br />
4
<strong>TP</strong> <strong>Analyse</strong> <strong>des</strong> <strong>flux</strong><br />
o Afficher le Top 15 <strong>des</strong> adresses IP les plus consommatrices en débit. Donner la<br />
nature du trafic émit par la station la plus consommatrice.<br />
nfdump -R nfcapd.*:nfcapd.*** -n 20 -s ip/bps<br />
o Afficher le Top 3 <strong>des</strong> réseaux /24 échangeant le plus de trafic<br />
nfdump -R nfcapd.*:nfcapd.*** -n 3 -A srcip4/24,dstip4/24 -s<br />
record/bytes<br />
- Sur une période de 20mn : recherche de scans…métrologie<br />
o Mesurer la quantité de trafic dans la classe de service Best Effort (DSCP = 0,<br />
ToS = 0). Y’a-t-il du trafic Better than best Effort (DSCP 34, ToS = 136) et du<br />
trafic Premium IP (DSCP 46, ToS = 184).<br />
nfdump -R nfcapd.*:nfcapd.**** ‘tos 0’ –s ip/bytes<br />
nfdump -R nfcapd.*:nfcapd.**** ‘tos 184’ –s ip/bytes<br />
o Rechercher les scans (hauteur ou largeur) de port (trouver une combinaison<br />
entre les options permettant de caractériser du trafic pouvant être du scan de<br />
port).<br />
On peut par exemple reconnaître un scan si le <strong>flux</strong> :<br />
• n’est pas de l’icmp<br />
• n’excède pas 100 octets<br />
• comporte un nombre de bits par paquets < 100<br />
• n’excède pas 5 paquets<br />
• ne concerne pas les ports 80, 53, 110, 123<br />
En hauteur : Scan effectué par 1 machine vers n machines sur un port.<br />
En largeur : Scan effectué par 1 machine vers 1 machine sur plusieurs<br />
port.<br />
nfdump -R nfcapd.*:nfcapd.**** -a -A srcip,dstport -s<br />
record/packets 'not proto icmp and bytes < 100 and bpp < 100<br />
and packets < 5 and not port 80 and not port 53 and not port<br />
110 and not port 123'<br />
Le premier est : 2.7.29.210<br />
Faisons une recherche complémentaire <strong>des</strong>sus : pour cette source, afficher les <strong>flux</strong> agrégés<br />
sur l’adresse ip <strong>des</strong>tination et le port, si le nombre de <strong>des</strong>tination est très élevé et le port<br />
toujours le même ; c’est un scan en hauteur, si le nombre de <strong>des</strong>tination n’est pas élevé et les<br />
ports différents, c’est un scan en largeur.<br />
nfdump -R nfcapd.*:nfcapd.**** -a -A dstip,dstport 'src ip<br />
2.7.29.210'<br />
Annexes :<br />
• Quelques options de nfcapd :<br />
-p portnum<br />
Specifies the port number to listen. Default port is 9995<br />
-l base_directory<br />
Specifies the base directory to store the output files. Default is /var/tmp If a sub hierarchy is<br />
specified with -S the final directory is concatenated to base_directory/sub_hierarchy<br />
-t interval<br />
Specifies the time interval in seconds to rotate files. The default value is 300s ( 5min ).<br />
5
<strong>TP</strong> <strong>Analyse</strong> <strong>des</strong> <strong>flux</strong><br />
-w Align file rotation with next n minute ( specified by -t ) interval.<br />
Example: If interval is 5 min, sync at 0,5,10... wall clock minutes<br />
Default: no alignment.<br />
-D Daemon mode : fork to background and detach from terminal. Nfcapd terminates on<br />
signal TERM, INT and HUP.<br />
-h Print help text to stdout with all options and exit.<br />
• Syntaxe <strong>des</strong> filtres pour le traitement <strong>des</strong> enregistrements de <strong>flux</strong> avec nfdump :<br />
expr and expr, expr or expr, not expr, ( expr ).<br />
expr can be one of the following filter primitives:<br />
protocol version<br />
inet or ipv4 for IPv4 and inet6 or ipv6 for IPv6 flows only<br />
protocol<br />
TCP, UDP, ICMP, GRE, ESP, AH, RSVP or PROTO where num is the protocol<br />
number.<br />
IP address<br />
[SourceDestination] IP a.b.c.d or<br />
[SourceDestination] HOST a.b.c.d with a.b.c.d as any valid IP address. SourceDestination<br />
may be omitted.<br />
SourceDestination<br />
defines the IP address to be selected and can be SRC, DST or any combination of SRC<br />
and|or DST. Omitting SourceDestination is equivalent to SRC or DST.<br />
network<br />
[SourceDestination] NET a.b.c.d m.n.r.s<br />
[SourceDestination] NET a.b.c.d / num with a.b.c.d as network number, m.n.r.s as netmask<br />
or num as maskbits respectively. The network may be given as a.b, a.b.c, where a B or Cclass<br />
equivalent netmask is assumed.<br />
Port<br />
[SourceDestination] PORT [comp] num with num as a valid port number. If comp is<br />
omitted, '=' is assumed.<br />
Interface<br />
[inout] IF num with num as an interface number.<br />
inout<br />
defines the interface to be selected and can be IN or OUT.<br />
Flags<br />
flags tcpflags with tcpflags as a combination of:<br />
A ACK.<br />
S SYN.<br />
F FIN.<br />
R Reset.<br />
6
<strong>TP</strong> <strong>Analyse</strong> <strong>des</strong> <strong>flux</strong><br />
P Push.<br />
U Urgent.<br />
X All flags on.<br />
The ordering of the flags is not relevant. Flags not mentioned are treated as don't care. In<br />
order to get those flows with only the SYN flag set, use the syntax 'flags S and not flags<br />
AFRPU'.<br />
TOS Type of service: tos value with value 0..255.<br />
Packets<br />
packets [comp] num [scale] to specify the packet count in the netflow record.<br />
Bytes<br />
bytes [comp] num [scale] to specify the byte count in the netflow record.<br />
Packets per second: Calculated value.<br />
pps [comp] num [scale] to specify the pps of the flow.<br />
Duration: Calculated value<br />
duration [comp] num to specify the duration in milliseconds of the flow.<br />
Bits per second: Calculated value.<br />
bps [comp] num [scale] to specify the bps of the flow.<br />
Bytes per packet: Calculated value.<br />
bpp [comp] num [scale] to specify the bpp of the flow.<br />
AS [SourceDestination] AS num with num as a valid AS number.<br />
scale Scaling factor. Maybe k m g. Factor is 1024<br />
comp The following comparators are supported:<br />
=, ==, >,