Nmap

Aus wiki.archlinux.de
Version vom 5. September 2010, 12:09 Uhr von Robert (Diskussion | Beiträge) (pacman -Sy angepasst, siehe https://bbs.archlinux.de/viewtopic.php?id=17347)

Nmap ist ein Netzwerk-Analyse und -Sicherheitstool. Mittels Nmap können Netzwerkrechner auf geöffnete Ports untersucht werden. Nmap ist somit ein Portscanner. Der Programmname steht für „Network mapper“ (Netzwerkkartograph).

Nmap ist Doppel-Lizensiert und kann einerseits als freie Software unter der GPL bezogen werden, aber andererseits auch unter einer anderen Lizenz erworben werden, um es in Programme zu integrieren, die nicht unter der GPL stehen.

Installation

Nmap ist im „extra“-Repository zu finden, und kann aus diesem heraus auch mittels Pacman installiert werden.

pacman -S nmap

Neben dem Befehlszeilenprogramm gibt es auch ein GUI für Nmap names Zenmap. Allerdings ist dieses GUI nicht in den Repositorys und auch nicht im AUR zu finden, sondern muss von der offiziellen Seite heruntergeladen werden.

Grundlegende Verwendung

Nmaps Hauptfunktion ist das Analysieren von Netzwerkrechnern und die Darstellung der auf diesen Rechnern geöffneten Ports.

$ nmap testserver.lan

Starting Nmap 4.76 ( http://nmap.org ) at 2009-06-02 12:36 CEST
Warning: Hostname testserver.lan resolves to 2 IPs. Using 192.168.6.242.
Interesting ports on testserver.lan (192.168.6.242):
Not shown: 968 filtered ports
PORT     STATE SERVICE
25/tcp   open  smtp
53/tcp   open  domain
80/tcp   open  http
[weitere Ports]

Nmap done: 1 IP address (1 host up) scanned in 3.69 seconds

Es wird der lokale Rechner „testserver.lan“ auf geöffnete Ports untersucht. Die Portnummer, sowie desssen Status als auch der Service-Name, falls bekannt, wird dann angezeigt. Möchte man statt der normalen Ausgabe eine detailiertere Ausgabe erhalten, kann man Nmap um den Parameter „-v“ erweitern.

$ nmap -v testserver.lan

Starting Nmap 4.76 ( http://nmap.org ) at 2009-06-02 12:40 CEST
Warning: Hostname testserver.lan resolves to 2 IPs. Using 192.168.6.242.
Initiating Ping Scan at 12:40
Scanning 192.168.6.242 [1 port]
Completed Ping Scan at 12:40, 0.00s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 12:40
Completed Parallel DNS resolution of 1 host. at 12:40, 0.00s elapsed
Initiating Connect Scan at 12:40
Scanning testserver.lan (192.168.6.242) [1000 ports]
Discovered open port 389/tcp on 192.168.6.242
Discovered open port 80/tcp on 192.168.6.242
Discovered open port 25/tcp on 192.168.6.242
Discovered open port 636/tcp on 192.168.6.242
[weitere Ports]
Completed Connect Scan at 12:40, 3.61s elapsed (1000 total ports)
Host testserver.lan (192.168.6.242) appears to be up ... good.
Interesting ports on testserver.lan (192.168.6.242):
Not shown: 968 filtered ports
PORT     STATE SERVICE
25/tcp   open  smtp
53/tcp   open  domain
80/tcp   open  http
[weitere Ports]
Read data files from: /usr/share/nmap
Nmap done: 1 IP address (1 host up) scanned in 3.67 seconds

Hiermit erhält man eine ausführlichere Information darüber, was derzeit abgearbeitet wird.

Nmap ist auch in der Lage, IP-Bereiche zu analysieren. Somit kann eine „Karte“ des Netzwerkes erstellt werden, das dadurch untersucht wird. Man gibt einfach eine Start-IP und die Netzmaske an.

$ nmap 192.168.6.0/24

Starting Nmap 4.76 ( http://nmap.org ) at 2009-06-02 13:56 CEST
Interesting ports on 192.168.6.62:
Not shown: 990 closed ports
PORT      STATE SERVICE
135/tcp   open  msrpc
139/tcp   open  netbios-ssn
[weitere Ports]

Interesting ports on 192.168.6.72:
Not shown: 998 closed ports
PORT    STATE SERVICE
80/tcp  open  http
111/tcp open  rpcbind

[Weitere Hosts]

Nmap done: 256 IP addresses (20 hosts up) scanned in 42.52 seconds

Wenn man sich im Bezug auf die Netzmaske nicht sicher ist, kann man sich zum Beispiel mittels des Tools ipcalc die Netzmaske anzeigen lassen, was in den meisten Fällen zuverlässig funktioniert.

Möchte man nicht nach allen Ports scannen, sondern nur nach einem bestimmten Port, oder bestimmten Port-Bereich kann man dies mittels des Parameters „-p“ erreichen, den man mehrfach verwenden kann.

nmap testserver.lan -p22,25,40 -p1024-2048

Dies scannt nach den Ports 22,25 und 40, sowie alle Ports im Bereich von 1024 bis 2048.

Tiefergehende Verwendung

Neben den „Standardaufrufen“ von Nmap kann man den Aufruf auch noch spezieller konfigurieren. Einige dieser Aufrufe bedürfen root-Rechten, da sie sowohl starke Rechnerlast, als auch viel Netzwerktraffic generieren können.

Hat man in einem Netzwerk mehrere Server stehen, und auch diverse Clients, und möchte man nun das Netzwerk scannen, aber, um die Ausgabe schlank zu halten, die Server von der Ausgabe ausnehmen, kann man sich des Parameters „--exclude“ oder „--excludefile“ annehmen.

nmap 192.168.6.0/24 -exclude testserver.lan
nmap 192.168.6.0/24 -excludefile servers.list

Beim ersten Aufruf wird der Host testserver.lan nicht gescannt. Wenn man den zweiten Aufruf verwendet, werden alle Hosts, die in der Datei „server.list“ stehen nicht gescannt. In der Datei darf je Zeile nur ein Host stehen.

Wenn man seinen zu untersuchenden Server daghingehend konfiguriert hat, dass er auf Ping-Anfragen nicht antwortet, wird Nmap bei einem normalen Aufruf lediglich melden, dass der Host nicht online ist. Dies kann man umgehen, indem man den Parameter „-PN“ übergibt.

nmap -PN testserver.lan

Dieser Aufruf dauert etwas länger, als der herkömmliche Aufruf. Sollte ein Host tatsächlich offline sein, dauert es so lange, wie der Timeout ist. Den Timeout kann man mit „--host-timeout“ gefolgt von einer Zeitangabe konfigurieren.

nmap -PN testserver.lan --timeout=500
nmap -PN testserver.lan --timeout=20s
nmap -PN testserver.lan --timeout=5m
nmap -PN testserver.lan --timeout=2h

Im Beispiel werden bei den vier Aufrufen Timeouts gesetzt, zuerst eine Angabe in Millisekunden (keine Angabe), dann in Sekunden (s), Minuten (m) und Stunden (h).

Standardmäßig benutzt Nmap den Nameserver des Betriebssystems. Will man aus irgendwelchen Gründen einen anderen Nameserver benutzen, so bietet Nmap dafür den Parameter „--dnsserver“.

nmap testserver.lan --dnsserver 208.67.222.222

Hier wird der Server „testserver.lan“ mit einem der OpenDNS-Nameserver aufgelöst.

Nmap bietet auch die Möglichkeit, zu ermitteln, welches Betriebssystem auf einem bestimmten Host läuft. Diese Ermittlung funktioniert recht zuverlässig.

$ nmap -O testserver.lan

[normale Ausgaben]
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.17 - 2.6.25
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at
http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.54 seconds

Auf dem gescannten Host läuft Arch Linux mit dem Kernel 2.6.29-ARCH. Ein ebenfalls gescanner Server, auf dem Windows Server 2008 läuft, wird von Nmap als „Microsoft Windows Vista, Microsoft Windows Vista Home Basic“ erkannt – Dennoch gibt dieser Scan einen guten Aufschluss darüber, welches System auf einem unbekannten Host lauft.

Anhand dessen kann man schnell feststellen, ob sich der Host rechtmäßig im Netz befindet. Ein Windows-Rechner in einen reinen Linux-Netzwerk (oder umgekehrt) ist auf jedenfalls etwas, worauf ein Administrator sein Augenmerk richten sollte, wenn er von dem Host nichts weiß.

Mit Nmap kann man in gewissem Rahmen auch Angriffe simulieren. Über verschiedene Optionen kann man IP-Header modifizieren, MAC-Adressen spoofen oder Pakete mit falscher Checksum absenden. Anhand der Reaktion des Servers kann man nun weitere Sicherheitsmaßnahmen ergreifen, oder Optionen der Firewall anpassen.

Eine ausführliche Beschreibung aller Parameter inklusive diverser praxisnaher Beispiele finden sich in der Manpage von Nmap.

Siehe auch

Weblinks