Erlauben Sie den SSH-Zugriff nach dem Port-Knock von jeder Quell-IP

Erlauben Sie den SSH-Zugriff nach dem Port-Knock von jeder Quell-IP

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

verwandte Informationen