Поиск по сайту:

Как установить Fail2ban на Rocky Linux и AlmaLinux


Fail2ban, написанный на Python, представляет собой бесплатную систему предотвращения вторжений с открытым исходным кодом (IPS), которая защищает сервер. против атак грубой силы.

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

Fail2ban имеет широкие возможности настройки и может быть настроен для защиты множества сервисов, таких как SSH, vsftpd, Apache. и Webmin.

В этом руководстве мы сосредоточимся на том, как установить и настроить Fail2ban в Rocky Linux и AlmaLinux.

Шаг 1. Убедитесь, что Firewalld запущен

По умолчанию Rocky поставляется с запущенным Firewalld. Однако если в вашей системе это не так, запустите Firewalld, выполнив:

sudo systemctl start firewalld

Затем включите его запуск во время загрузки:

sudo systemctl enable firewalld

Затем проверьте статус Firewalld.

sudo systemctl status firewalld

Кроме того, вы можете проверить все правила Firewalld, применяемые в данный момент, с помощью команды:

sudo firewall-cmd --list-all

Шаг 2. Установите EPEL в Rocky Linux

В качестве требования для установки fail2ban и других необходимых пакетов вам необходимо установить репозиторий EPEL, который предоставляет дополнительные высококачественные пакеты для дистрибутивов на основе RHEL.

sudo dnf install epel-release

Шаг 3. Установите Fail2ban в Rocky Linux

Установив EPEL, продолжите установку fail2ban и пакета fail2ban-firewalld.

sudo dnf install fail2ban fail2ban-firewalld

При этом будет установлен сервер Fail2ban и компонент Firewalld, а также другие зависимости.

После завершения установки Fail2ban запустите службу Fail2ban.

sudo systemctl start fail2ban

И включите его запуск во время загрузки.

sudo systemctl enable fail2ban

Вы можете проверить статус службы Fail2ban, выполнив команду:

sudo systemctl status fail2ban

Результатом является подтверждение того, что Fail2ban работает так, как мы и ожидали.

Шаг 4. Настройка Fail2ban в Rocky Linux

Двигаясь дальше, нам нужно настроить Fail2ban, чтобы он работал должным образом. В идеале мы бы отредактировали основной файл конфигурации — /etc/fail2ban/jail.conf. Однако это не поощряется. В качестве обходного пути скопируйте содержимое файла конфигурации Jail.conf в файл jail.local.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Теперь откройте файл jail.local в предпочитаемом вами редакторе.

sudo vim /etc/fail2ban/jail.local

В разделе [DEFAULT] убедитесь, что у вас есть следующие настройки по мере их появления.

bantime = 1h
findtime = 1h
maxretry = 5

Определим атрибуты:

  • Директива bantime определяет продолжительность времени, в течение которого клиент будет заблокирован после неудачных попыток аутентификации.
  • Директива findtime определяет продолжительность или период, в течение которого Fail2ban будет учитывать повторные попытки неправильного ввода пароля.
  • Параметр maxretry — это максимальное количество попыток неправильного ввода пароля, прежде чем доступ удаленного клиента к серверу будет заблокирован. Здесь клиент будет заблокирован после 5 неудачных попыток аутентификации.

По умолчанию Fail2ban работает с iptables. Однако это устарело в пользу firewalld. Нам нужно настроить error2ban для работы вместе с firewalld вместо iptables.

Итак, запускаем командой:

sudo mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local

Чтобы применить изменения, перезапустите Fail2ban:

sudo systemctl restart fail2ban

Шаг 5. Защита службы SSH с помощью Fail2ban

По умолчанию Fail2ban не блокирует ни один удаленный хост, пока вы не включите конфигурацию тюрьмы для службы, которую вы хотите защитить. Конфигурация тюрьмы указана в пути /etc/fail2ban/jail.d и переопределяет конфигурацию, указанную в файле Jail.local.

В этом примере мы создадим файл конфигурации тюрьмы для защиты службы SSH. Поэтому создайте файл тюрьмы SSH.

sudo vim /etc/fail2ban/jail.d/sshd.local

Далее вставьте следующие строки:

[sshd]
enabled = true

Override the default global configuration
for specific jail sshd
bantime = 1d
maxretry = 3

В приведенной выше конфигурации удаленному хосту будет запрещен доступ к системе на 1 день после 3 неудачных попыток входа по SSH. Сохраните изменения и перезапустите службу Fail2ban.

sudo systemctl restart fail2ban

Затем проверьте состояние конфигурации тюрьмы с помощью утилиты командной строки fail2ban-client.

sudo fail2ban-client status

Из выходных данных мы видим, что у нас есть 1 джейл, настроенный для службы под названием «sshd».

Кроме того, вы можете подтвердить значение maxretry для тюрьмы sshd, используя опцию get.

sudo fail2ban-client get sshd maxretry

3

Значение, напечатанное 3, должно соответствовать значению, указанному вами в файле sshd.local.

Шаг 6. Тестирование конфигурации Fail2ban

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

Итак, перейдите в удаленную систему Linux и попытайтесь войти в систему, используя неправильный пароль. После 3 неудачных попыток соединение будет разорвано, а любая последующая попытка повторного подключения будет заблокирована до истечения срока запрета.

Чтобы получить информацию о заблокированных клиентских системах, проверьте статус тюрьмы.

sudo fail2ban-client status sshd

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

sudo fail2ban-client unban 192.168.2.102

Еще раз проверьте статус тюрьмы, чтобы убедиться, что клиент не включен в список запрещенных IP-адресов.

sudo fail2ban-client status sshd

Как мы уже видели, Fail2ban — очень полезный инструмент для защиты от злоумышленников, пытающихся проникнуть в вашу систему Linux. Он работает совместно с Firewalld и блокирует клиентские системы на определенный период после определенного количества неудачных попыток входа в систему. При этом он обеспечивает дополнительный уровень защиты вашего сервера Linux.