Ограничение подбора пароля по сети по ssh

Если посмотреть логи Linux серверов, то можно обнаружить большое количество сообщений от демона sshd, свидетельствующих о попытке подбора паролей по ssh.

Dec 6 11:03:11 artur sshd[2177]: Invalid user test from 193.220.141.151

Dec 6 11:03:11 artur sshd[2177]: Failed password for invalid user test from 193.220.141.151 port 46079 ssh2

Dec 6 11:03:15 artur sshd[2180]: Failed password for root from 193.220.141.151 port 46144 ssh2

Dec 6 11:03:16 artur sshd[2183]: Invalid user admin from 193.220.141.151

Dec 6 11:03:16 artur sshd[2183]: Failed password for invalid user admin from 193.220.141.151 port 46377 ssh2

Обратите внимание на задержку между попытками — несколько секунд. На той стороне находятся «роботы». Наша задача ограничить количество попыток соединения с одного IP адреса. Для этого можно воспользоваться модулем recent нетфильтра.

iptables -A INPUT -p tcp -m state —state NEW —dport 22 -m recent —update —seconds 20 -j DROP

iptables -A INPUT -p tcp -m state —state NEW —dport 22 -m recent —set -j ACCEPT

После введения этого правила логи становятся девтственно чистыми.

Dec 10 15:24:42 artur — MARK —

Dec 10 15:44:42 artur — MARK —


Dec 10 15:49:06 artur sshd[21819]: Did not receive identification string from 85.93.9.31


Dec 10 16:02:10 artur sshd[21824]: Invalid user shell from 85.93.9.31


Dec 10 16:02:10 artur sshd[21824]: Failed password for invalid user shell from 85.93.9.31 port 40288 ssh2


Dec 10 16:24:43 artur — MARK —


Dec 10 16:44:43 artur — MARK —


Dec 10 17:04:43 artur — MARK —

Все, роботы отвалились 🙂