Sicheres Netzwerk und Nmap

Tutorial - Portscanner und Ports

29.11.2012 von Hans-Christian Dirscherl
Port? Portscanner? Nmap? Wir bringen Licht ins Dunkel und zeigen wie Sie mit Nmap Sicherheitslecks entdecken und Angriffe abwehren.

Jeder Rechner im Internet hat offene Ports. Diese werden zur Kommunikation per Internet benötigt. Sie stellen Türen mit einer eindeutigen Kennung der Anwendung dar. Hacker dringen meist über unverschlossene Ports in fremde Systeme ein. Port-Kenntnisse helfen die Arbeits- und Funktionsweise von Firewalls zu verstehen.

Die Netzwerkprotokolle TCP (Transmission Control Protocol) und UDP (User Datagram Protocol) organisieren den Datenverkehr im World Wide Web. Sie sind verantwortlich, dass jede Application eine Portnummer erhält. Anhand dieser Nummer weiß das Programm, ob das ankommende Datenpaket bei ihm richtig ist. E-Mail-Pakete landen anhand der Kennung beim E-Mail-Client. Dagegen identifiziert der Web-Browser das Datagram, das für ihn bestimmt ist und zeigt es an. Alle anderen Anwendungen lehnen es ab. Ports sind somit Einlasskontrollen und regeln den Internet-Verkehr. Es wird kein Datenpaket von einer Anwendung geöffnet, für die es nicht bestimmt ist.

Sockets: Portnummer und IP-Adresse

TCP und UDP vergeben jedem Datenpaket eine Portnummer und IP-Adresse. Diese Kombination wird dem Inhalt des Datagrams im Datensegment vorangestellt und heißt Socket. Die Verknüpfung hält die Verbindung zwischen zwei Rechnern in beide Richtungen offen, sowohl auf dem Server als auch auf dem Client. Anhand des Codes wissen die Datenpakete wohin sie müssen. Die Anwendung auf dem Zielrechner erkennt mittels Chiffre, ob das Datagram richtig ist.

Jede Application hat bestimmte Ports. Ein POP3-Server wartet mit der Portnummer 110 auf seinen Einsatz. Ein Webserver dagegen "horcht" am Port 80, ob er benötigt wird.

Wenn Sie selbst einen Webserver auf Ihrem PC administrieren, müssen Sie die entsprechenden Portnummern bei der Konfiguration angeben. Üblicherweise ist dies 80. Im Fall, dass zwei Internet-Server gleichzeitig laufen sollen, geben Sie den Port beim Apache HTTP Server in der Konfigurationsdatei an.

Alle Datenpakete kennen anhand der Absender- und Zielportnummern im Kopfbereich ihres Datensegments ihr Ziel. Diese Daten fügen das TCP- und UDP-Protokoll hinzu.

Die Protokolle vergeben stets statische Portnummern an Prozesse von Servern. Clients wiederum erhalten immer eine dynamische Nummer. Die Anfrage an einen Apache-Webserver, Microsoft IIS (Internet Information Services) oder einen anderen HTTP-Server führt mit einer eindeutigen Rechner-Netzwerk-Adresse zu einer statischen IP-Adresse mit Portnummer 80. So wird aus 192.168.1.18 die Adresse 192.168.1.18:80. Fragt dagegen ein Server bei einem Client mit der IP-Adresse 192.168.100.12 an, lautet der dynamisch zugeordnete Socket für die angefragte Internetsite 192.168.100.12:49152.

Portnummern: Well known und registrierte Ports

Es gibt drei Kategorien von Portnummern. Well known ports (0-1023) vergibt IANA (Internet Assigned Numbers Authority). Nur privilegierte Benutzer sollen die bekannten Ports für bestimmte System-Prozesse und Anwendungen verwenden. Darunter fallen FTP, HTTP, IMAP, POP3, SMTP und Telnet. So weit es möglich ist, benutzen TCP und UDP die gleichen Portnummern. IANA führt als Service für die Community die registrered ports (1024-49151), oder als ephemeral ports (etwa "vergängliche Ports") bezeichnet, auf.

Einige Beispiele für well known Ports:

7 Echo

20 FTP-Datentransfer vom Server zum Client

21 FTP-Steuerbefehle durch den Client

23 Telnet-Kommunikation (unsichere Verbindungsmethode aus den Urzeiten des Internets, weil sie Daten unverschlüsselt überträgt)

25 SMTP-Mail-Versand

43 Whois

53 DNS-Auflösung von Domainnamen in IP-Adressen

80 http-Webserver

110 POP3-Client-Zugriff für Mail-Server

143 IMAP

194 IRC

389 LDAP

443 HTTPS

531 AIM, ICQ

666 DOOM-Online-Spiel

901 SWAT

989 FTPS-Daten

990 FTPS-Steuerbefehle

Software-Hersteller benutzen registrierte Ports für Programme, die ein Anwender persönlich installiert. Die Fehlermeldung "Fehler! Hyperlink-Referenz ungültig" tritt in diesem Zusammenhang auf. Ein bekannter registrierter Port ist SIP (Session Initiation Protocol) mit der Portnummer 5060. Das Protokoll wird bei VoIP-Diensten eingesetzt und stellt eine Alternative zum Skype-Protokoll dar. Auch 3306 ist ein Port, den Administratoren und Programmierer kennen dürften. Die MySQL-Datenbank besitzt diese Portnummer. MySQL wird auf Linux-Systemen eingesetzt und tritt häufig in Verbindung mit der Skriptsprache PHP auf. Alternativen zum HTTP-Port 80 stellen 8008 und 8080 dar. Sie kommen dann zum Zug, wenn neben einem Apache-Webserver parallel ein IIS auf einem System aktiviert ist oder zu Testzwecken ein zusätzlicher Webserver läuft.

Unter etc/services können Sie die Port-Liste Ihres Linux-Rechners einsehen. Bei Windows XP befindet sich diese Auflistung unter %WINDIR%\system32drivers\etc\services.

Die letzte Klasse beinhaltet die dynamic and/ or private ports, welche je nach Anforderung verwendet werden. Sie sind keiner Anwendung fest zugeordnet. Eine komplette Übersicht der Portnummern gibt es bei IANA.

Im nächsten Teil erfahren Sie, wie Sie Ports vor Eindringlingen schützen.

Ports offen lassen oder schließen

Rechner benötigen offene Ports, um mit dem Internet in Interaktion zu stehen. Allerdings stellt diese Art von Ports ein Sicherheitsrisiko dar. Über jede unverschlossene Portnummer eines Programms mit Sicherheitsleck kann ein Unbefugter ins System eindringen. Um ein System hundertprozentig abzusichern, müssen alle offenen Ports geschlossen werden. In diesem Fall funktioniert aber keine Kommunikation per Internet. Daher müssen zwingend einzelne Ports aufgesperrt bleiben.

Es gilt der Grundsatz, dass nur so viele Ports offen sind, wie benötigt werden. Faktisch heißt das, dass Ports von nicht benötigten Diensten geschlossen werden. Angreifer müssen sich so einen anderen Weg suchen, um ins System einzudringen.

Portliste auf einem Linuxsystem

Nutzer sollten wissen, welche Portnummern gerade auf ihren PCs zugänglich sind und mit welchen Ports Dienste "horchen". Zudem beobachten Anwender den Datenverkehr ihres Internet-Browsers, E-Mail-Clients, Filesharing-Tools und ihrer Instant Messaging-Anwendung. Hierzu verwenden sie am besten einen Sniffer. Diese Netzwerkanalyse-Tools zeichnen auf, wann welche Datenpakete Zielportnummern und Ausgangsports passieren. Die Freeware Wireshark unterstützt IPv4 und IPv6.

Portliste auf einem Windowssystem

Administratoren richten die Dienste, die benötigt werden, so ein, dass nur autorisierte PCs darauf zugreifen können. Dies können Rechner im Intranet sein. Das Betriebssystem Linux ermöglicht es Zugriffe auf Applikationen mittels iptables zu regeln. Außerdem ist die Firewall so praktikabel wie möglich einzustellen. Der Schutzwall hilft den Datenverkehr zu reglementieren, indem es Datenpakete nur nach eindeutigen Aufgaben zustellt. Die Sicherheitslösung kann Datenpakete etwa nur von vorher festgelegten IP-Adressen zulassen.

Für alle OS gibt es simple Netzwerk-Utilities. Mit diesen Werkzeugen erfahren Sie innerhalb weniger Sekunden, welche Portnummern auf Ihrem Rechner unverschlossen sind. Daher sollten Sie wissen, welche das sind und regelmäßig darsuf zurückgreifen. Nur, wenn Sie Ihr System und Netzwerk scannen, verhindern Sie das Eindringlinge Sicherheitslöcher finden.

Auf den nachfolgenden Seiten haben wir Ihnen eine Auswahl von Netzwerk-Hilfsprogrammen zusammengestellt.

Offene Ports mit Bordmitteln erkennen

Netstat unter Windows

Am leichtesten ist es aufgesperrte Ports mit den eigens vom Betriebssystem bereitgestellten Werkzeugen zu entdecken. Der Kommandozeilenbefehl netstat zeigt Ihnen, sowohl unter Linux als auch unter Windows, an, welche Netzwerkverbindungen zu Ihrem Rechner bestehen. Unter Windows Vista geben Sie das Kommando "netstat -an" in der DOS-Eingabeaufforderung an. Die DOS-Box starten Sie über "Start, cmd". Windows listet alle Netzwerkverbindungen Ihres Systems auf. Laufende Server-Dienste sind mit "Listen", "Listening", beziehungsweise "Abhören", benannt. Zusätzlich zeigt die Option "-o" zu jeder Portnummer die Prozess-ID (process ID, PID) des zugehörigen Vorgangs an.

Portscanner sind gern eingesetzte Werkzeuge, um offene Ports zu entdecken. Sie bieten ausführliche Mittel um Portnummern zu untersuchen. Eventuell scannt das Tool das gesamte Netzwerk und zeigt dessen Beschaffenheit an. Sobald ein neues Programm installiert und ein neuer Dienst gestartet wurde, muss ein Portscan erfolgen. Dadurch überprüfen Sie, ob ein weiterer Port offen ist.

Wichtiger rechtlicher Hinweis: Betriebe und Ämter verwenden alle dargestellten Hilfsmittel in der Praxis, um Netzwerk-Sicherheitslöcher zu schließen. Außerdem sind die aufgeführten Werkzeuge für professionelle Anwender, die ihr Netzwerk oder ihren Internet-Rechner vor Eindringlingen schützen wollen, unabdingbar. Aufgrund der nicht eindeutigen Gesetzeslage in der Bundesrepublik Deutschland in Hinsicht auf Netzwerk-Sicherheit-Tools unterlassen wir es direkte Downloads anzubieten und auf Schritt-für-Schritt-Anleitungen zu verlinken. Allerdings erläutern wir detailliert wie die Programme arbeiten, die jeder Administrator kennen sollte und ihr Potential.

Wir betonen nachdrücklich, dass Wireshark und Nmap Werkzeuge sind, um Netzwerke und Internet-Rechner abzusichern. Port-Scanner und Sniffer verwenden Sie nur in Ihrem eigenen Netzwerk, das Sie ausschließlich selbst nutzen. Sie untersuchen keine Portnummern von externen Netzwerken und lesen keinen fremden Netzwerk-Traffic mit.

Im nächsten Abschnitt erfahren Sie, wie der professionelle Port-Scanner Nmap offene Ports erkennt und analysiert.

Datenverkehr mit Nmap analysieren

Das Open-Source-Programm Nmap (Network Mapper) erkennt offene Ports in Ihrem System. Nmap ist für alle gebräuchlichen und weniger verbreiteten OS erhältlich. Dazu gehören Amiga, FreeBSD, HP-UX, IRIX, Mac OS X, NetBSD, OpenBSD, Solaris und Sun OS. Es gibt für alle Betriebssysteme entsprechende Downloadpakete. Zusätzlich ist der Quellcode verfügbar. Nutzer laden sich diesen herunter und kompilieren Nmap eigenhändig. Im selbstextrahierenden ZIP-Archiv für Windows sind das Kommandozeilen-Programm und der grafische Aufsatz Zenmap für Nmap enthalten. Zenmap wird in einem eigenen Abschnitt erklärt.

Nmap unter Linux

Nmap ist für jeden Netzwerk-Administrator ein notwendiges Hilfsmittel, da es unkompliziert Schwachstellen aufspürt. Sie untersuchen unter Linux zum Beispiel Ihren Rechner oder das Netzwerk als Root und mit dem Kommando "nmap localhost" auf offene Portnummern.

Tracerouteergebnis mit Nmap

Hacker verwenden Port-Scanner, um unbekannte Netzwerke auf erste erfolgversprechende Angriffspunkte hin zu prüfen. Deshalb untersuchen Sie konstant Ihr Netzwerk nach offenen Ports. Nur so entdecken Sie frühzeitig Sicherheitslöcher und können diese vor Angreifern sichern. Nachdem Sie neue Dienste auf Ihrem Computer, Server oder Netzwerk installiert oder aktiviert haben, ist ein Port-Scan unerlässlich. Das gleiche gilt auch, wenn Sie die Anwendung anders einstellen.

Nmap unter Windows

Anwender starten Nmap "normalerweise" aus der Befehlszeile mit dem Kommando "nmap -v -A targethost". Statt targethost ist die Netzwerk-Adresse des zu überwachenden Computers anzugeben. Zudem bietet das Werkzeug eine Vielzahl an Möglichkeiten für den professionellen Aufgabenbereich, die sich aus der Kommandozeile mit aufrufen lassen. "nmap -sT" listet nur Portnummern auf, die das TCP-Protokoll verwenden. Corden Lyon veröffentlicht auf seiner Internetsite eine Übersicht der Optionen. Portscanner werden sowohl von TCP als auch von UDP akzeptiert, um das Antwortverhalten eines Systems zu analysieren.

Nebenbei: "nmap -v -A localhost" scannt Ihren Arbeitsplatzrechner nach Sicherheitsrisiken. Der Befehl funktioniert nur unter Linux. Windows-Rechner lassen sich mit dem Localhost-Befehl nicht untersuchen. Der Zusatz "-v" aktiviert den Verbose-Modus. Dieser Modus dokumentiert ausführlich, was Nmap augenblicklich durchführt.

OS anhand Fingerprinting bestimmen

Das Betriebssystem-Fingerprinting ist in Bezug mit Portscans anzusprechen, da alle OS einen individuellen Fingerabdruck im Internet zurücklassen. Dieser wird mittels der TCP/IP-Stack-Implementation ausgelesen. Diese Vorgehensweise heißt OS-Fingerprinting. Portscanner probieren mittels Fingerabdruck das Betriebssystem zu erkennen. Diese Methode benützen auch Angreifer. Aus diesem Grund informieren sich Administratoren, wie Ihr System nach außen erscheint.

Es gibt eine aktive und eine passive Methode das Betriebssystem zu erkennen. Bei der aktiven versendet das Analyse-Programm an den zu überwachenden Zielrechner Datenpakete. Der Zielhost beantwortet die Pakete. Der Scanner versucht aus der Mitteilung das Betriebssystem herauszulesen. Dieses Verfahren übermittelt genauere Resultate als das passive Vorgehen. Administratoren identifizieren so das OS mithilfe der aktiven Methode.

Scannen des eigenen Netzwerks ist legal. Daher probieren Sie ruhig das aktive Verfahren in Ihrem eigenen System aus. Die passive Methode liest dagegen nur den Datenverkehr an den beobachteten Computer mit und liefert weniger genaue Resultate. Zudem bleibt die Untersuchung der Datenpakete für den überwachten Zielrechner verborgen.

Der Befehl "nmap -sT -O Clientname" versucht aktiv das Betriebssystem des Hosts zu erkennen. Das "-O" schaltet den "Enable OS detection"-Mode ein. Anwender hängen das Attribut "-p und die Portnummer" an, wenn sie einen bestimmten Port überprüfen wollen. TCP/IP-Stacks bleiben wirkungslos, wenn Rechner so eingestellt sind, dass sie keine Details über sich bekanntgeben oder unrichtige Informationen dem Angreifer mitteilen.

IDS (Intrusion Detection Systeme) helfen Administratoren dabei Portscans zu identifizieren. Aus diesem Grund bietet Nmap die Option Stealth-Scan, einen versteckten Scan, an. Hierfür bedarf es Root-Rechte.

Nmap und Zenmap, welches im nachfolgenden Abschnitt vorgestellt wird, haben Konkurrenten. Xprobe2 und p0f untersuchen Ports und probieren das OS herauszufinden.

Nmap mit grafischer Bedienoberfläche dank Zenmap

Nmap bietet wie erwähnt eine Vielfalt von Möglichkeiten, die per Befehlszeile aufgerufen werden. Die Kommandos mit ihren Options- und Parameterfolgen sehen teilweise für Nutzer kompliziert aus. Dies betrifft vor allem Windows-Anwender. Zenmap, eine grafische Benutzeroberfläche (GUI) für Nmap, behebt diesen Mangel. Obendrein erweitert die GUI das Aufgabengebiet des Port-Scanners.

Zenmap im Einsatz

Zenmap erleichtert das Überprüfen eines Netzwerks drastisch. Anwender teilen dem Programm die zu scannende Netzwerk-Adresse, den IP-Adressbereich oder den Hostnamen mit und geben den Scan-Typ an. Zur Auswahl stehen: kompletter Scan (mit oder ohne UDP), schneller Scan und ein Ping-Scan. Der schnelle Scan prüft die gebräuchlichen TCP-Portnummern und eignet sich für eine erste Kontrolle. Die letzte Untersuchungsform checkt ob ein Computer im Netzwerk erreichbar ist. Außerdem ermitteln Administratoren mit dieser Methode alle vorhandenen Rechner, die zu einem exakten Adressraum gehören. Diese Angaben reichen, um Nmap zu starten. Je nach gewählter Scan-Art und Größe des Netzwerks benötigt das Tool wenige Sekunden oder einige Minuten um die Ergebnisse darzustellen. Anwender können die vorgegebenen Scanprofile von Zenmap angleichen und erweitern.

Wie lange die vollständige Untersuchung dauert, richtet sich nach der ausgesuchten Methode und kann dementsprechend dauern. Rechts im Ausgabefenster erfährt der Anwender, welche Arbeitsschritte Nmap gerade ausführt. Das Hilfsprogramm listet auf welche Ports überprüft werden, welche Art von Scan durchgeführt wird und wie die Resultate dargestellt werden. Zu den geöffneten Ports gibt es weitere Informationen wie "offen" oder "gefiltert". Auch gibt Nmap Auskunft über die Anwendungen, die an einem offenen Port horchen und um welche Programmversion es sich dabei vermutlich handelt.

Zur Verdeutlichung: Die Portnummer 80 ist offen, da ein HTTP-Server auf diesem System aktiviert ist. In diesem Falle gibt Nmap an, um welche Apache-Version es sich handelt. Oder das Hilfsmittel teilt dem Nutzer mit welche MySQL-Datenbank-Version auf dem Server läuft. Auch identifiziert es den Mailserver, der höchstwahrscheinlich im Einsatz ist. Geschlossene Ports werden dagegen nicht einzeln aufgeführt.

Insense Scan

Des Weiteren meldet Nmap, wie viele Sprünge von einem Netzknoten zu einem anderen, sogenannte Hops, das Datenpaket vom Ausgangsrechner zum Zielhost benötigt. Das Netzwerk-Utility stellt direkt die Resultate dar, mit den Kommandos Traceroute/tracert. Anders ausgedrückt, es schlüsselt den zurückgelegten Weg der Datenpakete auf.

Zenmap erstellt Netzwerk-Topologie

Auch mit der Kombination Nmap und Zenmap lässt sich mittels dem Betriebssystem-Fingerprinting-Verfahren das mutmaßliche OS auf dem Zielhost identifizieren. Neben typischen PC-Systemen wie Windows, inklusive Vista mit Service Pack 1, Linux, MacOS sollen iPhones und Wii-Konsolen erkannt werden. Um die Resultate später auszuwerten, lassen sich die Ergebnisse in Dateien ablegen.

Einfacher Ping-Scan

Administratoren, die mehrere Computer gleichzeitig untersuchen wollen, geben bei Target die IP-Range an. Wenn sie sich für die Option "intense Scan" entscheiden, ist Warten angesagt. Das Scan-Verfahren zieht sich je nach Größe des zu scannenden Netzwerkes hin.

Seit Version 4.75 ist Radialnet in Nmap inkludiert und Netzwerke können grafisch angezeigt werden. Es entsteht gewissermaßen eine Karte vom Netzwerk, in der die offenen Ports der Rechner, eingegliederten iPhones und Wii-Konsolen vermerkt sind. Computer werden als Kreise abgebildet. Je nach Anzahl der aufgesperrten Ports hat der Kreis eine bestimmte Farbe und Größe. Router sind dagegen als Quadrate gekennzeichnet.

Buch-Tipp: Gordon "Fyodor" Lyon Nmap. Netzwerke scannen, analysieren und absichern, 1. Auflage der deutschen Übersetzung des englischen Originals, ca. 25. Mai 2009, ISBN 978-3-937514-82-6, dt., 640 S. brosch., 39, 90 Euro.

Profi-Werkzeuge zur Netzwerkanalyse
Zenmap visualisiert
Tshark
Wireshark
Wireshark
Wireshark Info Dialog
Wireshark-Filter für ICMP
Wireshark Filter festlegen
Wireshark im Einsatz
Wireshark Namensauflösung
Wireshark Options
Zenmap: GUI für Nmap
Nmap Tracert
Filter bei Ansicht
ICQ-Mitschnitt
Nmap auf der Kommandozeile
Nmap intense scan all tcp
Nmap zeigt offene Ports
Nmap pingscan einer ip-range

Dieser Artikel basiert auf einem Beitrag unserer Schwesterpublikation PC-Welt. (sjf)