Yandex
Обновить настройки cookies

Настройка Fail2ban в Debian/Ubuntu

В современном мире киберугроз безопасность серверов становится приоритетом для каждого администратора. Одним из наиболее эффективных инструментов для защиты вашего сервера является Fail2ban. В этой статье я поделюсь своим опытом настройки Fail2ban на системах Debian и Ubuntu, а также предложу практические советы и рекомендации.

Что такое Fail2ban?

Fail2ban — это программное обеспечение, которое отслеживает журналы вашего сервера и блокирует IP-адреса, которые проявляют подозрительную активность. Например, если кто-то пытается многократно угадать пароль для SSH, Fail2ban автоматически заблокирует этот IP-адрес на определенное время. Это позволяет защитить ваш сервер от атак брутфорс и других видов злоумышленных действий.

Почему стоит использовать Fail2ban?

  1. Защита от брутфорс-атак: Fail2ban эффективно защищает ваши сервисы, такие как SSH, FTP и веб-серверы, от brute-force атак на пароли.
  2. Легкость настройки: Настройка Fail2ban не требует глубоких технических знаний и может быть выполнена даже начинающим администратором.
  3. Гибкость: Вы можете настроить Fail2ban для защиты различных сервисов и настроить параметры блокировки под свои нужды.

Установка Fail2ban

Установка Fail2ban на Debian или Ubuntu очень проста. Следуйте этим шагам:

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

Перед установкой убедитесь, что ваша система обновлена:
apt update
apt upgrade

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

После обновления выполните следующую команду для установки Fail2ban:
apt install fail2ban iptables

Структура Fail2ban

Конфигурационные файлы fail2ban размещены в директории /etc/fail2ban/:
  • fail2ban.conf – дефолтные настройки сервиса fail2ban;
  • fail2ban.d/*.* – пользовательские настройки сервиса fail2ban;
  • jail.conf – дефолтные настройки джайлов для защищаемых сервисов;
  • jail.d/*.* – пользовательские настройки джайлов для защищаемых сервисов;
  • filter.d/*.* – настройки шаблонов поиска в системных журналах (логах);
  • action.d/*.* – настройки исполняемых действий;
  • paths*.conf – настройки для отдельных операционных систем.

Настройка Fail2ban

Теперь, когда Fail2ban установлен, пора настроить его. Настройка включает в себя изменение конфигурационного файла для определения, какие службы вы хотите защищать.

Шаг 1: Базовые настройки

При обновлении пакетов система может перезаписывать дефолтные файлы настроек джайлов, по этому рекомендую создавать пользовательские файлы настроек.

Также необходимо отключить дефолтные параметры защиты SSH в Fail2ban:
>/etc/fail2ban/jail.d/defaults-debian.conf

Шаг 2: Настройка защиты SSH

Создаем файл /etc/fail2ban/jail.d/sshd.conf с содержимым:
[sshd]
enabled = true
bantime = 1800
findtime = 600
maxretry = 3
  • enabled - включает джайл
  • maxretry - максимальное количество неудачных попыток входа за findtime секунд
  • bantime - время блокировки в секундах
Для указанных выше параметров IP-адрес будет блокироваться на пол часа (1800 секунд), если за последние 10 минут (600 сек) с него было осуществлено как минимум 3 неудачных попытки аутентификации.

Для Debian 12 также нужно добавить одну строку для верного обнаружения SSH:
echo "sshd_backend = systemd" >> /etc/fail2ban/paths-debian.conf

Шаг 3: Проверка работы сервиса

На этом настройка джайла sshd для fail2ban завершена и необходимо перезапустить сервис:
systemctl restart fail2banПроверяем работу сервиса:
systemctl status fail2ban

Шаг 4: Проверка списока блокировок IP

Чтобы получить список блокировок IP адресов по джайлу sshd воспользуйтесь командой:
fail2ban-client status sshd20250110_MMIfFUW1

Шаг 5: Управление блокировкой IP в джайле

Чтобы разблокировать IP используйте команду:
fail2ban-client set sshd unbanip 1.2.3.4Чтобы добавить айпи в "белый список", то есть предотвратить блокировку айпи в будущем используйте команду:
fail2ban-client set sshd addignoreip 1.2.3.4Получить список всех IP, которые игнорируются можно командой:
fail2ban-client get sshd ignoreipА удалить IP адрес из этого списка можно командой:
fail2ban-client set sshd delignoreip 1.2.3.4Все эти изменения имеют временный характер и будут сброшены при перезапуске сервиса Fail2ban или сервера в целом.

Шаг 6: Управление постоянными блокировками в джайле

Постоянно заблокированные IP можно записать в файле конфигурации джайла /etc/fail2ban/jail.d/sshd.conf
ignoreip = 1.1.1.1 2.2.2.2
В параметре ignoreip, как в файле конфигурации джайла, так и для временного управления, IP указываются списком через пробел.

Собственные IP сервера прописывать не нужно. По-умолчанию они и так игнорируйтся.

Для применения этих изменений уже нужно перезапустить сервис fail2ban:
systemctl restart fail2ban

Анализ работы fail2ban

Во время работы fail2ban сохраняет всю информацию в системный журнал (лог файл) /var/log/fail2ban.log.

Список нескольких полезных команд для анализа приведу ниже.

Список всех заблокированных IP:
fail2ban-client bannedПолучения джайла, по которому IP заблокирован:
fail2ban-client banned 1.2.3.4Список всех заблокированных IP по джайлу sshd:
fail2ban-client get sshd bannedОстальные опции для анализа или управления fail2ban смотрите в выводе команды:
fail2ban-client -hПо умолчанию fail2ban блокирует с помощью iptables. При желании можно перенастроить на ipset, что предпочтительнее для больших списков блокировок.

А проверить список заблокированных IP по джайлу sshd в файрволе можно командой:
iptables -nL f2b-sshd

Заключение

Настройка Fail2ban на Debian или Ubuntu — это один из самых простых и эффективных способов повысить безопасность вашего сервера. С его помощью вы можете защитить свои сервисы от множества угроз. Надеюсь, мой опыт и советы помогут вам в настройке и использовании Fail2ban. Не забывайте регулярно проверять журналы и настраивать правила в соответствии с evolving threats. Защита вашего сервера — это непрерывный процесс, и Fail2ban станет вашим надежным союзником в этом деле.
19 Jan 2025, 19:16:30