Zumindest wird in keiner mir bekannten Beschreibung erwähnt, daß man die Knocksequenz variabel gestalten kann.
Vielleicht sollte ich meinen Code doch mal nach GIT schubsen. Ich scheue mich aber ein wenig vor dem Aufwand, das auch sachgerecht zu dokumentieren, Anleitungen zu schreiben und Beispiele zu erstellen. Der Quellcode ansich ist keine Raketenwissenschaft.Deswegen erschien’s mir recht geschickt, das mit einem ICMP-Paket erledigen zu können und ich hatte gehofft, dass jemand das bereits offen umgesetzt hätte.
Wie gesagt, der Code beruht noch auf iptables. Man kann mit iptabels Netzwerkpakete mit -QUEUE auf eine Warteschlange schicken. Ich schicke hierfür die ICMP-Pakete und auch die SSH-Pakete auf die Queue.Letztlich handhabt der Kernel die ICMP-Pakete, oder? Lässt sich die Payload dann ohne Modifikationen daran etwa via ip/nftables extrahieren?
Der Daemon lauert auf der Queue und kann dann das ICMP-Paket in vollem Umfang inklusive Header und Payload auslesen. Es ist dann die Aufgabe des Daemons, die gequeueten Pakete zu beurteilen, dem Kernel also ein Verdict zu schicken. Wenn zuerst ein gültiges ICMP-Paket ankommt und danach eine SSH-Connectrequest mit passendem Quell-IP-Attribut, wird einfach ein positives Verdict an den Kernel geschickt und das Paket wird durchgelassen. Ständige Änderungen an den Filterlisten (wie bei fail2ban) sind hier also nicht nötig.