Fiche analyse de trafic avec tcpdump

1. Introduction

Dans un BTS CIEL ou SIO, tu dois rapidement apprendre à diagnostiquer un problème réseau, vérifier un flux applicatif ou analyser des communications suspectes. tcpdump fait partie des outils incontournables pour ce travail.

Cet utilitaire fonctionne directement en ligne de commande. Il capture les paquets réseau qui transitent sur une interface et permet ensuite d’analyser précisément les échanges entre machines, protocoles et applications.

Tu peux utiliser tcpdump pour :

  • vérifier qu’un serveur écoute correctement ;
  • analyser une connexion HTTP, HTTPS ou DNS ;
  • détecter une anomalie réseau ;
  • comprendre un échange TCP ;
  • diagnostiquer un problème de pare-feu ;
  • contrôler le trafic MQTT, SSH, FTP ou ICMP ;
  • produire des captures compatibles avec Wireshark.

Dans cette fiche, tu vas apprendre :

  • installer tcpdump ;
  • capturer du trafic ;
  • filtrer les paquets ;
  • analyser plusieurs protocoles ;
  • créer des filtres simples et avancés ;
  • sauvegarder les captures ;
  • utiliser les bons réflexes de sécurité.

2. Sommaire

  1. Introduction
  2. Sommaire
  3. Installation de tcpdump
  4. Fonctionnement général
  5. Identifier les interfaces réseau
  6. Capturer du trafic simple
  7. Analyse des principaux protocoles
  8. Filtres simples
  9. Filtres avancés
  10. Sauvegarder et relire une capture
  11. Pare-feu et ports utiles
  12. Fichiers importants
  13. Synthèse Markdown pour ta fiche bristol
  14. Bloc de configuration complet
  15. Commandes de dépannage
  16. Logs et analyse
  17. Erreurs fréquentes
  18. Bonnes pratiques de sécurité
  19. Pour aller plus loin
  20. Liens utiles et documentation
  21. Idées de TP

3. Installation de tcpdump

Sous Debian 13 et Ubuntu 26.04 :

sudo apt update
sudo apt install tcpdump

Explication des commandes

  • apt update met à jour la liste des paquets disponibles.
  • apt install tcpdump installe l’outil.

Tu peux vérifier l’installation avec :

tcpdump --version

4. Fonctionnement général

tcpdump écoute une interface réseau et affiche les paquets capturés.

Syntaxe générale :

sudo tcpdump [options] [filtres]

Pourquoi utiliser sudo ?

La capture réseau nécessite l’accès bas niveau aux interfaces réseau. Sans privilèges élevés, Linux refuse généralement l’opération.

5. Identifier les interfaces réseau

Avant de capturer du trafic, tu dois connaître le nom de l’interface réseau.

Commande recommandée :

ip a

Exemple :

2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP>
3: lo: <LOOPBACK,UP,LOWER_UP>

Ici :

  • ens18 correspond à la carte réseau principale ;
  • lo représente l’interface locale (localhost).

Tu peux aussi demander directement à tcpdump :

tcpdump -D

Explication des options

  • -D : liste les interfaces disponibles.

6. Capturer du trafic simple

Capturer tout le trafic

sudo tcpdump -i ens18

Explication

  • -i ens18 : écoute l’interface ens18.

Capturer uniquement 10 paquets

sudo tcpdump -i ens18 -c 10

Explication

  • -c 10 : arrête la capture après 10 paquets.

Afficher les adresses IP sans résolution DNS

sudo tcpdump -i ens18 -n

Pourquoi utiliser -n ?

Sans cette option, tcpdump tente de résoudre les noms DNS. Cela ralentit l’analyse et ajoute du bruit.

Afficher aussi les ports

sudo tcpdump -i ens18 -nn

Différence entre -n et -nn

  • -n : désactive la résolution DNS.
  • -nn : désactive aussi la résolution des services réseau.

7. Analyse des principaux protocoles

7.1 Analyse ICMP (ping)

Commande :

sudo tcpdump -i ens18 icmp

Teste ensuite :

ping 8.8.8.8

Tu verras :

ICMP echo request
ICMP echo reply

Utilité

  • diagnostic réseau ;
  • test de connectivité ;
  • détection d’hôtes accessibles.

7.2 Analyse HTTP

Le protocole HTTP utilise le port 80.

sudo tcpdump -i ens18 port 80

Tu peux ensuite ouvrir un site HTTP.

Cas concret

Diagnostic d’un serveur web Apache ou Nginx.


7.3 Analyse HTTPS

HTTPS utilise le port 443.

sudo tcpdump -i ens18 port 443

Important

Le contenu reste chiffré. Tu vois :

  • les IP ;
  • les ports ;
  • les échanges TLS ;
  • la négociation SSL/TLS.

7.4 Analyse DNS

Le DNS utilise principalement le port 53.

sudo tcpdump -i ens18 port 53

Teste ensuite :

nslookup debian.org

Ce que tu peux observer

  • requêtes DNS ;
  • réponses DNS ;
  • serveurs utilisés ;
  • temps de réponse.

7.5 Analyse SSH

SSH utilise le port 22.

sudo tcpdump -i ens18 port 22

Utilité

  • vérifier une connexion SSH ;
  • diagnostiquer un blocage pare-feu ;
  • confirmer une authentification réseau.

7.6 Analyse MQTT

MQTT utilise souvent :

  • 1883 : MQTT non chiffré ;
  • 8883 : MQTT TLS.
sudo tcpdump -i ens18 port 1883

8. Filtres simples

8.1 Filtrer une IP source

sudo tcpdump -i ens18 src host 192.168.1.10

8.2 Filtrer une IP destination

sudo tcpdump -i ens18 dst host 192.168.1.20

8.3 Filtrer un réseau

sudo tcpdump -i ens18 net 192.168.1.0/24

8.4 Filtrer un protocole TCP

sudo tcpdump -i ens18 tcp

8.5 Filtrer UDP

sudo tcpdump -i ens18 udp

8.6 Filtrer plusieurs ports

sudo tcpdump -i ens18 port 80 or port 443

8.7 Exclure un trafic

sudo tcpdump -i ens18 not port 22

9. Filtres avancés

9.1 Combiner plusieurs conditions

sudo tcpdump -i ens18 host 192.168.1.10 and port 443

Ce filtre signifie

  • trafic lié à l’hôte 192.168.1.10
  • ET utilisant le port 443.

9.2 Capturer uniquement les SYN TCP

sudo tcpdump -i ens18 'tcp[tcpflags] & tcp-syn != 0'

Utilité

Détection :

  • nouvelles connexions TCP ;
  • scans réseau ;
  • reconnaissance Nmap.

9.3 Capturer les paquets avec données

sudo tcpdump -i ens18 'tcp[((tcp[12] & 0xf0) >> 2):4] != 0'

Utilité

Éviter les paquets de contrôle TCP sans payload.


9.4 Filtrer un échange entre deux machines

sudo tcpdump -i ens18 host 192.168.1.10 and host 192.168.1.20

9.5 Capturer un trafic HTTP précis

sudo tcpdump -i ens18 -A port 80

Explication

  • -A affiche le contenu ASCII.

Tu peux parfois voir :

  • requêtes GET ;
  • User-Agent ;
  • Host ;
  • cookies.

9.6 Voir le contenu HEXA et ASCII

sudo tcpdump -i ens18 -X port 80

Explication

  • -X affiche :
    • hexadécimal ;
    • ASCII.

Très utile en forensic ou cybersécurité.

10. Sauvegarder et relire une capture

10.1 Sauvegarder une capture

sudo tcpdump -i ens18 -w capture.pcap

Explication

  • -w écrit dans un fichier PCAP.

10.2 Lire une capture

tcpdump -r capture.pcap

Explication

  • -r relit un fichier.

10.3 Ouvrir avec Wireshark

wireshark capture.pcap

11. Pare-feu et ports utiles

ServicePortProtocole
HTTP80TCP
HTTPS443TCP
DNS53UDP/TCP
SSH22TCP
MQTT1883TCP
MQTT TLS8883TCP

Exemple UFW pour SSH

sudo ufw allow 22/tcp

Exemple pour MQTT

sudo ufw allow 1883/tcp

Vérifier les règles

sudo ufw status verbose

12. Fichiers importants

/etc/ufw/
/var/log/ufw.log
/etc/services
/usr/sbin/tcpdump

Arborescence utile

/etc/
├── ufw/
│ ├── before.rules
│ ├── after.rules
│ └── user.rules

13. Synthèse Markdown pour ta fiche bristol

# TCPDUMP

## Installation
sudo apt install tcpdump

## Interfaces
ip a
tcpdump -D

## Capture simple
sudo tcpdump -i ens18

## Sans résolution DNS
sudo tcpdump -i ens18 -nn

## Limiter le nombre de paquets
sudo tcpdump -i ens18 -c 20

## Filtrer un port
sudo tcpdump -i ens18 port 80

## Filtrer SSH
sudo tcpdump -i ens18 port 22

## Filtrer DNS
sudo tcpdump -i ens18 port 53

## Filtrer une IP
sudo tcpdump -i ens18 host 192.168.1.10

## Filtre complexe
sudo tcpdump -i ens18 host 192.168.1.10 and port 443

## Sauvegarde
sudo tcpdump -i ens18 -w capture.pcap

## Lecture capture
tcpdump -r capture.pcap

## Affichage ASCII
sudo tcpdump -A port 80

## Affichage HEXA
sudo tcpdump -X port 80

14. Bloc de configuration complet

# Liste des interfaces réseau
tcpdump -D

# Capture complète sur l'interface principale
sudo tcpdump -i ens18 -nn

# Capture limitée à 50 paquets
sudo tcpdump -i ens18 -nn -c 50

# Capture HTTP et HTTPS
sudo tcpdump -i ens18 '(port 80 or port 443)'

# Capture DNS
sudo tcpdump -i ens18 udp port 53

# Capture SSH
sudo tcpdump -i ens18 tcp port 22

# Capture MQTT
sudo tcpdump -i ens18 tcp port 1883

# Capture d'un hôte spécifique
sudo tcpdump -i ens18 host 192.168.1.10

# Capture réseau local
sudo tcpdump -i ens18 net 192.168.1.0/24

# Capture avec affichage ASCII
sudo tcpdump -i ens18 -A port 80

# Capture avec affichage HEXA
sudo tcpdump -i ens18 -X port 80

# Sauvegarde dans un fichier PCAP
sudo tcpdump -i ens18 -w analyse.pcap

# Lecture d'une capture
tcpdump -r analyse.pcap

15. Commandes de dépannage

Vérifier les interfaces réseau

ip a

Vérifier les connexions actives

ss -tulpn

Explication

  • -t : TCP
  • -u : UDP
  • -l : sockets en écoute
  • -p : processus associés
  • -n : affichage numérique

Vérifier les règles pare-feu

sudo ufw status numbered

Vérifier les routes réseau

ip route

Tester DNS

dig debian.org

Vérifier une connexion TCP

nc -vz 192.168.1.20 443

16. Logs et analyse

tcpdump ne produit pas de logs permanents par défaut. Tu dois sauvegarder les captures.

Générer une capture exploitable

sudo tcpdump -i ens18 -w incident.pcap

Lire ensuite avec :

tcpdump -r incident.pcap

ou :

wireshark incident.pcap

Ce que tu peux analyser

  • scans réseau ;
  • connexions suspectes ;
  • erreurs TCP ;
  • retransmissions ;
  • DNS anormal ;
  • flux non chiffrés ;
  • trafic IoT ;
  • requêtes HTTP.

17. Erreurs fréquentes

Permission denied

Cause :

  • absence de privilèges root.

Solution :

sudo tcpdump

Mauvaise interface réseau

Cause :

  • interface inexistante.

Solution :

tcpdump -D

Aucun paquet affiché

Causes possibles :

  • mauvais filtre ;
  • aucun trafic ;
  • mauvaise interface ;
  • pare-feu.

Capture trop volumineuse

Solution :

  • ajouter des filtres ;
  • limiter avec -c ;
  • utiliser host, port ou net.

18. Bonnes pratiques de sécurité

  • Évite de capturer inutilement tout le réseau.
  • Protège les fichiers .pcap.
  • Supprime les captures sensibles après analyse.
  • Utilise HTTPS et TLS pour limiter les données lisibles.
  • Analyse les captures sur une machine sécurisée.
  • Ne capture pas de données sans autorisation.
  • Filtre au maximum pour réduire l’exposition des données.

19. Pour aller plus loin

Tu peux approfondir :

  • Wireshark ;
  • analyse TLS ;
  • forensic réseau ;
  • détection d’intrusion ;
  • Suricata ;
  • Zeek ;
  • NetFlow ;
  • analyse MQTT IoT ;
  • captures VLAN ;
  • IPv6 ;
  • sécurité DNS.

20. Liens utiles et documentation

Documentation officielle tcpdump

https://www.tcpdump.org/manpages/tcpdump.1.html

Documentation officielle complète des options et filtres BPF.

Documentation Debian sur tcpdump

https://packages.debian.org/bookworm/tcpdump

Permet de consulter les versions Debian et les dépendances.

Documentation Ubuntu tcpdump

https://manpages.ubuntu.com/manpages/noble/man8/tcpdump.8.html

Version adaptée aux systèmes Ubuntu récents.

RFC ICMP

https://datatracker.ietf.org/doc/html/rfc792

Référence officielle du protocole ICMP.

RFC DNS

https://datatracker.ietf.org/doc/html/rfc1035

Documentation officielle DNS.

OpenClassrooms — Comprendre les réseaux TCP/IP

https://openclassrooms.com/fr/courses/7170496-initiez-vous-aux-reseaux-tcp-ip

Très bon cours d’introduction réseau.

OpenClassrooms — Sécurisez votre réseau

https://openclassrooms.com/fr/courses/1750566-securisez-votre-reseau-grace-aux-vpn-et-firewall

Complète parfaitement l’analyse réseau.

21. Idées de TP

TP 1 — Analyse HTTP

Objectif :

  • capturer une requête HTTP ;
  • identifier :
    • méthode ;
    • User-Agent ;
    • Host.

TP 2 — Analyse DNS

Objectif :

  • capturer plusieurs requêtes DNS ;
  • identifier les serveurs utilisés.

TP 3 — Diagnostic SSH

Objectif :

  • vérifier une connexion SSH ;
  • identifier :
    • SYN ;
    • SYN-ACK ;
    • ACK.

TP 4 — Analyse MQTT

Objectif :

  • capturer le trafic MQTT ;
  • identifier les topics et échanges.

TP 5 — Détection de scan réseau

Objectif :

  • lancer un scan Nmap ;
  • détecter les SYN avec tcpdump.

TP 6 — Analyse d’un fichier PCAP

Objectif :

  • ouvrir une capture ;
  • identifier :
    • protocoles ;
    • IP ;
    • anomalies ;
    • ports utilisés.
Retour en haut