Aller au contenu
Sécurité medium

nmap : analyser l'exposition réseau

23 min de lecture

Quand on doit découvrir les machines actives sur un réseau, identifier les ports ouverts sur un serveur, ou auditer la sécurité d'une infrastructure, nmap est l'outil de référence. Créé en 1997 par Gordon Lyon (Fyodor), ce scanner réseau open source permet d'explorer, analyser et sécuriser des infrastructures de toute taille.

  • Découvrir les hôtes actifs sur un réseau
  • Scanner les ports et identifier les services
  • Détecter le système d'exploitation des cibles
  • Utiliser les scripts NSE pour l'audit de sécurité
  • Exporter les résultats pour documentation et comparaison

nmap fait partie des outils de reconnaissance réseau. Chaque outil a sa spécialité :

OutilSpécialitéQuand l'utiliser
nmapDécouverte hôtes/ports/servicesCartographie réseau, audit sécurité
masscanScan très rapideGrands réseaux (millions d'IP)
netcatConnexion manuelleTest ponctuel d'un service
tcpdumpCapture de paquetsAnalyse du trafic en temps réel
wiresharkAnalyse protocolaireDébogage réseau approfondi
niktoScan vulnérabilités webAudit serveurs HTTP

Quand utiliser nmap vs masscan ?

Situationnmapmasscan
Scan d'un serveur✅ Détails completsOverkill
Scan réseau /24✅ Parfait
Scan Internet entier❌ Trop lent✅ Conçu pour
Détection de services-sV❌ Limité
Scripts personnalisés✅ NSE
Détection d'OS-O

Workflow typique d'audit :

Fenêtre de terminal
# 1. Découverte des hôtes actifs (rapide)
nmap -sn 192.168.1.0/24
# 2. Scan des ports courants sur les hôtes trouvés
nmap -F -oA scan-initial 192.168.1.10-50
# 3. Scan approfondi sur les cibles intéressantes
nmap -sV -sC -O -oA scan-detail 192.168.1.42
# 4. Recherche de vulnérabilités
nmap --script vuln -p 80,443 192.168.1.42

🧠 Modèle mental — Comment fonctionne nmap

nmap = Définir la cible → Choisir le type de scan → Analyser les résultats

Modèle mental nmap : Cible (IP/réseau) → Type de scan (SYN/TCP/UDP) → Découverte (ports/services/OS)

Points clés

  • nmap envoie des paquets réseau pour découvrir hôtes, ports et services
  • Le scan SYN (-sS) est le plus courant : rapide et discret
  • Le scan TCP Connect (-sT) complète la connexion : plus visible mais fiable
  • Le scan UDP (-sU) est lent mais détecte DNS, DHCP, SNMP
  • L'option -A combine : détection OS, services, scripts et traceroute
  • -T0 à -T5 contrôle la vitesse (T4 = bon compromis rapidité/discrétion)

Règles d'or

1
Toujours avoir une autorisation avant de scanner Scanner sans autorisation est illégal et peut être considéré comme une attaque
2
Commencer par un scan léger puis approfondir Un scan -A ou -p- sur un grand réseau peut prendre des heures et déclencher des alertes
3
Exporter les résultats pour comparaison -oA génère tous les formats : permet de comparer l'état du réseau dans le temps

Vocabulaire essentiel

-sS
Scan SYN (semi-ouvert, rapide)
-sT
Scan TCP Connect (complet)
-sU
Scan UDP
-p 22,80,443
Ports spécifiques
-p-
Tous les 65535 ports
-A
Scan agressif (OS + services + scripts)
📚 Pour aller plus loin — 6 options avancées
-sV
Détection des versions de services
-O
Détection du système d'exploitation
-sn
Ping scan (découverte hôtes sans scan ports)
--script
Exécuter des scripts NSE
-T4
Timing agressif (rapide)
-oA
Exporter dans tous les formats

nmap envoie des paquets réseau vers les cibles, analyse les réponses (ou leur absence), et en déduit l'état des ports et les services qui tournent.

Fenêtre de terminal
nmap [OPTIONS] [CIBLE]
ScanOptionUsageVitesse
SYN-sSScan standard (semi-ouvert)Rapide
TCP Connect-sTConnexion complèteMoyen
UDP-sUServices UDP (DNS, DHCP)Lent
Ping-snDécouverte hôtes uniquementTrès rapide

Le scan SYN (-sS) est le plus utilisé :

Fenêtre de terminal
# Scan SYN (nécessite root) - rapide et discret
sudo nmap -sS 192.168.1.100
# Scan TCP Connect - pas besoin de root, mais plus lent
nmap -sT 192.168.1.100

Différence technique :

  • SYN : envoie SYN, reçoit SYN-ACK, envoie RST (pas de connexion complète)
  • TCP Connect : établit une vraie connexion TCP (3-way handshake complet)
SyntaxeSignificationExemple
-p NPort N seul-p 22 → port SSH
-p N,M,PPorts N, M et P-p 22,80,443
-p N-MDe N à M-p 1-1024 → ports privilégiés
-p-Tous les 65535 portsExhaustif mais lent
-FFast (100 ports courants)Rapide
Fenêtre de terminal
# Détection des versions de services
nmap -sV 192.168.1.100
# Détection du système d'exploitation
sudo nmap -O 192.168.1.100
# Scan "agressif" : OS + services + scripts + traceroute
sudo nmap -A 192.168.1.100

L'option -T contrôle l'agressivité du scan :

NiveauNomUsage
-T0ParanoidÉvitement IDS extrême
-T1SneakyÉvitement IDS
-T2PoliteCharge réseau réduite
-T3NormalPar défaut
-T4AggressiveRéseaux rapides et fiables
-T5InsaneTrès rapide, risque de rater des ports

Recommandation : -T4 pour les audits internes, -T2 ou -T3 pour rester discret.

Fenêtre de terminal
# Format normal (lisible)
nmap -oN scan.txt 192.168.1.100
# Format XML (pour outils d'analyse)
nmap -oX scan.xml 192.168.1.100
# Format grepable (pour scripts)
nmap -oG scan.gnmap 192.168.1.100
# Tous les formats en une fois
nmap -oA scan-2026-01-28 192.168.1.100
Fenêtre de terminal
sudo apt update && sudo apt install nmap
nmap --version

Le NSE permet d'automatiser des tâches avancées grâce à des scripts en Lua.

CatégorieUsageRisque
safeScripts non intrusifsAucun
defaultExécutés avec -sCFaible
discoveryCollecte d'informationsFaible
versionDétection de versionsFaible
authTests d'authentificationMoyen
vulnDétection de vulnérabilitésMoyen
bruteForce bruteÉlevé
exploitExploitationTrès élevé
intrusiveScripts potentiellement disruptifsÉlevé
Fenêtre de terminal
# Scripts par défaut (safe + version)
nmap -sC 192.168.1.100
# Scripts d'une catégorie
nmap --script discovery 192.168.1.100
# Script spécifique
nmap --script http-title -p 80 192.168.1.100
# Plusieurs scripts
nmap --script "http-*" -p 80,443 192.168.1.100
# Scripts avec arguments
nmap --script http-brute --script-args userdb=users.txt -p 80 192.168.1.100
Fenêtre de terminal
# Recherche de vulnérabilités
nmap --script vuln -p 80,443 192.168.1.100
# Énumération HTTP
nmap --script http-enum -p 80,443 192.168.1.100
# Détection SSL/TLS
nmap --script ssl-enum-ciphers -p 443 192.168.1.100
# Informations SSH
nmap --script ssh-auth-methods -p 22 192.168.1.100
# Découvrir les scripts disponibles
nmap --script-help "*ssh*"

Ces patterns couvrent la grande majorité des scans réalisés au quotidien, de la simple découverte d'hôtes à l'audit de vulnérabilités. Chacun associe une formule générique et un exemple concret à adapter à votre cible autorisée.

Découvrir les ports ouverts sur une cible — le point de départ de toute analyse.

Fenêtre de terminal
# Formule
nmap <cible>
# Exemple
nmap 192.168.1.100
  • cible : adresse IP, nom d'hôte ou plage CIDR.

Scanner uniquement certains ports pour un résultat rapide et ciblé.

Fenêtre de terminal
# Formule
nmap -p <ports> <cible>
# Exemple
nmap -p 22,80,443,8080 192.168.1.100
  • -p : liste ou plage de ports à scanner.

Scanner les 65535 ports pour ne rien manquer.

Fenêtre de terminal
# Formule
nmap -p- <cible>
# Exemple
nmap -p- -T4 192.168.1.100

Très long sur un réseau complet : commencez plutôt par -F (fast scan) avant de cibler.

Identifier les versions exactes des services exposés.

Fenêtre de terminal
# Formule
nmap -sV <cible>
# Exemple
nmap -sV -p 22,80 192.168.1.100
  • -sV : interroge chaque service pour déterminer sa version.

Identifier le système d'exploitation de la cible par empreinte TCP/IP.

Fenêtre de terminal
# Formule
nmap -O <cible>
# Exemple
sudo nmap -O 192.168.1.100

-O nécessite les droits root pour accéder aux raw sockets.

Collecter le maximum d'informations en une seule passe : OS, services, scripts, traceroute.

Fenêtre de terminal
# Formule
nmap -A <cible>
# Exemple
sudo nmap -A -T4 192.168.1.100

Bruyant et facilement détecté : commencez par un scan léger avant d'y recourir.

Scanner discrètement sans compléter les connexions TCP.

Fenêtre de terminal
# Formule
sudo nmap -sS <cible>
# Exemple
sudo nmap -sS -T2 192.168.1.100
  • -sS : scan SYN, semi-ouvert — rapide et plus discret qu'un scan complet.

Découvrir les services UDP : DNS, DHCP, SNMP.

Fenêtre de terminal
# Formule
sudo nmap -sU <cible>
# Exemple
sudo nmap -sU -p 53,67,161 192.168.1.100

Très lent : ciblez toujours les ports UDP courants plutôt que de tout scanner.

Trouver les hôtes actifs sans scanner les ports.

Fenêtre de terminal
# Formule
nmap -sn <réseau>
# Exemple
nmap -sn 192.168.1.0/24
  • -sn : ping scan — découverte d'hôtes uniquement, rapide et non intrusif.

Détecter les vulnérabilités connues via les scripts NSE.

Fenêtre de terminal
# Formule
nmap --script vuln <cible>
# Exemple
nmap --script vuln -p 22,80,443 192.168.1.100

Intrusif : à réserver strictement à vos propres systèmes.

Sauvegarder les résultats pour analyse et comparaison dans le temps.

Fenêtre de terminal
# Formule
nmap -oA <prefix> <cible>
# Exemple
nmap -oA scan-2025-01-28 192.168.1.100
  • -oA : génère les formats Normal, XML et Grepable en une passe.

Ajuster la vitesse du scan selon le contexte.

Fenêtre de terminal
# Formule
nmap -T<0-5> <cible>
# Exemple
nmap -T4 192.168.1.100
  • -T0 à -T5 : de paranoid (0) à insane (5). -T4 est le bon compromis rapidité/discrétion.

Ces erreurs reviennent constamment et peuvent avoir des conséquences juridiques ou rendre un scan inexploitable. Les connaître protège autant votre temps que votre responsabilité.

Fenêtre de terminal
nmap entreprise-externe.com

Symptôme : alerte de sécurité, plainte juridique, blocage de votre IP.

Cause : scanner un réseau sans autorisation est illégal et assimilable à une attaque. Obtenez toujours une autorisation écrite avant de scanner quoi que ce soit.

Fenêtre de terminal
nmap -sS 192.168.1.100

Symptôme : erreur requires root privileges, ou bascule silencieuse vers un scan TCP Connect.

Cause : le scan SYN a besoin d'un accès aux raw sockets, réservé à root.

Fenêtre de terminal
sudo nmap -sS 192.168.1.100
Fenêtre de terminal
nmap -p- 192.168.0.0/16

Symptôme : un scan qui dure des heures, voire des jours.

Cause : 65535 ports multipliés par des milliers d'hôtes représentent des millions de tests.

Fenêtre de terminal
nmap -sn 192.168.0.0/16 | grep "up" && nmap -F <cibles>
Fenêtre de terminal
nmap -sU 192.168.1.100

Symptôme : un scan extrêmement lent, qui se compte en heures.

Cause : UDP ne renvoie pas d'ACK ; nmap attend l'expiration de chaque timeout.

Fenêtre de terminal
sudo nmap -sU -p 53,67,123,161 192.168.1.100

Vous ignorez les ports marqués filtered.

Symptôme : vous manquez des services actifs situés derrière un pare-feu.

Cause : filtered signifie « pas de réponse » (filtrage), ce qui n'équivaut pas à un port fermé. Utilisez --reason pour comprendre, et recoupez avec différents types de scans.

Fenêtre de terminal
nmap --reason -sS -sA 192.168.1.100
Fenêtre de terminal
nmap -A -T5 cible.com

Symptôme : IP bloquée, alertes IDS/IPS, scan interrompu.

Cause : -A est bruyant (scripts, OS, traceroute) et -T5 est très rapide.

Fenêtre de terminal
nmap -sV -T3 cible.com
Fenêtre de terminal
nmap 192.168.1.0/24

Symptôme : un scan lent à démarrer sur un grand réseau.

Cause : nmap tente de résoudre chaque IP en nom d'hôte.

Fenêtre de terminal
nmap -n 192.168.1.0/24

Vous vous fiez aveuglément à la sortie de -sV.

Symptôme : la version affichée ne correspond pas à la réalité.

Cause : un service peut masquer ou modifier sa bannière. Recoupez toujours avec d'autres outils comme telnet, curl ou nc.

Ce lab vous fait manipuler nmap sur des cibles autorisées (localhost et votre propre réseau). Comptez 20 minutes.

Le script suivant vérifie l'installation de nmap et prépare un dossier de résultats :

Fenêtre de terminal
# Scanner uniquement votre propre réseau
# Vérifier si nmap est installé
which nmap || echo "Installez nmap : sudo apt install nmap"
# Créer un dossier pour les résultats
mkdir -p ~/nmap-lab/results
cd ~/nmap-lab
# Vérifier les services locaux actifs
echo "=== Services locaux actifs ==="
ss -tlnp 2>/dev/null | head -20
echo "Lab prêt dans ~/nmap-lab"

Pour tout nettoyer à la fin : rm -rf ~/nmap-lab.

  1. Scan basique d'un hôte — découvrez les ports ouverts de localhost : nmap localhost. Sans options, nmap scanne les 1000 ports les plus courants. Pour plus de détails : nmap -v localhost.

  2. Scan de ports spécifiques — ciblez uniquement 22, 80 et 443 : nmap -p 22,80,443 localhost. Cibler des ports précis réduit fortement le temps de scan.

  3. Détection des versions de services — identifiez les versions : nmap -sV localhost. Chaque port ouvert s'affiche avec son service et sa version exacte (ex. OpenSSH 9.6p1).

  4. Scan de découverte réseau — listez les hôtes actifs sans scanner les ports : nmap -sn 192.168.1.0/24. Adaptez la notation CIDR à votre réseau. Avec résolution DNS : nmap -sn -R 192.168.1.0/24.

  5. Exporter les résultats — scannez et archivez dans tous les formats : nmap -oA ~/nmap-lab/results/localhost localhost. Trois fichiers sont créés : .nmap, .xml, .gnmap.

Ces exercices vont du premier scan à l'audit de vulnérabilités. Toutes les cibles sont localhost ou votre réseau. Lisez l'énoncé, cherchez la commande, puis dépliez la solution.

Exercice 1 — Scan basique. Scannez localhost pour découvrir les ports ouverts.

Indice : la commande la plus simple, nmap <cible>.

Voir la solution
Fenêtre de terminal
nmap localhost

Sans options, nmap scanne les 1000 ports TCP les plus courants.

Exercice 2 — Ports spécifiques. Scannez uniquement les ports 80, 443 et 8080 sur localhost.

Indice : -p suivi des numéros séparés par des virgules.

Voir la solution
Fenêtre de terminal
nmap -p 80,443,8080 localhost

-p cible des ports précis pour un scan rapide.

Exercice 3 — Détection de services. Identifiez les versions des services sur les ports ouverts de localhost.

Indice : -sV interroge les services pour leur version.

Voir la solution
Fenêtre de terminal
nmap -sV localhost

-sV envoie des probes spécifiques pour identifier la version de chaque service.

Exercice 4 — Découverte réseau. Listez tous les hôtes actifs de votre réseau local, sans scanner les ports.

Indice : -sn réalise un ping scan.

Voir la solution
Fenêtre de terminal
nmap -sn 192.168.1.0/24

-sn est rapide et non intrusif, idéal pour cartographier un réseau.

Exercice 5 — Export multi-format. Scannez localhost et exportez dans les formats normal, XML et grepable.

Indice : -oA génère trois fichiers avec le même préfixe.

Voir la solution
Fenêtre de terminal
nmap -oA scan-localhost localhost

-oA (All outputs) est pratique pour archiver et analyser les scans.

Exercice 6 — Scan complet avec timing. Scannez tous les ports de localhost avec un timing agressif.

Indice : -p- pour tous les ports, -T4 pour le timing.

Voir la solution
Fenêtre de terminal
nmap -p- -T4 localhost

-p- est exhaustif mais long ; -T4 accélère sans être trop bruyant.

Exercice 7 — Détection d'OS. Identifiez le système d'exploitation de localhost.

Indice : -O nécessite sudo pour les raw sockets.

Voir la solution
Fenêtre de terminal
sudo nmap -O localhost

-O utilise des signatures TCP/IP pour identifier l'OS.

Exercice 8 — Scripts NSE de découverte. Utilisez les scripts NSE de découverte sur les ports 22 et 80 de localhost.

Indice : --script discovery lance les scripts de collecte d'informations.

Voir la solution
Fenêtre de terminal
nmap --script discovery -p 22,80 localhost

Les scripts NSE automatisent la collecte d'informations sur les services.

Exercice 9 — Audit de vulnérabilités. Recherchez les vulnérabilités connues sur les ports web de localhost.

Indice : --script vuln lance les scripts de détection de vulnérabilités.

Voir la solution
Fenêtre de terminal
nmap --script vuln -p 80,443,8080 localhost

Les scripts vuln testent les CVE connues sur les services exposés.

Quand un scan échoue ou se comporte mal, ces méthodes de diagnostic et ces erreurs fréquentes couvrent la grande majorité des cas.

Fenêtre de terminal
# Mode verbeux : progression en temps réel
nmap -v <cible>
# Mode très verbeux : détails complets de chaque étape
nmap -vv <cible>
# Comprendre pourquoi un port est open/closed/filtered
nmap --reason <cible>
# Voir les paquets envoyés et reçus
nmap -d <cible>
# Déboguer un script NSE
nmap --script-trace --script <script> <cible>
ErreurCause probableSolution
You requested a scan type which requires root privilegesScan SYN (-sS), OS (-O) ou UDP (-sU) sans sudoAjouter sudo devant la commande
Host seems downPare-feu bloquant l'ICMP, hôte éteint, ou mauvaise IPForcer le scan avec -Pn pour ignorer le ping
All 1000 scanned ports are filteredPare-feu strict, hôte protégé, ou mauvais réseauEssayer un ACK scan -sA ou ajuster --scan-delay
Scan taking too longRéseau trop grand, timing trop lent, trop de portsRéduire le périmètre, augmenter le timing, utiliser -F

À garder sous la main : la syntaxe générale, la sélection de ports, les types de scans et les options d'export les plus utilisées.

SyntaxeSignificationExemple
nmap <cible>Scan basique des 1000 ports courantsnmap 192.168.1.100
nmap <réseau>/24Scanner tout un sous-réseaunmap 192.168.1.0/24
nmap -iL fichier.txtLire les cibles depuis un fichiernmap -iL hosts.txt
SyntaxeSignificationExemple
-p <ports>Ports spécifiques-p 22,80,443
-p <debut>-<fin>Plage de ports-p 1-1024
-p-Tous les 65535 portsnmap -p- localhost
-FFast scan (100 ports)nmap -F localhost
SyntaxeSignificationExemple
-sSScan SYN (semi-ouvert, rapide)sudo nmap -sS localhost
-sTScan TCP Connect (complet)nmap -sT localhost
-sUScan UDPsudo nmap -sU -p 53 localhost
-snPing scan (découverte d'hôtes)nmap -sn 192.168.1.0/24
SyntaxeSignificationExemple
-sVDétection des versions de servicesnmap -sV localhost
-ODétection du système d'exploitationsudo nmap -O localhost
-AScan agressif (OS + services + scripts)sudo nmap -A localhost
--script <nom>Exécuter un script NSE--script http-title
--script <catégorie>Scripts d'une catégorie--script vuln
SyntaxeSignificationExemple
-T<0-5>Niveau de timing-T4 (agressif)
-nPas de résolution DNSnmap -n 192.168.1.0/24
--min-ratePaquets par seconde minimum--min-rate 1000
-oN <fichier>Export au format normal-oN scan.txt
-oX <fichier>Export au format XML-oX scan.xml
-oA <prefix>Export dans tous les formats-oA scan-2025
-PnIgnorer le ping (hôte « down »)nmap -Pn localhost
--reasonAfficher la raison du résultatnmap --reason localhost

Vous maîtrisez nmap quand vous pouvez cocher chacun de ces points sans hésiter :

  • Je sais scanner un hôte ou un réseau.
  • Je sais cibler des ports spécifiques.
  • Je sais détecter les versions de services.
  • Je sais détecter le système d'exploitation.
  • Je sais utiliser les scripts NSE.
  • Je sais exporter et documenter mes scans.
  • Je sais ajuster le timing selon le contexte.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

10 questions
8 min.
80% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

Nmap est l'outil incontournable pour la découverte réseau et l'audit de sécurité. Sa polyvalence (scans TCP/UDP, détection OS/services, scripts NSE) en fait un allié puissant pour cartographier et sécuriser vos infrastructures.

Points clés à retenir :

  1. Toujours avoir une autorisation avant de scanner
  2. Commencer simple (-sn, -F) puis approfondir
  3. -sV pour les services, -O pour l'OS, -A pour tout
  4. -T4 pour la rapidité, -T2 pour la discrétion
  5. -oA pour exporter dans tous les formats
  6. --script vuln pour l'audit de vulnérabilités

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn