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

iptables -N SSH_CHECK
iptables -A INPUT -p tcp –dport 22 -m state –state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent –set –name SSH
iptables -A SSH_CHECK -m recent –update –seconds 120 –hitcount 4 –name SSH -j DROP

Делает этот скрипт следующее: добавляет в iptables новую цепочку правил под названием SSH_CHECK, все входящие тцп соединения на 22й порт (который слухает ssh) отправляет в эту цепочку, если с одного ип адреса за 120 секунд (2 минуты) было 4 или больше новых соединений, то это зловредный хакер и он банится. Бан временный, как только условие 120х4 перестаёт выполняться – адрес снова может ходить на сервер. Это нужно чтобы вас самих случайно не забанило насовсем.

В интернете можно найти много вариантов этого скрипта, разные версии не работают с разными версиями iptables, поэтому перед экспериментами советую прописать в кроне сброс всех настроек iptables (iptables -F) раз в 5-10 минут, чтобы в случае какой-то ошибки не самозабаниться на своём же сервере. С этой штукой шутки плохи – одно неловкое движение и сервер придётся доставать из анабиоза через консоль в датацентре. После того как отладка закончена, сброс настроек соответственно надо будет убрать.

Похожие посты