[[Vorlage(Getestet, focal, jammy)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Programme_kompilieren:] [:Terminal: Ein Terminal öffnen] [:mit_Root-Rechten_arbeiten:] }}} [[Inhaltsverzeichnis(2)]] [[Bild(./nmap_logo.png, 85, left)]] [https://nmap.org/ Nmap] {en} oder auch "Network Mapper" ist ein [:Portscan:Portscanner], der seit 1997 vom "Nmap-Developer-Team" entwickelt wird. Mit Nmap lassen sich Netzwerke und / oder Computer im Internet (d.h. mit eigener IP-Adresse) auf offene Ports und den darauf lauschenden Diensten prüfen. Nmap kann z.B. zum Testen der eigenen Firewall-Konfiguration eingesetzt werden oder auch zum Testen des eigenen Computers auf offene Ports und (eventuell unerwünschte) im Hintergrund laufende Dienste. {{{#!vorlage Warnung Das Scannen von Ports auf fremden Rechnern ist zwar nicht generell verboten, aber dennoch [wikipedia:Portscanner#Rechtliche_Aspekte:rechtlich umstritten]. Nmap als Portscanner sollte daher nur für eigene Rechner verwendet werden. }}} = Installation = [[Bild(./nmap.png, 200, right)]] Folgendes Paket muss installiert [1] werden: {{{#!vorlage Paketinstallation nmap }}} [[Anker(Manuell)]] == Aus dem Quelltext == Alternativ kann auch die neueste Version von nmap kompiliert [2] werden, da die Version aus den offiziellen Paketquellen meist etwas älter ist. Damit die für die Kompilation notwendigen Werkzeuge beisammen sind, muss zuerst das Paket [packages:build-essential:] installiert werden. {{{#!vorlage Paketinstallation build-essential, main }}} Nun lädt man den aktuellen Quelltext als Archivdatei [https://nmap.org/dist/ nmap-VERSION.tar.bz2] {dl} herunter. Um Nmap zu kompilieren, öffnet man ein Terminal [3] und führt die folgenden Befehle im Downloadverzeichnis aus: {{{#!vorlage Befehl bzip2 -cd nmap-VERSION.tar.bz2 | tar xvf - cd nmap-VERSION ./configure make sudo checkinstall ## oder sudo make install }}} Der letzte Befehl [:checkinstall:] erstellt und installiert ein DEB-Paket. == Snap-Paket == Außerdem lässt sich `nmap` mittels eines [:Snap:]-Paketes installieren: {{{#!vorlage Befehl sudo snap install nmap }}} Da das Snap-Paket allerdings in einer Sandbox läuft, muss ihm manuell mithilfe eines [:snap/#Schnittstellen-Interfaces-Slots-und-Plugs:Plugs], [https://snapcraft.io/docs/network-control-interface network-control] {en}, Zugang zum Netzwerk gewährt werden. Andernfalls scheitert `nmap`, wenn es mit [:Root-Rechte:Root-Rechten] gestartet wird. Dazu dient der Befehl `snap connect`: {{{#!vorlage Befehl sudo snap connect nmap:network-control }}} = Bedienung = Um Nmap zu starten, öffnet man ein Terminal [3] und führt den folgenden Befehl aus: {{{#!vorlage Befehl sudo nmap [Art(en) des Scans] [Zielbezeichnung] }}} Als ''Zielbezeichnung'' sollte eine IP-Adresse (oder ein Adressbereich) angegeben werden. Wird Nmap ohne Angabe eines Ziels aufgerufen, so erhält man als Ausgabe eine kurze Übersicht über die verschiedenen Scan-Techniken und Optionen. {{{#!vorlage Hinweis Nmap kann auch ohne Root-Rechte gestartet werden, allerdings ist der Funktionsumfang (also die Art der möglichen Scans) dann stark eingeschränkt. Alternativ können entsprechende [#Root-Privilegien Rechte] `nmap` dauerhaft erteilt werden. }}} == Scan-Techniken == Nmap kennt verschiedene Scan-Techniken, die wie folgt aufgerufen werden können: ||<-2 tableclass="zebra_start3" rowclass="titel" :> nmap - Scan-Techniken || ||Scan Technik||Beschreibung|| ||`-sT` ||Einfacher Connect Scan. Hierbei wird pro zu scannendem Port eine volle TCP-Verbindung auf- und wieder abgebaut. Dieser Scan steht auch zur Verfügung, wenn '''nmap''' ohne Root-Recht aufgerufen wird.|| ||`-sS` ||"SYN-Stealth-Scan": Ähnlich `-sT`, allerdings wird keine komplette TCP-Verbindung aufgebaut, daher unauffälliger. (Standard bei Root-Rechten) || ||`-sU`||Scannt UDP-Ports statt TCP.|| ||`-sn`||Ping-Scan: Prüft nur auf Erreichbarkeit über ICMP-Echo-Request, TCP-SYN-Paket auf Port 443, TCP-ACK-Paket auf Port 80 und ICMP-Timestamp-Request. Sinnvoll, um ganze Netzbereiche auf aktive Hosts zu testen.|| || `-sO` || Internet-Protokoll (''IP'') Scan|| || `--scanflags ` || Flags für TCP-Scan festlegen|| || `-sI ` || [wikipedia_en:Idle_scan:Idle]-Scan (TCP) || || `-6` || Scannt auch [wikipedia:IPv6:]-Adressen|| {{{#!vorlage Experten Folgende etwas exotischere Techniken (und noch weitere) können in Einzelfällen sinnvoll sein. Es empfiehlt sich aber das vorherige Studium der [:man:Manpage] oder der [https://nmap.org/ Homepage] {en} von nmap, um die Besonderheiten und möglichen Erkenntnisse zu verstehen. ||<-2 tableclass="zebra_start3" rowclass="titel" :> Besondere Scantechniken || ||Scan Technik||Beschreibung|| ||`-sF` , `-sN` , `-sX`||nmap sendet an die zu scannenden Ports bewusst manipulierte bzw. falsche TCP-Pakete. Anhand der Reaktion des Ports (bzw. des Servers) lassen sich ggf. Rückschlüsse ziehen, ob der Port offen oder von einer Firewall geschützt ist. Im Vergleich zu `-sT` oder `-sR` ebenfalls unauffälliger.|| ||`-sA`, `-sW`||[wikipedia_en:Transmission_Control_Protocol#CONNECTION-ESTABLISHMENT:ACK] und [https://nmap.org/book/scan-methods-window-scan.html Window] {en} Scan. Für die Einrichtung einer Verbindung zu einem Port. Besonders gut zum Erkennen von Firewalls.|| }}} == Optionen == Nmap kennt diverse Optionen, die mit den oben genannten Scan-Techniken kombiniert werden können: === Versions- und OS-Erkennung === ||<-2 tableclass="zebra_start3" rowclass="titel" :> nmap - Optionen (Version und OS) || ||Option||Beschreibung|| ||`-sV`||Versucht durch zusätzliche Tests, den Dienst auf jedem offenen Port zu identifizieren.|| ||`-O`||OS-Detection: Versucht über besondere Eigenarten der Netzwerkimplementierungen das Betriebssystem des Zieles zu identifizieren.|| ||`-A`||Kurzform für `-sV -O -sC --traceroute`|| === Ports === Standardmäßig scannt Nmap alle Ports von 1 bis 1024, sowie die höheren, die in der Datei '''/usr/share/nmap/nmap-services''' aufgeführt sind. Folgende Optionen erzeugen ein abweichendes Verhalten: ||<-2 tableclass="zebra_start3" rowclass="titel" :> nmap - Optionen (Ports) || ||Option||Beschreibung|| ||`-p X | X-Y | X,Y,Z`||Scannt Port X, die Ports X-Y oder die Ports X,Y,Z|| || `--exclude-ports X | X-Y | X,Y,Z` || Schließt die angegebenen Ports von der mit `-p` angegebenen Reichweite aus || ||`-p-`||Alle Ports scannen|| ||`-F`||Schneller Scan, scannt nur die bekannten Ports, welche in der Datei '''nmap-services''' aufgeführt sind.|| ||`-r`||Scannt alle Ports in numerischer Reihenfolge, was zu besserer Übersichtlichkeit mit der Option `-v` führen kann. Standardmäßig wählt nmap eine zufällige Reihenfolge.|| === sonstige Optionen (Ausgabe/Firewalls/Spoofing) === ||<-2 tableclass="zebra_start3" rowclass="titel" :> nmap - Optionen (Sonstige) || ||Option||Beschreibung|| ||`-Pn`||Normalerweise überprüft nmap vor einem vollen Portscan, ob der Rechner überhaupt existiert und online ist (s. Scan-Technik `-sn`). Diese Option schaltet das ab und wird benötigt um Hosts zu scannen, auf denen kein Webserver läuft und die Ping blockieren.|| ||`-e eth0`||Weist nmap explizit an, die Netzwerkschnittstelle `eth0` zu nutzen. Normalerweise wählt nmap die Schnittstelle selber aus.|| ||`-oN/oX/oS/oG DATEI`||Protokolliert den Scan in '''DATEI''' im Format ''XML'' / ''s|