Настраиваем FAIL2BAN на Debian 11 с межсетевым экраном UFW для защиты SSH

Программа fail2ban жизненно необходима на каждом linux сервере, как только он будет доступен в интернете. Армия ботов постоянно сканирует доступное адресное пространство с целью получить доступ к любому устройству, будь-то сервер, компьютер, маршрутизатор, коммутатор, точка доступа, видеокамера или что-то еще.

10 лет назад я уже писал о защите от broot force (полный перебор или метод «грубой силы»). С тех пор вышли новые версии операционных систем. Поэтому я написал новую более актуальную статью по настройке fail2ban на операционной системе Debian 11.

Как установить fail2ban в операционной системе Debian 11

Программа fail2ban присутствует в репозиториях Debian 11, поэтому для ее установки просто выполните следующую команду в консоли от имени root-пользователя:

# apt install fail2ban

Затем добавьте fail2ban а автозагрузку:

# systemctl enable fail2ban

И запустите:

# systemctl start fail2ban

С настройками по-умолчанию fail2ban на 99% снимает проблему подбора паролей методом перебора. При условии что сам пароль сложный (строчные и прописные буквы, цифры, спецсимволы) и длинный (не менее 16 символов).

Нужно ли ставить fail2ban

Если вы думаете, что ваш сервер не представляет никакой ценности, никому не нужен и никто не будет пытаться получить к нему доступ, то это далеко не так. Взламывают всех без разбора.

Приведу результат блокировок fail2ban на свежем сервере, которому 10 дней от роду, и на котором ничего не установлено.

Выполните следующую команду в консоли, чтобы посмотреть статистику работы fail2ban для SSH

 

# fail2ban-client status sshd

 

Настраиваем FAIL2BAN на Debian 11 с межсетевым экраном UFW для защиты SSH

 

Как видно у моего сервера за 10 дней более 1000 ошибочных подключений (то есть с неправильным паролем) и это был не я 🙂

 

Fail2bat заблокировал более 300 IP адресов с которых были попытки подключений.

 

Вывод очевиден: программу fail2ban или ей подобную нужно ставить обязательно.

 

Расширенные настройки fail2ban

 

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

 

Внесите изменения в файл /etc/fail2ban/jail.local. Если он отсутствует, то создайте его.

 

Для защиты SSH у меня такая конфигурация:

 

[DEFAULT]

bantime = 604800

maxretry = 3

findtime = 7200

banaction = ufw

[sshd]

enabled = true

 

где

 

  • bantime — это время в секундах на которое блокируется IP адрес с ошибочными подключениями. В моем примере — 7 дней.
  • maxretry — это количество неудачных попыток до попадания в стоп-лист
  • findtime — это временной интервал секундах определяющий количество неудачных попыток. В моем примере — 2 часа
  • banaction — это брандмауэр с помощью котрого будут блокировать IP адреса. В моем примере — это UFW.

 

При таких настройках если в течении 2-х часов с одного IP адреса будет 3 неудачных подключения, то такой IP адрес будет заблокирован на 7 дней с помощью брандмауэра UFW.

 

Чтобы настройки вступили в силу перезапустите fail2ban:

 

# systemctl restart fail2ban

Как удалить IP адрес из черного списка fail2ban

Если нужно снять блокировку с конкретного IP адреса выполните следующую команду. В этом примере удалим адрес из таблицы sshd:

# fail2ban-client set sshd unbanip XXX.YYY.ZZZ.AAA

где XXX.YYY.ZZZ.AAA — адрес который нужно разблокировать.

 

Вывод

Это далеко не полное описание возможностей программы fail2ban. Я привел пример защиты только для SSH.

Ставить защиту в виде fail2ban или подобной программы нужно обязательно.

Благодарности

При написании статьи были использованы следующие источники:

 

  1. https://obu4alka.ru/kak-v-fail2ban-udalit-zablokirovannyj-ip-adres.html
  2. https://wiki.archlinux.org/title/Fail2ban_(Русский)
  3. https://www.dmosk.ru/instruktions.php?object=fail2ban