Извините, что задал этот вопрос, но я просматривал форумы и темы по этому вопросу и, похоже, путаю себя больше, чем на самом деле получить какую-либо ясность. Все, что мне нужно, это короткий и краткий ответ на эту проблему:
Как настроить правило (цепочки) в iptables, которое отклоняет любой источник, который не может получить доступ к серверу после попыток XX в течение YY минут, так что любая дальнейшая попытка связаться с сервером будет отклонена до того, как пароль будет сопоставлен для минут ZZ. После ZZ минут после последней попытки подключения правило должно позволить тому же источнику повторить попытку, как если бы он никогда не пытался повторно подключиться раньше.
Моя проблема в том, что я не понимаю синтаксис iptables , не учитывая, насколько я его изучаю, и, следовательно, я благодарен за самый короткий " сценарий типа "ответ на этот вопрос
Ну, честно говоря, есть немного кривой обучения для iptables.
Во-первых, вы можете использовать ufw для запуска. ubw - мощный инструмент командной строки, и преимущество в том, что синтаксис похож на iptables.
sudo ufw enable
sudo ufw limit 22
Здесь я ограничиваю порт 22, вы можете использовать любой желаемый порт.
https://help.ubuntu.com/11.10/serverguide/C/firewall.html
Опять же, преимущество ufw будет автоматизировать большую часть этого и облегчить ваш процесс обучения.
If вы хотите использовать iptables, вам как минимум нужно научиться сохранять и восстанавливать свои правила.
sudo iptables-save > /etc/iptables.save
sudo iptables-restore /etc/iptables.save
Вы можете отредактировать /etc/iptables.save, синтаксис достаточно прост.
[d8 ] При попытке использования правил с удаленного устройства используйте iptables-apply, чтобы предотвратить блокировкуsudo iptables-apply /etc/iptables.save
. Чтобы восстановить правила при загрузке, одним из нескольких способов является добавление этого параметра в /etc/rc.local[!d9 ]
iptables-restore /etc/iptables.save
Другие параметры, перечисленные в вики-странице Ubuntu iptables (см. ниже).
Синтаксис iptables -
iptables -I INPUT -p tcp -m state --state NEW -m limit --limit 30/minute --limit-burst 5 -j ACCEPT
В LOG, добавьте LOG, но если вы не будете следить за своими журналами, используйте snort. logging iptables, IMO, более полезен для отладки.
См. man iptables, https://help.ubuntu.com/11.10/serverguide/C/firewall.html
Некоторые люди находят, что моя веб-страница iptables помогает начать.
Чтобы ответить на ваш комментарий, см. эти правила
iptables -A INPUT -p tcp -m tcp --dport 22 -m tcp -m state --state NEW -m recent --set --name SSH --rsource
iptables -A INPUT -p tcp -m tcp --dport 22 -m recent --update --seconds 600 --hitcount 8 --rttl --name SSH --rsource -j DROP
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
Предостережение - это зависит от службы. ssh настроен так, чтобы разрешить так много попыток аутентификации пароля 9see /etc/ssh/sshd_config), поэтому каждое соединение дает 6 попыток пароля.