Что такое Fail2Ban
Приложение fail2ban отслеживает файлы логов сервера на наличие попыток вторжения и других подозрительных действий. После заданного количества отказов хоста fail2ban автоматически блокирует его IP-адрес на определенное время.
Как установить Fail2Ban
Чтобы установить Fail2Ban на сервер, мы сначала войдем на сервер и выполним команду для обновлении ПО на нашем сервере, а затем и саму команду установки Fail2Ban:
apt update
apt install fail2ban

После установки запустите и включите службу:
systemctl enable fail2ban && systemctl start fail2ban
Чтобы проверить, запущена ли служба, выполните следующую команду:
systemctl status fail2ban
Вы должны получить следующий вывод:
Как настроить Fail2Ban
Файлы конфигурации Fail2ban хранятся в папке /etc/fail2ban/ на сервере.
Все настройки конфигурации хранятся в файле jail.conf, но в большинстве случаев вам не следует редактировать этот файл, а просто необходимо указать настройки в файле jail.local или в отдельных файлах .conf в папке jail.d/. Изменение этого файла может привести к перезаписи значений при следующем обновлении системы. Мы собираемся сделать копию исходного файла jail.conf с новым именем jail.local:
cp jail.conf jail.local
Теперь мы готовы внести некоторые изменения для защиты SSH.
Если вы хотите применить какое-либо правило ко всем службам, поддерживаемым Fail2Ban, вам необходимо внести изменения в разделе [DEFAULT] в верхней части файла. Например, время бана по умолчанию установлено на 10 минут, но вы можете увеличить это значение, например, до 60 минут.
bantime = 60m
Другими важными параметрами являются findtime и maxretry, которые всегда работают вместе. Мы сделаем maxretry на 3 и findtime на 5 минут:
findtime = 5m maxretry = 3
Это означает, что клиент будет забанен, если будет 3 неудачных попытки входа на сервер в течении 5 минут.
Следующие параметры, которые часто используются, — это параметры электронной почты. Эти параметры помогут нам получать оповещения по электронной почте, когда fail2ban примет меры и забанит пользователей. Это объяснение destemail, отправителя и mta:
Сообщения о бане отправляются на destemail, отправителем является поле FROM в письме, а mta — почтовая служба. По умолчанию почтовая служба для fail2ban — sendmail, но вы можете настроить любую почтовую службу по своему усмотрению. Это будет работать.
Теперь проверим конфигурацию Fail2Ban на предмет предыдущих изменении, забанит ли он нас или нет:
Сначала перезагружаем fail2ban с помощью команды ниже и проверяем вход на сервер:
service fail2ban restart
[email protected]'s password: Permission denied, please try again. [email protected]'s password: Permission denied, please try again. [email protected]'s password: [email protected]: Permission denied (publickey,password). ssh: connect to host 185.94.164.37 port 22: Connection refused
Как видите, после трех неудачных попыток входа Fail2Ban закрыл SSH-соединение. Пользователь будет забанен на 5 минут. Если вы попытаетесь войти в систему в течение этих 5 минут, соединение будет отклонено.
Заключение
Вот и все! Вы успешно защитили SSH сервер с помощью Fail2Ban в Ubuntu, но вы также можете защитить таким способом все остальные службы на вашем сервере.