Security through obscurity – Portknocking

20 Jan
2009

Wichtige Dienste lassen sich oftmals bereits bestens durch die diensteigenen Konfigurationsdateien schützen. Am Beispiel des SSH Daemons OpenSSH werden die nachfolgend vorgestellten Konfigurationsmöglichkeiten hoffentlich zum gängigen Standard gehören:

Feste Zuweisung des zu verwendenden Protokols:

Protocol 2

Root den Login per SSH verbieten:

PermitRootLogin no

Nur bestimmten Nutzern und Gruppen des Systems den SSH Zugriff erlauben:

AllowUsers user user@example.org
AllowGroups admin

Ungenutzte und unsichere Authentifizierungsmethoden deaktiveren…:

PasswordAuthentication no
RhostsRSAAuthentication no
HostbasedAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no
RSAAuthentication no

… und lediglich die sichere Authentifizierung via PubKey erlauben (Keys im Vorfeld über ssh-keygen -t dsa erzeugen!):

PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

Bei Systemen mit mehreren Netzwerkkarten ein Interface definieren, an dass sich der Dienst binden soll:

ListenAddress 192.168.10.10

Wem diese Maßnahmen nicht genügen, muss deutlich tiefer in die Trickkiste greifen, um das System noch weiter abzusichern. Bestmöglich möchte man Dienste nur bei Bedarf starten. Portknocking erlaubt genau dieses Vorhaben. Durch die Installation und Konfiguration eines sogenannten Monitoring Daemons werden geschlossene aber aus dem öffentlichen Netz errichbare Ports auf Verbindungsversuche hin überwacht. Durch Hinterlegung einer durch den Daemon überwachten und regelgebundenen festen Reihenfolge, können nach einem erfolgreichem Klopfvorgang festgelegte Aktionen per Script ausgeführt werden.

Beispiel:

Der Monitoringdienst wird per Konfiguration angewiesen auf die Port-Reihenfolge: 6000, 6500, 7000, 7500 zu achten. Wenn  nun ein Verbindungsaufbau (SYN Paket) auf diese Ports in der exakt vorgegebenen Reihenfolge von einer IP-Adresse aus erfolgt, wird ein hinterlegtes Skript ausgeführt. Das aufgerufene Skript könnte beispielsweise das  IP-Tables Firewall Regelwerk anpassen und den externen Zugriff via SSH (TCP-22) für die anklopfende IP-Adresse für einen vorgegebenen Zeitraum erlauben.

Durch die zur Verfügung stehende Portanzahl ergeben sich bei einer aus 4 Ports bestehenden Abklopffolge über diese Methode 655354 Möglichkeiten. Ein Angreifer, der im Unklaren über die Anzahl der abzuklopfenden Ports ist, müsste nach jedem Versuch einen vollständigen Portscan durchführen, um zu verifizieren ob das Klopfzeichen eine Veränderung auf dem System bewirkt hat müsste er 18 Trillionen SYN-Pakete senden, um die richtige Reihenfolge  herauszufinden.

Portknocking ist sicherlich kein neues Thema, bietet sich jedoch beispielsweise als Notfalllösung für Fernwartungen an. Das diese Methode nicht vor einem Mitschneiden des Netzverkehrs schützt, sollte hierbei jedoch berücksichtigt werden. Sollte beim Lesen des Artikels Interesse für das Thema geweckt worden sein, empfehle ich eine Studie der im Anhang verlinkten Seiten und Artikel.

Links:
www.portknocking.org
Portknocking bei Wikipedia
Hackin9 Artikel über Portknocking (Englisch)
Security through Obscurity bei Wikipedia
Portknocking Seminar von Christoph Boesch

Kommentar-Formular

oben