Ich habe ein funktionierendes Port-Knocking-Setup für SSH unter Linux, das nur iptables-Regeln und das Modul „recent“ verwendet und diesem Tutorial folgt:https://wiki.archlinux.org/index.php/Port_knocking#Port_knocking_with_iptables_only.
Jetzt besteht mein Problem darin, dass mehrere Netzwerke, wie mein Arbeitsnetzwerk, den Datenverkehr zu nicht standardmäßigen Ports wie 22, 80, 443 blockieren, sodass ich meine Knock-Pakete nicht senden kann. Andererseits erlaubt mein mobiles Internet sie.
Als Workaround möchte ich den SSH-Port öffnen, wenn die richtige Klopfsequenz gesendet wird vonbeliebigHost, nicht nur derselbe Host.
Gibt es eine Möglichkeit, das mit iptables zu erreichen? Ich könnte mir beispielsweise einen „Statusschalter“ oder eine globale Variable vorstellen, die durch eine Regel eingeschaltet und durch eine andere Regel überprüft werden kann. Nach einem Timeout würde sie wieder auf „Aus“ zurückfallen.
Antwort1
Ich würde vorschlagen, den knockd-Weg zu gehen. So ist es einfacher. Nur anstatt diese Standardkonfiguration zu verwenden
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Sie würden dieses verwenden (Hinweis: -s %IP% entfernt)
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 10
tcpflags = syn
command = /usr/sbin/iptables -D INPUT -p tcp --dport 22 -j ACCEPT