Как защитить SSH с помощью Fail2Ban в Ubuntu

Что такое Fail2Ban

Приложение fail2ban отслеживает файлы логов сервера на наличие попыток вторжения и других подозрительных действий. После заданного количества отказов хоста fail2ban автоматически блокирует его IP-адрес на определенное время.

Как установить Fail2Ban

Чтобы установить Fail2Ban на сервер, мы сначала войдем на сервер и выполним команду для обновлении ПО на нашем сервере, а затем и саму команду установки Fail2Ban:

apt update
apt install fail2ban

Как защитить SSH с помощью Fail2Ban в Ubuntu

После установки запустите и включите службу:

systemctl enable fail2ban && systemctl start fail2ban

Чтобы проверить, запущена ли служба, выполните следующую команду:

systemctl status fail2ban

Вы должны получить следующий вывод:

Как защитить SSH с помощью Fail2Ban в Ubuntu

Как настроить Fail2Ban

Файлы конфигурации Fail2ban хранятся в папке /etc/fail2ban/ на сервере.

Как защитить SSH с помощью Fail2Ban в Ubuntu

Все настройки конфигурации хранятся в файле 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:

Как защитить SSH с помощью Fail2Ban в Ubuntu

Сообщения о бане отправляются на 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, но вы также можете защитить таким способом все остальные службы на вашем сервере.