Der Befehl nmap (Network Mapper) scannt Netzwerke und findet offene Ports, laufende Dienste und Betriebssysteme. Er gehört zu den wichtigsten Werkzeugen für Netzwerkanalyse und Sicherheitsaudits.
Wichtig: Scanne nur Systeme, für die du eine ausdrückliche Genehmigung hast. Das unerlaubte Scannen fremder Netzwerke ist in vielen Ländern illegal und kann rechtliche Konsequenzen haben.
Syntax des nmap-Befehls
Die grundlegende Syntax lautet:
nmap [OPTIONEN] ZIEL
OPTIONEN- Flags, die den Scan-Typ und das Verhalten steuern.ZIEL- Eine IP-Adresse, ein Hostname oder ein Netzwerkbereich.
Installation
Auf den meisten Systemen ist nmap über die Paketverwaltung verfügbar.
Ubuntu und Debian:
sudo apt update && sudo apt install nmap
CentOS und Fedora:
sudo dnf install nmap
macOS (mit Homebrew):
brew install nmap
Einfacher Port-Scan
Der einfachste Aufruf scannt die 1000 häufigsten Ports eines Ziels:
nmap 192.168.1.100
Die Ausgabe zeigt offene Ports und die zugehörigen Dienste:
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
Scan-Typen
TCP SYN-Scan (Standard mit Root-Rechten)
Der SYN-Scan ist schnell und unauffällig. Er sendet nur SYN-Pakete und wartet auf Antworten, ohne die Verbindung vollständig aufzubauen:
sudo nmap -sS 192.168.1.100
TCP Connect-Scan
Ohne Root-Rechte führt nmap einen vollständigen TCP-Verbindungsaufbau durch:
nmap -sT 192.168.1.100
UDP-Scan
UDP-Dienste wie DNS oder DHCP erreichst du mit der Option -sU:
sudo nmap -sU 192.168.1.100
UDP-Scans dauern länger, da das Protokoll keine Verbindungsbestätigung kennt.
Ziele angeben
Einzelne Hosts
Scanne eine IP-Adresse oder einen Hostnamen:
nmap 192.168.1.100
nmap server.example.com
Netzwerkbereiche
Mit CIDR-Notation scannst du ganze Subnetze:
nmap 192.168.1.0/24
IP-Bereiche
Definiere Bereiche mit Bindestrich oder Komma:
nmap 192.168.1.1-50
nmap 192.168.1,2,3.100
Hosts ausschließen
Mit --exclude übergehst du bestimmte Adressen:
nmap 192.168.1.0/24 --exclude 192.168.1.1
Ports angeben
Bestimmte Ports scannen
Mit -p legst du fest, welche Ports geprüft werden:
nmap -p 22 192.168.1.100
nmap -p 80,443,8080 192.168.1.100
nmap -p 1-1000 192.168.1.100
Alle Ports scannen
Die Option -p- scannt alle 65535 Ports:
nmap -p- 192.168.1.100
Ports nach Namen
Du kannst Ports auch über den Dienstnamen angeben:
nmap -p ssh,http,https 192.168.1.100
Port-Zustände
Nmap unterscheidet verschiedene Port-Zustände:
- open - Ein Dienst nimmt Verbindungen auf diesem Port entgegen.
- closed - Der Port ist erreichbar, aber kein Dienst lauscht.
- filtered - Eine Firewall blockiert die Verbindung; nmap kann den Status nicht bestimmen.
Host-Erkennung (Ping-Scan)
Mit -sn prüfst du, welche Hosts in einem Netzwerk erreichbar sind, ohne Ports zu scannen:
sudo nmap -sn 192.168.1.0/24
Das ist nützlich, um einen schnellen Überblick über aktive Geräte zu bekommen.
Dienst- und Versionserkennung
Dienste und Versionen erkennen
Die Option -sV ermittelt, welche Software auf offenen Ports läuft:
sudo nmap -sV 192.168.1.100
Beispielausgabe:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu
80/tcp open http nginx 1.18.0
443/tcp open https nginx 1.18.0
Betriebssystem erkennen
Mit -O versucht nmap, das Betriebssystem des Ziels zu identifizieren:
sudo nmap -O 192.168.1.100
Alles auf einmal
Die Option -A kombiniert Betriebssystem-Erkennung, Versionserkennung, Script-Scanning und Traceroute:
sudo nmap -A 192.168.1.100
Scan-Geschwindigkeit
DNS-Auflösung deaktivieren
Mit -n überspringt nmap die DNS-Auflösung. Das beschleunigt Scans in großen Netzwerken:
sudo nmap -n 192.168.1.0/24
Timing-Vorlagen
Mit -T steuerst du die Geschwindigkeit von 0 (paranoid) bis 5 (aggressiv):
sudo nmap -T4 192.168.1.0/24
-T4 ist ein guter Kompromiss zwischen Geschwindigkeit und Zuverlässigkeit.
Ausgabe speichern
Normales Format
Mit -oN speicherst du die Ausgabe in lesbarem Format:
sudo nmap -sV 192.168.1.100 -oN scan-ergebnis.txt
XML-Format
Für die Weiterverarbeitung eignet sich das XML-Format:
sudo nmap -sV 192.168.1.100 -oX scan-ergebnis.xml
Grepbares Format
Die Option -oG erzeugt ein Format, das sich gut mit grep durchsuchen lässt:
sudo nmap -sV 192.168.1.100 -oG scan-ergebnis.grep
Nmap Scripting Engine (NSE)
Nmap enthält eine Scripting-Engine mit Hunderten vorgefertigter Skripte. Diese erweitern die Scan-Funktionen erheblich.
Skript ausführen
Mit --script rufst du ein bestimmtes Skript auf:
nmap --script http-headers 192.168.1.100
Standard-Skripte
Die Skriptkategorie default führt sichere, nützliche Skripte aus:
nmap -sC 192.168.1.100
Das entspricht --script=default.
Häufige Optionen im Überblick
| Option | Beschreibung |
|---|---|
-sS | TCP SYN-Scan (Standard mit Root) |
-sT | TCP Connect-Scan |
-sU | UDP-Scan |
-sV | Versionserkennung |
-O | Betriebssystem-Erkennung |
-A | Aggressive Erkennung (OS, Version, Scripts, Traceroute) |
-p | Ports angeben |
-sn | Ping-Scan (keine Ports) |
-n | Keine DNS-Auflösung |
-v | Ausführlichere Ausgabe |
-oN | Ausgabe in Datei (normales Format) |
Zusammenfassung
Der Befehl nmap scannt Netzwerke nach offenen Ports, erkennt laufende Dienste und identifiziert Betriebssysteme. Er ist unverzichtbar für Netzwerkdiagnose und Sicherheitsanalysen. Setze ihn verantwortungsvoll ein und nur auf Systemen, die dir gehören oder für die du eine Genehmigung hast.