Защита консоли сервера: Fail2ban

Установка и настрйка Fail2ban — автоматической защиты сервера от попыток взлома

Продолжаем нашу нелёгкую, но пока неопасную борьбу с хакерами (Часть 1, Часть 2)

Постоянно следить живому человеку за роботами — дело утомительное и глупое: роботы не хотят ни есть ни спать. Поэтому нужно отправить робота на борьбу с роботами. В нашем случае это будет утилита Fail2ban

Для начала установим ее:

sudo apt-get install fail2ban

Далее идём в конфиг:

vi /etc/fail2ban/jail.conf

Прежде всего, если вы подключаетесь к серверу с другой машины, настройте whitelist — те адреса, которые fail2ban не заблокирует никогда.
Находим в разделе [DEFAULT] параметр ignoreip и добавляем туда свои адреса с маской.

Теперь нас интересуют следующие параметры (можно регулировать исходя из активности взломщиков):
maxretry — максимальное число неудачных попыток
findtime — время, в течение которого может быть произведено число попыток не более указанного. иначе —
bantime — время, на которое банится хост. По умолчанию — 600 секунд.

Таким образом, можно задать малое число maxretry (например 3 — стандартное число попыток залогиниться по ssh, по умолчанию в конфиге fail2ban — 5), но достаточно короткое findtime. Это позволит утилите быстрее реагировать на попытки взлома. Однако, в таком случае злоумышленник может делать множество попыток подбора пароля, если увеличит интервалы между ними, не опасаясь попасть в бан.
С другой стороны, можно задать большое число maxtry и при этом увеличить длительность findtime — это даст нам возможность более уверенно утверждать, что хост предпринимает злонамеренную активность в отношении нашего сервера. Такой хост, очевидно, подлежит и более длительному бану.

Так же эти глобальные параметры могут быть настроены для каждой из нижеследующих секций конфига.
В рамках данной статьи мы рассмотрим одну секцию:

[ssh-tcpwrapper] — именно она отвечает за мониторинг интересующей нас активности

enabled = false — ставим true
filter = sshd
action = hostsdeny
sendmail-whois[name=SSH, dest=you@example.com] — если хотим чтобы уведомления падали на почту нужно её тут указать
ignoreregex = for myuser from
logpath = /var/log/sshd.log — меняем на наш лог /var/log/secure

После чего перезапускаем службу

sudo service fail2ban restart

и наслаждаемся не только автоматическим добавлением нежелательных хостов в бан, но и информированием об этом на электронную почту с автоматическим отсыланием вам (помните в настройках: sendmail-whois) whois информации о нежелательном хосте. То самое, что мы руками делали в первой части

Всё происходящее можно наблюдать в логах:

cat /var/log/fail2ban.log

2016-10-03 17:25:00,858 fail2ban.actions: WARNING [ssh-tcpwrapper] Ban 221.229.172.7
2016-10-03 17:25:00,991 fail2ban.actions: WARNING [ssh-tcpwrapper] Ban 220.169.242.158
2016-10-03 17:25:01,140 fail2ban.actions: WARNING [ssh-tcpwrapper] Ban 121.18.238.98

Чтобы убедиться что это не обман, заглянем в уже известный нам файл /etc/hosts.deny

ALL: 221.229.172.7
ALL: 220.169.242.158
ALL: 121.18.238.98

Эти три строчки были автоматически добавлены утилитой Fail2ban

В конце нужно упомянуть такую важную вещь как установка fail2ban в автозапуск после перезагрузки.
Для этого зайдите в файл

/etc/rc.local и впишите там в любое место (я вписал в конец) строку /etc/init.d/fail2ban start

Теперь, если это не критично, можно ребутнуть сервер и командой

service fail2ban status

убедиться что утилита сама запустилась сразу после перезагрузки.

Всем хорошего дня!

Добавить комментарий