iptables -N ssh_knock # Создаем цепочку для проверки попыток соединений на защищаемый порт # Если за последние 60 секунд было 2 и более стука — блокируем, на всякий случай iptables -A ssh_knock -m recent --rcheck --seconds 60 --hitcount 2 -j RETURN # Если за последние 10 секунд стук в нужный порт был — разрешить соединение iptables -A ssh_knock -m recent --rcheck --seconds 10 -j ACCEPT iptables -F INPUT # Очищаем цепочку INPUT iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Разрешаем пакеты по установленным соединениям # Все попытки открыть новое соединение по SSH направляем на проверку iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 22 -j ssh_knock # Здесь мы добавляем правило для регистрации стука iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 27520 -m recent --set # Опять же на всякий случай — при стуке в соседние порты закрываем SSH iptables -A INPUT -m conntrack --ctstate NEW -p tcp -m multiport --dport 27519,27521 -m recent --remove iptables -P INPUT DROP # Что не разрешено — то запрещено