Разрешить доступ по SSH после проверки порта с любого исходного IP-адреса

Разрешить доступ по SSH после проверки порта с любого исходного IP-адреса

У меня есть рабочая настройка Port Knocking для SSH на Linux, использующая только правила iptables и модуль «recent», следуя этому руководству:https://wiki.archlinux.org/index.php/Port_knocking#Port_knocking_with_iptables_only.

Теперь моя проблема в том, что несколько сетей, таких как моя рабочая сеть, блокируют трафик на нестандартные порты, такие как 22, 80, 443, поэтому я не могу отправлять свои knock-packets. С другой стороны, мой мобильный интернет их разрешает.

В качестве обходного пути я хотел бы открывать порт SSH всякий раз, когда отправляется правильная последовательность стукалюбойхост, а не просто тот же самый хост.

есть ли способ сделать это с помощью iptables? Например, я мог бы представить себе «переключатель состояния» или глобальную переменную, которая может быть включена одним правилом и проверена другим правилом. Она бы вернулась к «выключенному» состоянию после тайм-аута.

решение1

Я бы предложил использовать knockd route. Так проще. Только вместо использования этой конфигурации по умолчанию

[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

Вы могли бы использовать это (обратите внимание, что -s %IP% удален)

[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

Связанный контент