Hafenklopfen: Eine Sicherheitsidee, deren Zeit gekommen ist

Viele, viele Innovationen kommen aus der Linux- und Unix-Welt. Nur wenige sind für mich faszinierender als das Klopfen im Hafen. Als globales Sicherheits-Plug-In zum Schutz von Diensten hat es viel zu bieten und nur wenige Nachteile. Aus dem einen oder anderen Grund leidet es jedoch an mangelndem Gebrauch und Verständnis. Viele Administratoren haben vielleicht davon gehört, aber nur wenige wissen, wie man es implementiert. Noch weniger haben es benutzt.

Port Knocking basiert auf dem Konzept, dass Benutzer, die eine Verbindung zu einem Netzwerkdienst herstellen möchten, eine vorgegebene Folge von Portverbindungen initiieren oder eine eindeutige Folge von Bytes senden müssen, bevor der Remoteclient eine Verbindung zum späteren Dienst herstellen kann. In der einfachsten Form muss die Client-Software des Remotebenutzers zuerst eine Verbindung zu einem oder mehreren Ports herstellen, bevor eine Verbindung zum endgültigen Zielport hergestellt werden kann.

Angenommen, der Remoteclient möchte eine Verbindung zu einem SSH-Server herstellen. Der Administrator konfiguriert die Port-Knocking-Anforderungen im Voraus und erfordert, dass die Verbindung von Remote-Clients zuerst mit den Ports 3400, 4000 und 9887 hergestellt wird, bevor eine Verbindung zum endgültigen Ziel-Port 22 hergestellt wird. Der Administrator teilt allen legitimen Clients die richtige „Kombination“ für die Verbindung mit ;; böswilligen Hackern, die eine Verbindung zum SSH-Dienst herstellen möchten, wird der Zugriff ohne die Kombination verweigert. Port Knocking wird sogar Port-Scanning- und Banner-Grabbing-Enthusiasten vereiteln.

Da jede Kombination von Ports und Transportprotokollen verwendet werden kann, ist die Anzahl der möglichen Sequenzen, die ein Angreifer erraten müsste, hoch. Selbst wenn der Hacker wusste, dass nur drei Port-Knocks beteiligt waren, wie im sehr einfachen Beispiel oben, mit 64.000 möglichen TCP-, UDP- und ICMP-Ports (Internet Control Message Protocol) zur Auswahl, ergab sich der resultierende Satz möglicher Kombinationen für den Hacker Versuch läuft in die Millionen. Port-Scanner sind frustriert, da beim Port-Klopfen geschlossene Ports zum Abhören verwendet werden (mehr dazu weiter unten).

Der größte Vorteil von allen ist, dass das Klopfen von Ports plattform-, service- und anwendungsunabhängig ist: Jedes Betriebssystem mit der richtigen Client- und Serversoftware kann seinen Schutz nutzen. Obwohl Port Knocking hauptsächlich eine Linux / Unix-Implementierung ist, gibt es Windows-Tools, die dasselbe tun können. Und ähnlich wie bei IPSec und anderen Schutzmechanismen muss keiner der beteiligten Dienste oder Anwendungen Port-Knocking-fähig sein.

Die Port-Knocking-Server-Software überwacht das Firewall-Protokoll und sucht nach Verbindungen zu geschlossenen Ports oder überwacht den IP-Stack. Bei der ersteren Methode müssen alle abgelehnten Verbindungsversuche schnell in ein Firewall-Protokoll geschrieben werden, und der Port-Knocking-Dienst (Daemon) überwacht und korreliert legitime Port-Knocking-Kombinationen. Bei authentifizierten Klopfkombinationen weist der Port-Knocking-Serverdienst die Firewall an, den endgültig angeforderten Port nur für den legitimen Port-Knocking-Client zu öffnen - normalerweise anhand der IP-Adresse.

Fortgeschrittenere Implementierungen von Port Knocking funktionieren am IP-Stack und hören entweder Verbindungen zu geschlossenen Ports ab und zeichnen sie auf oder verwenden einen ausgefeilteren Mechanismus. Einige Implementierungen suchen beim ersten Verbindungsversuch nach einer bestimmten Reihe von Bytes. Diese Bytes können sogar in einem einfachen ICMP-Echoanforderungs-Ping "versteckt" werden. Noch stärkere Verhandlungsmethoden für das Klopfen von Ports umfassen Verschlüsselung oder asymmetrische Authentifizierung.

Port Knocking kann auch als zusätzliche Sicherheitsebene zum Schutz von Remoteverwaltungsdiensten mit hohem Risiko wie SSH und RDP (Remote Desktop Protocol) dienen. Leider wurde das Klopfen von Ports von mehr als einigen Rootkit-Trojanern verwendet, da ihre Hacker-Ersteller versuchen, die Kontrolle über ihre eigenen bösartigen Kreationen zu behalten.

Kritiker weisen häufig auf die Tatsache hin, dass abhörende Hacker möglicherweise die erfolgreiche Port-Knocking-Sequenz oder Reihe von Bytes erfassen und wiedergeben können. Obwohl dies bei den Basisimplementierungen der Fall sein könnte, würden Angriffe wie diese durch die Verwendung komplexerer Authentifizierungsmethoden unterdrückt oder durch die Verwendung sekundärer fest codierter zulässiger IP-Adressen wie TCP-Wrapper minimiert.

Wenn es einem Hacker gelingt, Ihre Kombination zu ermitteln, besteht das Worst-Case-Szenario darin, dass der Eindringling den Port-Knocking-Schutz umgeht und sich nun Ihren normalen Sicherheitsmaßnahmen für den Dienst stellen muss - Anmeldung zum Anmeldekennwort usw. Soweit ich das beurteilen kann, kann der Einsatz von Hafenklopfen nur eine tiefgreifende Verteidigungsstrategie stärken und nichts dagegen tun.

Ich wünschte, Windows hätte standardmäßig eingebaute Port-Knocking-Mechanismen. Es wäre eine schöne Ergänzung zu den vom Markt getesteten IPSec- und Kerberos-Implementierungen von Microsoft. In der Linux / Unix-Welt stehen eine Vielzahl von Port-Knocking-Implementierungen zur Auswahl, für deren Konfiguration oder Verwendung keine unglaublichen Kenntnisse erforderlich sind.

Weitere Informationen zum Klopfen von Ports finden Sie unter www.portknocking.org oder en.wikipedia.org/wiki/Port_knocking. Konfigurationsdetails aus einem Implementierungsbeispiel finden Sie unter gentoo-wiki.com/HOWTO_Port_Knocking.

Eine hervorragende Sammlung von Port-Knocking-Software und -Dienstprogrammen finden Sie unter www.portknocking.org/view/implementations. Ein weiterer Windows-basierter Port-Knocking-Server und -Client finden Sie unter www.security.org.sg/code/portknock1 .html.