Stoppt die Vorratsdatenspeicherung! Jetzt klicken && handeln!Willst du auch bei der Aktion teilnehmen? Hier findest du alle relevanten Infos und Materialien:
»webknocking«
der etwas andere weg
07.03.2005

webknocking ist eine wortschöpfung, die, wie könnte es anders sein, von portknocking abgeleitet ist.

die geschichte:
ich lass vor gut einem jahr einen artikel über portknocking. seit dem spukte in meinem kopf die idee herum das ganze für meinen semaphor zu nutzen. nun endlich am 29.09.2004 hatte ich die zeit dazu. was ich mir in der zwischenzeit aber immer wieder überlegt habe ist, dass es mir 1. schwerfallen würde der sicherheit des entsprechenden daemons zu vertrauen und ich 2. ein problem hätte, wenn ich von einem fremden rechner aus zugreifen wollte, da sich auf den wenigsten systemen ein portknocking-client finden düfte.
ein weiteres problem beim simplen portknocking ist, dass die knocksequenz von einem angreifer im gleichen netz "mitgesnifft" werden kann.
daher habe ich mir eine andere variante überlegt.

die idee:
webknocking funktioniert ganz einfach. man ruft eine sequenz von webseiten auf die nicht auf dem server liegen. der apache produziert einen fehler 404 und protokoliert diesen. nach der sequenz wird nun die seite webknocking.php aufgerufen. diese wertet das apacheprotokoll aus, und schaut nach, ob die letzten aufrufe die webknocking-sequenz darstellen.
[anmerkung: seit version 1.0.1 bilden die letzten aufrufe des knockers die webknocking-sequence. somit gibt es keine probleme bei grosser last.
die komplexität des "knocking-sequence-suchalgorithmus" erhöht sich dadurch gerinfügig von O(1) (mit c = länge der sequenz) auf O(n) (mit c = länge der sequenz). n ist hier ein mass für die netzlast des webservers. im einsatz in der praxis sollte diese geringe verschlechterung kaum zu spüren sein, da der einfluss der netzlast auf die zeitspanne begrenzt ist, die der administrator vom absetzen der knocking-sequenz bis zum aufruf von webknocking.php zugelassen hat.]
ist das der fall wird nach einem optionalen "frage-antwort-spiel" der port 22 (ssh) geöffnet.

die vorteile
vorteil nummer 1 ist natürlich, dass man so keinen speziellen knocking-clienten mehr benötigt, sondern die sequenz ganz einfach mit jedem beliebigen webbrowser absetzten kann.
ein weiterer vorteil ist, dass auch kein daemon nötig ist, da die sequenz nur dann gesucht wird, wenn die entsprechende seite aufgerufen wird.
hervorzuheben ich auch die zusätzliche sicherheit durch das "frage-antwort-spiel", das ein grundproblem, welches portknocking hat etwas aufweicht.
und der vierte vorteil für mich ist, dass ich weit mehr vertrauen in die implementierung haben kann ;-).

nachteil
zwei nachteile hat das ganze aber auch: der webserver muss laufen und zumindest dieser port offen sein, ausserdem ist das "sniffen"-problem durch das "frage-antwort-spiel" nicht komplett gelöst. die zusätzliche Sicherheit, die es bietet hängt massgeblich von der art dieses "spiels" ab.
eine idee das "sniffen"-problem nahezu auszuschalten ist es die knocksequenz zeitabhängig zu machen, bzw. sich ändernde informationen hinein zu kodieren. allerdings erreicht man mit einem entsprechend guten "frage-anwort-spiel" die gleiche sicherheitsgüte.



details der implementierung
webknocking ist so gestaltet, dass es ohne speziellen knocking-client auskommt. der administrator kann festlegen, wieviel zeit er dem nutzer geben will, die sequenz abzusetzen. bei einer sequenzlänge von 5 bis 6 seiten empfielt sich eine minute.

die sequenz wird nur dann erkannt, wenn der nächste aufruf die seite webknocking.php ist. die maximale zeit zwischen dem absetzen der sequenz und dem aufruf von webknocking.php kann ebenfalls festgelegt werden.
wurde die sequence erkannt und alles ist in in dem entsprechenden zeitramen passiert, dann liefert webknocking.php eine "frage" und erwartet darauf eine antwort (wiederum innerhalb einer vorher festgelegten zeit), die mit dem aufruf von webknocking.php?value=<antwort> gegeben werden muss. entspricht die antwort dem, was erwartet wird, startet webknocking.php ein shellscript, was die firewallregeln neu setzt.

die art dieser frage/n kann jederzeit geändert werden. derzeit besteht die "frage" aus 4 zahlen, die aus der ip des nutzers gewonnen werden und die erwartete antwort aus deren summe. einen sichereren, zeitabhängigen algorithmus werde ich irgendwann nachreichen.

dieses frage-antwort-spielchen ist theoretisch nicht unbedingt nötig. allerdings kann die knock-sequenz natürlich durch sniffen ausspioniert werden, daher bietet es einen weiteren schutz.