Moniteur réseau linux

lundi 10 novembre 2003

Accueil
Configuration réseau
Moniteur réseau linux

 

Le Moniteur réseau sous linux

L’équivalent du moniteur réseau sous linux s’appelle Ethereal.

Il  fait parti d’un ensemble de programme qui utilise l’outil GNU « TCPDUM » pour récupérer les données.

Il en existe 2 versions :

bulletUne en ligne de commande (peu pratique a utiliser)
bulletUne en interface graphique

 

L’une ou l’autre version se base sur les mêmes fonctionnalités.

 

Pour l’installation, on installera le package correspondant :

            Sous Mandrake : rpm –ivh ethereal-0.9.13-1mdk.i586.rpm

            Sous debian : apt-get install ethereal

            Sous RedHat : ethereal-0.9.2-1.i386.rpm

 

Principe de fonctionnement :

Contrairement au moniteur réseau sous Windows 2003 serveur, ethereal permet de récupérer toute les trames circulant sur un réseau, pour arriver a ceci, il fait passer la carte réseau en mode « promiscuité ».

 

Zone de Texte: Mode promiscuité : une carte réseau peut être mise en mode promiscuité pour recevoir tout le trafic qui est envoyé sur le segment de réseau sur laquelle elle se trouve. Cela permet de "sniffer" ce qui se passe sur le réseau. Si la carte réseau n'est pas en mode promiscuité, elle rejette tout le trafic qui ne lui est pas destiné.
 

 

 

 

 

Pour pouvoir utiliser le mode promiscuité, le noyau linux a besoin de la librairie Libpcap.

 

libpcap est une bibliothèque d'outils permettant de faire la capture des paquets qui circulent sur le réseau, on peut ainsi faire des stats, de la surveillance de réseau, du débugage et bien d'autres choses.

 

Interface de l’application

 

Utilisation de la capture reseau :

Preparation de la capture de données :

On va dans « Capture » puis « Start ».

Zone de Texte: Limitation de la taille des paquets


 

Zone de Texte: Interface que l’on écoute : eth0, eth1, ppp°, ou any (toutes)

 

 

Filtre de capture de trame

Zone de Texte: Filtre de capture de trame

Fichier ou l’on stock les fichier

Zone de Texte: Fichier ou l’on stock les fichier

Option pour créer plusieurs fichiers de capture

Zone de Texte: Option pour créer plusieurs fichiers de capture

Activation du mode promiscuité

Zone de Texte: Activation du mode promiscuité

Affichage en temps réel des paquets capturés

Zone de Texte: Affichage en temps réel des paquets capturés

Limite des captures :

puce Par nombres
puce Par tailles
puce Par temps
Zone de Texte: Limite des captures :
Par nombres
Par tailles
Par temps

Options de résolution :

puce Du nom machine (MAC)
puce Du nom du réseau
puce Du nom du transporteur
Zone de Texte: Options de résolution :
Du nom machine (MAC)
Du nom du réseau
Du nom du transporteur
 

 

 

 

 

 

 

 

 

 

 

 

 

Pour un premier test nous allons faire, comme avec le moniteur sous windows, la capture d’un « ping » entre les adresses client et serveur.

On va donc lancer la capture et appuyer sur ok.

 

Affichage des données capturées

Zone de Texte: Type (request ou reply)

 

Zone de Texte: Protocole utilisé :ICMP

 

Le détail du fonctionnement de la commande ping est expliqué dans le moniteur réseau windows.

Filtres sur la capture des données.

Je reprends l’exemple tftp étudié dans la section Windows, sauf que au lieu d’envoyer des données, je vais récupérer des fichiers

Pour créer des filtres sur la capture, je vais dans « capture » / Start

Et la dans le champ « filter » on va écrire le filtre.

Le filtre dois s’écrire comme avec « tcpdump », donc pour récupérer la documentation sur comment écrire celui-ci, on lance « man tcpdump » et on peut consulter tous les exemples de filtre.

la Syntaxe des filtres de capture sont :

bulletle protocole qui peut être ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp ou udp,
bulletla direction qui peut être src ou dst,
bulletun champ qui peut être host, net ou port suivi d'une valeur.

   Les opérateurs and, or et not peuvent être utilisés pour combiner des filtres.

 

Exemple :

Filtre

Fonction

host 192.168.0.1 and tcp

ne conserve que les paquets TCP à destination ou en provenance de la machine 192.168.0.1

udp port 69

ne conserve que les paquets UDP en provenance ou en destination du port 69

udp port 69 and dst host 192.168.0.1

ne conserve que les paquets UDP en provenance ou en destination du port 69 à destination de la machine 192.168.0.1

tcp dst port 69 and dst host 192.168.0.1 and src net 192.168.0.0 mask 255.255.255.0

ne conserve que les paquets TCP en destination de la machine 192.168.0.0 sur le port 69 et en provenance des machines du réseau 192.168.0.0/24

 

Dans mon exemple je vais vouloir récupérer seulement les trames qui passent sur le port udp 69 et 32788 (les ports tftp de transmission).

Donc je vais inscrire :

Udp port 32788 or udp port 69

Et je constate bien que je liste uniquement les données sur les ports définis.

Filtres d’affichages.

Je reprends l’exemple ftp étudié dans la section windows, sauf que au lieu d’envoyer des données, je vais récupérer des fichiers.

 

Les filtres sur l’affichage ne respectent pas la même syntaxe que tcpdump.

Et donc ethereal possèdes sa propre syntaxe des filtre d’affichage que l’on peut consulter en lançant la commande « man ethereal ».

 

Pour utiliser les filtres d’affichage, je remplie directement le champ correspondant dans la fenêtre principale, ou alors je peux utiliser l’assistant :

Un clique sur « filter » puis « add expression ».

Ce qui nous générera le filtre : udp.port == 69

Les expressions que l’on utilisera pour les filtres d’affichages sont un peux plus complexe, mais permettent de mieux filtrer.

En effet seulement les paquets pour lequel l’expression du filtre est vraie seront affichés.

Les expressions sont basées sur les champs disponibles dans un paquet. Le simple ajout d'un champ veut dire que l'on garde le paquet si ce champ est disponible

Champ

Type

Signification

ip.addr

adresse IPv4

adresse IP source ou destination

ip.dst

adresse IPv4

adresse IP destination

tcp.port

Entier 2 octets

Drapeau IP, ne pas fragmenter

udp.port

Entier 2 octets

Drapeau IP, fragments à venir

arp.dst.hw_mac

Adresse MAC

Adresse MAC cible

http.request

Booléen

requête HTTP

http.response

Booléen

réponse HTTP

icmp.code

entier non signé sur 8 bits

numéro du code d'une commande ICMP

icmp.type

entier non signé sur 8 bits

numéro du type d'une commande ICMP

ftp.request

booléen

requête FTP

ftp.request.command

chaîne de caractères

commande FTP

ftp.reponse.data

chaîne de caractères

donnée de transfer FTP

dns.query

booléen

requête DNS

dns.response

booléen

réponse d'une requête DNS

Le filtre d’affichage de l’on appliquera donc est :

(tcp.port == 21) || (tcp.port == 20)

Je constate que je ne récupère que les trames qui passe en TCP sur les ports 20 et 21

Détail d’une trame.

Zone de Texte: Paramètres IP

Zone de Texte: Paramètres TCP

Zone de Texte: Paramètres FTP

 

Accueil | Configuration réseau | Moniteur réseau linux