Fail2ban

From TÜ Narva Kolledži Wiki
Jump to navigation Jump to search

fail2ban - программа для предотврашения атак типа bruteforce

Открывая сервер для интернета нужно быть уверенным что ваш сервер надежно защищен, должны стоять последние обновления безопасности и безопасные пароли, все лишние порты закрыты. Однако почти всегда для подключения к серверу остается доступ по SSH с паролем, что небезопасно, даже если вы установили сложные и длинный пароль. Если вы откроете логи на своем сервере, по пути /var/logs/access-log*, то обнаружите много неизвестных вам IP-адресов пытающихся получить доступ к серверу. Это боты, которые ищут в сети сервера и пытаются методом Bruteforce угадать пароль от сервера. В случае если нет защиты от этой атаки то угадать пароль удастся довольно быстро, ведь пароль подбирает не человек а программа которая за минуту может сгенерировать больше 10000 паролей. Для борьбы с этим был создан fail2ban, принцип работы которого прост. Программа читает логи и если видит что кто-то пытается пробовать вводить разные пароли, отправляет этого клиента в черный список или делает еще какие-то действия.

Установка

Установка максимально простая. Не требует никаких настроек, ведь из коробки приложение уже справляется с поставленной задачей.

sudo apt-get install fail2ban

после чего нужно сделать так чтобы приложение запускалось автоматически

sudo systemctl start fail2ban sudo systemctl enable fail2ban

Настройка

Все конфигурационные файлы находятся по пути etc/fail2ban. Все файлы в формате .conf, в случае необходимости можно создать файл с тем же именем но в указав формат .local. Таким образом вы можете менять настройки. В файлах есть хорошая документация, так что всегда можно открыть любой файл и прочитать что он делает. Мы же попробуем настроить fail2ban так чтобы он добавлял клиента в черный список если человек ввел пароль неправильно 3 раза.(по умолчанию: 5 попыток)

cd /etc/fail2ban/

далее открываем конфигурационный файл удобным редактором. Я использую Vim

sudo vim jail.conf

после чего нахожу такие данные

bantime  = 10m
findtime  = 10m
maxretry = 5

bantime - время на которое блокируется клиент findtime - в случае если клиент ввел maxretry кол-во раз неверный пароль в течении этого findtime времени, то приложение его отправляет в черный список maxretry - кол-во попыток входа после которого пользователь отправляется в черный список

Я также рекомендую увеличить время на которое блокируется клиент. После введенных изменений сохраните файл. В vim это делается командой

:wq

После чего вам необходимо убедиться в корректности конфигурационного файла введя

sudo fail2ban-client reload

В случае если ошибок нет вы увидите:

OK