Port-Knocking
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.






