Warum Port-Scanning zur Sicherheit Ihres Systems beiträgt

Ports haben einen großen Anteil daran, dass Datenpakete ihren Weg zum erwünschten Ziel finden. Sie dienen als Schnittstelle zwischen Rechnern und Systemdiensten bzw. Programmen und werden von den Netzwerkprotokollen TCP und UDP verwendet. In Kombination mit der IP-Adresse weiß das Betriebssystem durch die Port-Angabe nicht nur, an welchen Zielcomputer es den Datenstrom senden, sondern auch, an welche Anwendung es die Pakete übergeben soll.

Wissenswertes über Ports

Jedem Port wird eine Nummer von 0 bis 65535 zugewiesen, wobei es drei Bereiche zu unterscheiden gilt:

  • Die Ports 0 bis 1023 zählen als standardisierte Ports, denen die Internet Assigned Numbers Authority (IANA) größtenteils feste Protokolle und Dienste zugeteilt hat. So ist beispielsweise Port 80 für HTTP-Verbindungen reserviert und daher der entscheidende Port für Webserver-Anfragen.
  • Die Port-Nummern 1024 bis 49151 sind standardmäßig für registrierte Dienste vorgesehen, werden jedoch – insbesondere von Linux-System – auch Client-Programmen zugeordnet.
  • Die Ports 49152 bis 65535 vergeben Betriebssysteme dynamisch an Client-Programme.

Um eine Verbindung über einen bestimmten Port aufzubauen, muss dieser geöffnet, also freigeschaltet, sein. Insbesondere für den Datentransfer im Internet bedeutet dies logischerweise eine hohe Anzahl offener Ports, was eine gewisse Problematik mit sich bringt: Jeder offene Port ist ein potenzieller Zugang für Angreifer, wenn die jeweilige Anwendung Sicherheitslücken aufweist. Aus diesem Grund sollten Sie stets im Blick haben, welche Ports auf Ihrem System geöffnet sind und welche Anwendungen hinter dem darüber ablaufenden Datenverkehr stecken. Bewährte Hilfsmittel, mit denen Sie freigeschaltete Ports aufspüren, sind sogenannte Port-Scanner.

Was ist Port-Scanning?

Unter dem Begriff Port-Scanning versteht man den gezielten Vorgang, offene Ports eines Computersystems mithilfe spezieller Tools zu überprüfen. Um einen solchen Scan durchzuführen, müssen Sie nicht auf dem Zielsystem angemeldet, sondern nur mit diesem verbunden sein – z. B. über ein lokales Netzwerk oder über das Internet. Mithilfe des Port-Scanners schicken Sie testweise spezielle Datenpakete an die unterschiedlichen Ports und erhalten entsprechende Antworten oder Fehlermeldungen, die das Tool analysiert und auswertet. Abhängig vom Funktionsumfang des verwendeten Scanning-Programms bekommen Sie auf diese Weise nicht nur Informationen darüber, welche Ports geöffnet bzw. geschlossen sind, sondern auch, welches Betriebssystem der Zielrechner verwendet, wie lange der PC schon eingeschaltet ist oder welche Dienste bzw. Anwendungen die jeweiligen Ports nutzen.

Port-Scanning stellt für Systemadministratoren ein sehr effizientes Mittel dar, um den Datenverkehr in einem Netzwerk zu überwachen und eventuelle Schwachstellen herauszufiltern. In einigen Fällen lassen sich so auch konkrete Netzwerkprobleme lösen. Da die Tools keinerlei spürbaren Einfluss auf die Leistungsfähigkeit der untersuchten Systeme haben, können Sie selbige für solche Sicherheitsmaßnahmen bedenkenlos einsetzen. Auch auf dem Heim-PC macht ein Port-Scanner durchaus Sinn: Sobald Sie Anwendungen installieren und nutzen, die einen Internetanschluss erfordern, werden automatisch auch Ports geöffnet – insofern Ihre Firewall dies nicht verhindert. Ein Port-Scan hilft Ihnen, die Übersicht zu bewahren und zeigt Ihnen nicht mehr benötigte Ports auf, die Sie in der Folge schließen können, um das Sicherheitsrisiko zu minimieren.

Wie genau funktioniert Port-Scanning?

Port-Scanner offerieren standardmäßig verschiedene Methoden, wobei sich der Großteil um das verbindungsorientierte Protokoll TCP dreht. Um die grundsätzlichen Vorgänge während des Port-Scannings nachzuvollziehen, ist es daher hilfreich, einen kurzen Blick auf den allgemeinen TCP-Verbindungsaufbau zu werfen:

  • Im Rahmen des auch als Drei-Wege-Handshake bezeichneten Prozesses schickt zunächst der Client ein SYN-Paket (synchronize = „abgleichen“) an den entsprechenden Ziel-Port.
  • Erreicht er auf diese Weise eine Anwendung, erhält er ein kombiniertes SYN/ACK-Paket (synchronize acknowledge = „abgleichen bestätigen“) zurück, welches die Verbindungsaufnahme bestätigt.
  • Der Client sendet im dritten und letzten Schritt ein ACK-Paket (acknowledge = „bestätigen“) zurück, woraufhin die Verbindung hergestellt ist und der Datenaustausch beginnen kann.

Wird ein geschlossener Port kontaktiert, erhält der Client im zweiten Schritt ein RST-Paket (reset = „zurücksetzen“) als Antwort, woraufhin der Handshake abgebrochen wird.

Da es einerseits sehr aufwendig und andererseits sehr komplex wäre, Daten mit den verschiedenartigen Anwendungen auszutauschen, ist Port-Scanning lediglich auf einfache Verbindungsversuche beschränkt, wie die im Folgenden präsentierten gängigen Scan-Methoden zeigen.

TCP-SYN-Scan

Beim TCP-SYN-Scan spricht man häufig auch von einem halboffenen Scan, da er nicht darauf abzielt, eine vollständige TCP-Verbindung aufzubauen. Sie verschicken bei dieser Methode mit dem Port-Scanner gewöhnliche SYN-Pakete an die einzelnen Ports und warten auf die Antwort des Ziel-Hosts. Sendet dieser ein SYN/ACK-Paket zurück, signalisiert er, dass der jeweilige Port offen und ein Verbindungsaufbau möglich ist. Besteht die Antwort aus einem RST-Paket, ist der Port hingegen geschlossen. Bleibt der Ziel-Host eine Antwort schuldig, ist aller Voraussicht nach ein Paketfilter wie z. B. eine Firewall vorgeschaltet. TCP-SYN-Scans sind für die überprüften Anwendungen nicht sichtbar und erzeugen daher auch keine Log-Daten, weshalb sie auch als Stealth-Scans („Heimlichkeits-Scans“) bezeichnet werden.

TCP-Connect-Scan

Führen Sie mit Ihrem Port-Scanner einen Connect-Scan aus, erzeugen und verschicken Sie die Datenpakete nicht selbst, sondern nutzen dafür den Systemaufruf connect. Dieser steht auf beinahe jedem Betriebssystem zur Verfügung – beispielsweise nutzt ihn auch der Webbrowser, um eine Verbindung zum jeweiligen Server aufzubauen. Das Scanning-Tool hat mit dem eigentlichen Verbindungsaufbau also nichts zu tun, sondern beauftragt damit das Betriebssystem. Dieses kann entweder erfolgreich eine Verbindung herstellen und damit bestätigen, dass der Port offen ist, oder bei dem Versuch scheitern und den entsprechenden Port als geschlossen kennzeichnen. In den Log-Dateien der jeweiligen Anwendungen mit offenen Ports ist bei einem komplett ausgeführten Verbindungsaufbau ersichtlich, dass diese Scan-Methode angewandt wurde. Sie gibt aber keine Aufschlüsse über eingesetzte Filterprogramme. Fehlen Ihnen die Rechte, rohe Datenpakete zu verschicken, ist der TCP-Connect-Scan dennoch eine nützliche Alternative zum SYN-Scan.

TCP-FIN-, Xmas- und Null-Scans

Mit diesen drei Port-Scanning-Methoden können Sie ebenfalls zwischen offenen und geschlossenen Ports unterscheiden. Dazu bedienen Sie sich zweier Grundsätze, die im RFC (Request for Comments) des TCP (793) verzeichnet sind: Einerseits sollen eingehende Pakete, bei denen es sich nicht um RST-Pakete handelt, von einem geschlossenen Port immer mit einem eigenen RST-Paket beantwortet werden; andererseits sollen alle Pakete, die nicht als SYN, RST oder ACK markiert sind, von einem offenen Port ignoriert werden. Die drei Scan-Typen nutzen diese Situation beim Scanning RFC-konformer Systeme mit ihren individuellen Paketen aus:

  • Der Null-Scan setzt keinerlei besondere Markierung ein.
  • Beim FIN-Scan schickt der Port-Scanner FIN-Pakete (finish = „beenden“).
  • Xmas-Scans setzen auf eine Kombination von FIN-, PSH- (push = „vorstoßen“) und URG-Markierungen (urgent = „dringlich“); somit „erleuchtet“ das Paket gleichsam wie ein Weihnachtsbaum.

Alle drei Scan-Methoden verhalten sich exakt gleich. Ihre verschickten Testpakete sorgen aufgrund der RFC-Bestimmungen dafür, dass ein geschlossener Port mit einem RST-Paket antwortet und ein offener Port gar keine Rückmeldung gibt. Da allerdings nur einige Router eine Fehlermeldung übermitteln, wenn ein Port gefiltert wird, kann das Ausbleiben einer Rückmeldung auch für einen gefilterten Port stehen. Während die Verfahren noch unauffälliger als SYN-Scans sind, haben sie den Nachteil, dass sie nicht funktionieren, wenn Systeme sich nicht genau an den RFC 793 halten. Als prominenter Vertreter wäre hier Windows zu nennen.

UDP-Scan

Bei einem UDP-Scan werden leere UDP-Header ohne Daten an alle Ziel-Ports geschickt. Antwortet ein Dienst ebenfalls mit einem UDP-Paket, ist bestätigt, dass der dazugehörende Port geöffnet ist. Empfängt der Port-Scanner vom Router die Fehlermeldung „Port unreachable“ (Typ 3, Code 3), weiß er, dass der Port geschlossen ist. Andere Fehlermeldungen geben darüber Aufschluss, dass ein Paketfilter den Port blockiert. Das große Problem des UDP-Port-Testings ist der hohe Zeitaufwand, da auf vielen Systemen die Ausgabe der entsprechenden Fehlermeldungen aus Sicherheitsgründen sehr lange dauern kann und auch offene Ports nur sehr unregelmäßig antworten. Der Linux-Kernel beschränkt die Anzahl an Meldungen beispielsweise auf eine pro Sekunde, was bei 65.535 Ports rund 18 Stunden Scan-Dauer bedeutet.

Welche Port-Scanner gibt es?

Es existieren ganz verschiedene Scanner mit unterschiedlichem Funktionsumfang, wobei der Großteil dieser Tools Freeware oder Open Source ist. Bei vielen Vertretern handelt es sich um klassische Kommandozeilenprogramme, die Sie auch über separate grafische Oberflächen bedienen können. Darüber hinaus gibt es im Web zahlreiche Lösungen, mit denen Sie Ports direkt im Browser scannen können. Diese Dienste sind allerdings funktional stark eingeschränkt und bieten, wie z. B. der Port-Scanner von DNStools, nur die Möglichkeit, einzelne Ports zu überprüfen. Aus diesem Grund eignen sie sich eher als bequeme Option für den Schnellcheck am Computer zuhause.

Netcat – das Urgestein der Netzwerk-Tools

Netcat (kurz: nc) wurde 1996 von einem anonymen Entwickler unter dem Pseudonym „Hobbit“ veröffentlicht. Ursprünglich für UNIX-Plattformen geschrieben, existieren mittlerweile diverse Portierungen für andere Systeme wie Windows sowie verschiedene Weiterentwicklungen wie GNU Netcat, OpenBSD Netcat, Cryptcat oder Netcat6 (unterstützt auch das IPv6), die in vielen Linux-Distributionen standardmäßig implementiert sind. Die Grundversion des Kommandozeilen-Tools dient in erster Linie dazu, Daten über TCP- und UDP-Netzwerkverbindungen zu versenden oder zu lesen, kann darüber hinaus aber auch zum simplen Port-Scanning genutzt werden. So können Sie z. B. mit einem einfachen Befehl wie

nc -zv localhost 20-30

den Status der Ports 20 bis 30 auf dem ausführenden System überprüfen. Der Check von UDP-Ports erfordert den zusätzlichen Parameter -u. Ferner können Sie externe Systeme anstelle von localhost scannen, insofern Sie den Hostnamen oder die IP-Adresse kennen.

Umfassende Netzwerk-Analyse mit Nmap

Ein wesentlich mächtigeres Werkzeug, das vor allem in seiner Funktion als Port-Scanner überzeugt, ist der 1997 erschienene Network Mapper, bekannter unter dem Kurznamen Nmap. Das für unixoide Systeme entwickelte Programm ist GPL-lizenziert und seit 2000 auch für Windows-Systeme verfügbar – allerdings mit kleineren Einschränkungen. So nimmt z. B. der TCP-Connect-Scan aufgrund der Windows-Netzwerk-API unverhältnismäßig viel Zeit in Anspruch und auch das Scannen der eigenen System-Ports ist nur über Umwege möglich. Standardmäßig lässt sich Nmap über die Kommandozeile bedienen. Mit Zenmap existiert jedoch eine leistungsstarke grafische Oberfläche, mit der Sie das Netzwerk-Tool noch komfortabler nutzen können.

Der Nmap-Erfinder Gordon Lyon und das Nmap-Developer-Team entwickeln das Programm und seine Port-Scanning-Funktionen stetig weiter, was der Hauptgrund für die Vielfalt an Features ist. Insbesondere Techniken wie das OS-Fingerprinting – das Erkennen des Betriebssystems eines Zielhosts – und das Auslesen der Dienste, die sich hinter einem Port verbergen, machen Nmap zu einer der beliebtesten Port-Scanner-Lösungen. Die Vielfalt äußert sich auch in den verfügbaren Scan-Methoden, die wir in der folgenden Tabelle zusammengefasst haben:

Port-Scanning-Methode

Nmap-Befehl

Beschreibung

TCP-Connect-Scan

nmap -sT Host

klassischer Check für Nicht-Administratoren

TCP-Syn-Scan

nmap -sS Host

schnelle, unbemerkte Überprüfungsmethode für Administratoren

TCP-FIN-/XMAS-/Null-Scan

nmap -sF Host

nmap -sX Host

nmap -sN Host

Methoden, die Firewalls umgehen können

TCP-Ping-Scan

nmap -sP Host

kein klassischer Port-Scan; hilft, die Erreichbarkeit eines Hosts zu überprüfen

TCP-ACK-Scan

nmap -sA Host

stellt gefilterte Ports fest, bietet aber keine Unterscheidung zwischen offenen und geschlossenen Ports

TCP-Window-Scan

nmap -sW Host

vergleichbar mit dem ACK-Scan; kann einige offene und geschlossene Ports verifizieren

TCP-Maimon-Scan

nmap -sM Host

Kombination aus FIN- und ACK-Scan

TCP-Idle-Scan

nmap -sI Host

unauffälligste, komplexeste und dadurch auch langsamste Scan-Methode; läuft über einen dritten Rechner

UDP-Scan

nmap -sU Host

Scan-Methode für die verbindungslosen UDP-Ports

SCTP-Init-Scan

nmap -sY Host

Portscan mit SCTP, einer Alternative zu TCP und UDP

IP-Protokoll-Scan

nmap -sO Host

kein Port-Scan; prüft, welche IP-basierenden Protokolle auf dem Zielsystem unterstützt werden

Sie können sowohl Nmap und das Interface Zenmap auf der offiziellen Homepage für das gewünschte Betriebssystem herunterladen. Dazu stehen die aktuelle Version (stable) sowie eine Beta-Version (development), die sich in der Entwicklung befindet, zur Verfügung.

Warum Port-Scanning nicht immer legal ist

Nmap ist nicht nur bei Computernutzern, sondern auch bei Filmregisseuren beliebt. So setzt zum Beispiel Trinity, die weibliche Hauptfigur der „Matrix“-Trilogie, das Netzwerk-Tool im zweiten Teil der Science-Fiction-Saga ein, um die Ports des Computersystems eines Kraftwerks zu scannen. Sie ist allerdings keineswegs daran interessiert, die Sicherheit desselben zu optimieren, sondern nutzt das Ergebnis des Scans, um sich Zugriff zu dem System zu verschaffen. Dazu greift sie auf einen schädlichen Programmcode zurück, der sich eine Sicherheitslücke des über Port 22 laufenden SSH-Protokolls zunutze macht. Die Szene zeigt zwar nur einen sehr vereinfachten Angriff, der auf einem vorangegangenen Port-Scan basiert, steht aber stellvertretend für den Wert, den Port-Scanning auch für Kriminelle haben kann.

Eine Port-Überprüfung ist somit nicht immer legal; spätestens mit einem anschließenden Exploit-Versuch, wie das Ausnutzen einer Sicherheitslücke in der Fachsprache heißt, macht man sich in jedem Fall strafbar. Weniger eindeutig sieht die Rechtslage aus, wenn Sie ein Computersystem aufgrund intensiver Port-Scans lahmlegen. Da die Überprüfungsmethode aufgrund der hohen Frequenz an Verbindungsanfragen eine mitunter starke Belastung für das Zielsystem darstellt, kann es nämlich u. U. passieren, dass dieses abstürzt. Außerdem könnten Verantwortliche des Zielsystems Ihre Unternehmungen bereits vor einem Absturz entdecken und als erste Schritte eines Angriffs werten. Rechtliche Konsequenzen sind in einem solchen Fall nicht auszuschließen. Wird eine Überlastung des fremden Systems bewusst herbeigeführt, handelt es sich um sogenannte DoS- bzw. DDoS-Angriffe, die mit hoher Wahrscheinlichkeit eine Strafverfolgung nach sich ziehen.

Gehen Sie daher immer sicher, dass Sie dazu berechtigt sind, einen Port-Scan auf dem jeweiligen System durchzuführen, und verwenden Sie die Technik ausschließlich zu Sicherheitszwecken und nicht etwa aus reiner Neugierde. Die aufgezeigten Wege, das Port-Scanning einzusetzen, verdeutlichen, wie wichtig es ist, die Ports des eigenen Systems bzw. der Netzwerkcomputer sowie die darauf zugreifenden Dienste im Auge zu behalten.