Я пытаюсь настроить правила iptables, чтобы разрешить только 3 попытки IP-адреса в минуту для подключения к серверу через SSH, а затем сбросить все подключения, чтобы предотвратить атаки SSH; но похоже я что-то делаю не так!
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
Спасибо
Я думаю, тебе лучше использовать fail2ban
, потому что ваши правила ipfilter также блокируют допустимые соединения. fail2ban
будет блокировать IP-адреса только после неудачных подключений.
Затем обычной практикой является запрет IP-адресов, когда они пытаются подключиться к порту 22, и привязка вашего ssh-сервера к другому порту. Затем вы сталкиваетесь только с парой незаконных подключений в неделю, если ваш компьютер не является широко известной целью.
По точному вопросу, который вы задали:
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP
Вы можете реализовать то, что хотите, с помощью следующих 2 правил
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 -j DROP
Обратите внимание, что использование -A
который добавляет правила в конец цепочки, может не соответствовать способу обработки правил iptables, т.
Сказав, что вы также можете найти fail2ban - лучший способ реализовать такой блок.
Возможно, вы захотите попробовать модуль LIMIT.
iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute -j ACCEPT