Как установить 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.