Fail2ban
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