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

SSH означает Secure Shell Protocol и является криптографическим сетевым протоколом для безопасной работы сетевых служб в незащищенной сети. Fail2ban – это программный фреймворк для предотвращения вторжений. Fail2ban написан на языке Python и используется для предотвращения атак методом перебора. В следующих параграфах мы установим Fail2ban и предоставим вам команды для управления службой fail2ban. Затем мы перейдем к настройке fail2ban для защиты SSH.

Установка Fail2ban и защита SSH – это простой процесс, который может занять до 15 минут. Давайте начнем!

Предварительные условия

  • Свежая установка Ubuntu 22.04
  • Привилегии пользователя: root или не root пользователь с привилегиями sudo

Шаг 1. Обновление системы

Мы должны обновить системные пакеты до последних доступных версий и приступить к установке fail2ban.

sudo apt update -y && sudo apt upgrade -y

Шаг 2. Установка Fail2ban

Для установки службы Fail2ban выполните следующую команду:

sudo apt install fail2ban -y

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

sudo systemctl enable fail2ban && sudo systemctl start fail2ban

Для проверки работоспособности службы выполните следующую команду:

sudo systemctl status fail2ban

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

root@host: sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
Loaded: загружен (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
Active: активен (работает) с Tue 2022-10-04 18:14:04 CDT; 4s ago
Docs: man:fail2ban(1)
Main PID: 147319 (fail2ban-server)
Tasks: 5 (limit: 4575)
Память: 11.6M
CPU: 338ms
CGroup: /system.slice/fail2ban.service
└─147319 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Oct 04 18:14:04 host.test.vps systemd[1]: Started Fail2Ban Service.
Oct 04 18:14:04 host.test.vps fail2ban-server[147319]: Сервер готов

Шаг 3. Настройка Fail2ban

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

Все параметры конфигурации хранятся в файле jail.conf, но в большинстве случаев не следует изменять этот файл, а вносить пользовательские настройки в файле jail.local или в отдельный файл .conf в каталоге jail.d/. Если редактировать jail.conf, то при следующем обновлении системы содержимое файла может вернуться к состоянию по умолчанию. Поэтому мы сделаем копию оригинального 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

Это означает, что клиент будет забанен, если за 5 минут будет 3 неудачных попытки войти на сервер.

Следующие параметры, которые часто используются – это параметры электронной почты. Эти параметры помогут нам получить оповещение по электронной почте, когда fail2ban начнет действовать и банить пользователей. Параметры destemail, sender и mta.

# Адрес электронной почты назначения используется исключительно для интерполяций в конфигурационных файлах.
# jail.{conf,local,d/*}
destemail = root@localhost
# Адрес электронной почты отправителя используется исключительно для некоторых действий
sender = root@fq-hostname
# Действие электронной почты. Начиная с версии 0.8.1 Fail2Ban использует sendmail MTA для
# рассылки. Измените параметр конфигурации mta на mail, если вы хотите
# вернуться к обычной "почте".
mta = sendmail

Сообщения о запрете отправляются на destemail, sender – это поле FROM в письме, а mta – это почтовая служба. По умолчанию почтовой службой для fail2ban является sendmail, но вы можете настроить любую почтовую службу.

Проверка

Теперь давайте проверим конфигурацию Fail2ban на предмет предыдущих изменений.

ssh user@192.168.0.1
user@192.168.0.1's password:
Permission denied, please try again.
user@192.168.0.1's password:
Permission denied, please try again.
user@192.168.0.1's password:
user@192.168.0.1: Permission denied (publickey,password).
ssh user@92.168.0.1
ssh: connect to host 192.168.1.107 port 22: Connection refused

Как видите, после трех неудачных попыток входа, Fail2ban закрыл SSH соединение. Пользователь будет забанен на 5 минут. Если вы попытаетесь войти в систему в течение этих 5 минут, то соединение будет запрещено, как описано выше.

Вы успешно защитили SSH с помощью Fail2Ban на Ubuntu 22.04.
.

Комментарии (0)