tutorials.de Buch-Aktion 05/2012
RSS-Feed anzeigen

Dem Dennis sein Blogdingen da...

Port-Knocking

Bewerten
von Dennis Wronka am 29.08.07 um 17:21 (2071 Hits)
Ein paar von Euch moegen vielleicht schon davon gehoert haben (ich hab es, wenn ich mich recht erinnere, auch ein oder zwei Mal im Forum erwaehnt) und ein paar moegen sogar wissen was es ist. Fuer die die es nicht wissen, oder gar noch garnicht davon gehoert haben moechte ich die offensichtlichste aller Fragen gleich vorweg nehmen: Was ist Port-Knocking eigentlich?

Port-Knocking bezeichnet die Moeglichkeit ueber vermeintlich geschlossene Ports Verbindungen aufzubauen. Dadurch muss der Client eine bestimmte Sequenz an Ports am Server ansprechen. Anschliessend wird dort der gewuenschte Port, z.B. SSH, fuer die IP des Clients geoeffnet.
Gegenueber einem Angreifer hingegen sieht es schlichtweg so aus als waere der SSH-Port geschlossen, oder als wuerde der SSH-Server garnicht laufen.

Auf dem Server muss dazu natuerlich irgendwie die Sequenz von angefragten Ports nachvollzogen werden koennen. Bisherige Loesungen haben meist mit Logging und einem Daemon gearbeitet der dann die Logs ausgewertet hat und dann eben den Port freigeschaltet hat.
Da ich mich aber nun in letzter Zeit mit dem IPTables-Modul Recent auseinander gesetzt habe bin ich auf die Idee gekommen dass es doch auch damit gehen muesste.
Ein kleiner Test heute morgen verlief auch schon erfolgreich, und eine Suche im Internet ergab dass ich nicht der erste war der auf diese Idee gekommen ist; waere auch etwas ueberraschend gewesen, wo ich doch erst seit Kurzem mit Recent rumspiele.

Dadurch hat man folgende Vorteile gegenueber der "klassischen Loesung" mit Logging und Daemon:
  • Da kein Daemon laufen muss wird das System allgemein weniger belastet. Jeder Prozess weniger ist Gold wert.
  • Da auch kein Logging stattfinden muss spart man auch Festplattenplatz. Dieser ist zwar heute meist zuhauf vorhanden und auch nicht mehr so teuer wie vor 10 Jahren, trotzdem muss man diesen ja nicht verschwenden.
    Vor allem bleiben die Logs dadurch uebersichtlicher.

Wichtig ist dass nicht einfach nur darauf geachtet wird dass eine bestimmte Reihenfolge eingehalten wird, sondern sollte auch darauf geachtet werden dass waehrend der Knock-Sequenz kein Traffic auf anderen Ports stattfindet. Dies sollte die Knock-Sequenz resetten, denn ansonsten koennte ein simpler Portscan schon ausreichen um den "geheimen" Port zu oeffnen (was in meinem ersten Test der Fall war).

Der Nachteil ist natuerlich dass der Paketfilter komplexer wird.
Da das Ganze durchaus interessant ist denke ich darueber nach ein Tutorial zu dem Thema zu schreiben. Mal schauen ob ich die Tage oder am Wochenende die Zeit dazu finde.

"Port-Knocking" bei Twitter speichern "Port-Knocking" bei Facebook speichern

Kategorien
Security

Kommentare

  1. Avatar von andy72
    Klingt gut interessant ...was ich nicht so recht verstehe: Wenn der Client nun die Ports abklappert, verursacht er doch Traffic, indem er ja zumindest TCP-Header senden muss, um anzuklopfen *kopfkratz* ...und wo bekommt RECENT denn mit,dass der Client schon mal da war ? Ich vermute dazu, dass er die daten da im Speicher hat, soweit OK - aber ist das ned ein kleines loch für eine DDoS Attacke,indem der vermeintliche Client den Server flooded ?
  2. Avatar von Navy
    DDoS von einem Client aus? Sofern da nicht irgendeine exotische Hardwareconfiguration vorhanden ist, ist das nicht möglich.

    Recent wird einen einfachen und kleinen Buffer (von der Größe der zu knockenden Ports) besitzen, in dem er sich sich Abfolge von Ports nacheinander merkt und diese ständig überprüft (ohne auf den Absender zu horchen). Wenn mehrere USer gleichzeitg knocken, könnte es hier zwar Probleme geben, da sie sich gegenseitig aus dem Buffer schmeißen, das ist aber durchaus verschmerzbar.

    Dieses Vorgehen ist einfach und braucht nur sehr wenig Ressourcen.
  3. Avatar von Dennis Wronka
    Recent arbeitet mit Listen. Fuer's Port-Knocking braucht man eine Liste pro Port, diese sind aber in der Regel recht klein und man hat als Admin nichts damit zu tun.
    User koennen sich dabei auch nicht gegenseitig behindern; das kriegt Recent alles hin.
    Eigentlich wurde das Modul auch nicht fuer Port-Knocking entwickelt, wuerde ich mal sagen. Aber es kann eben dazu genutzt werden.
  4. Avatar von andy72
    aha ...wieder was gelernt ...nun würde mich nur noch interessieren, wie das dann aussieht - meine letzten ipTables-Erfahrungen liegen nun auch schon über 1 jahr zurück, habe dort erfolgreich in einem Schulnetzwerk die Clients gezwungen, einen Proxy zu nutzen (ging sehr gut mit Portforwarding etc), da das private und unkontrollierte surfen im Inet überhand nahm - war damit dann egal, ob sie über die Route des Servers gehen wollten oder direkt über den Proxy gegangen sind, da das derselbe Server war
    Naja, hat ja mit recent wenig zu tun, aber passt ja zu ipTables *denk*
  5. Avatar von kuhlmaehn
    Wow das ist wirklich interessant
    Ich würd mich sehr über ein ausführlicheres Tutorial freuen!