Fail2Ban на CentOS 8: установка, настройка и защита

fail2ban

Это руководство поможет вам установить и настроить Fail2Ban на вашем сервер под управлением CentOS, RHEL 8 или Fedora. В этой статье Вы также узнаете, как добавить в Fail2Ban какой-либо сервис на мониторинг, например SSH, FTP т.д.

Шаг 1 — Установка Fail2ban на CentOS 8

Прежде всего, нужно установить пакет epel-release для настройки репозитория EPEL yum в вашу операционную систему, например CentOS 8. После этого установите RPM-пакет Fail2Ban с помощью команды:

sudo dnf install epel-release sudo dnf install fail2ban

Шаг 2 — Настройка Fail2ban

Fail2ban хранит файлы конфигурации в каталоге /etc/fail2ban но нам нужно создать копию файла этого конфига под именем как jail.local

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

Теперь нужно отредактировать файл jail.local для создания правил блокировки и доступа, это можно сделать в любом редакторе, например vi:

sudo vi /etc/fail2ban/jail.local

Для создания первого правила, внесем некоторые изменения в раздел [DEFAULT]:

[DEFAULT]
# «ignoreip» can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban
# will not ban a host which matches an address in this list. Several addresses
# can be defined using space (and/or comma) separator.
ignoreip = 127.0.0.1/8 192.168.1.0/24
# «bantime» is the number of seconds that a host is banned.
bantime = 60m
# A host is banned if it has generated «maxretry» during the last «findtime» seconds. as per below
# settings, 2 minutes
findtime = 5m
# «maxretry» is the number of failures before a host get banned.
maxretry = 5

Шаг 3 — Защита SSH / SFTP

После завершения настройки по умолчанию в файле jail.local найдите раздел [ssh-iptables], и отредактируйте как показано ниже:

[DEFAULT]
ignoreip = 192.168.56.2/24
bantime = 21600
findtime = 300
maxretry = 3
banaction = iptables-multiport
backend = systemd

[sshd]
enabled = true

Давайте кратко объясним параметры в приведенной выше конфигурации:

  • ignoreip: указывает список IP-адресов или имен хостов, которые нельзя забанить.
  • bantime: указывает количество секунд, на которое хост забанен (т.е. эффективная длительность бана).
  • maxretry: указывает количество сбоев до того, как хост будет забанен.
  • findtime: fail2ban заблокирует хост, если он генерировал «maxretry» в течение последних секунд «findtime».
  • Banaction: запрет действия.
  • backend: указывает бэкэнд, используемый для получения модификации файла журнала.
Конфигурация выше, означает, что IP будет заблокирован на 6 часов после 3-х неудачных попыток в течении 5 минут, а вся подсеть 192.168.0.1 будет проигнорирована.
Затем запустите и активируйте сервис fail2ban.
systemctl start fail2ban
systemctl enable fail2ban
Проверьте, работает ли он, используя следующую команду systemctl:
systemctl status fail2ban

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

Шаг 4 — Защита FTP

Давайте защитим ваш сервер FTP (vsFTPd), найдите следующую запись в разделе [vsftpd-iptables] и внесите изменения, как показано ниже. Но это только в том случае, если вы используете vsFTPd.

[vsftpd-iptables]
enabled  = true
filter   = vsftpd
action   = iptables[name=VSFTPD, port=21, protocol=tcp]
           sendmail-whois[name=VSFTPD, [email protected]]
logpath  = /var/log/vsftpd.log
maxretry = 5
bantime  = 1800

Шаг 5 — Перезапуск и тестирование

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

sudo systemctl start fail2ban.service sudo systemctl enable fail2ban.service

В целях тестирования я попробовал подключится по SSH с неверными учетными данными с другого компьютера. После 3-х неудачных попыток Fail2ban заблокировал этот IP через iptables с отклонением ICMP. НА скриншоте показано созданное правило блокировки IP-адреса.

fail2ban блокировка ssh

Внимание! Если Вы подключаетесь к серверу только по SSH, убедитесь, что у вас есть будет доступ по SSH с другого IP, прежде чем начать тестирование.

Разблокирование IP

Чтобы разбанить IP-адрес в fail2ban (во всех jails и базе данных), выполните следующую команду:

# fail2ban-client unban 192.168.56.1

Чтобы разбанить IP-адрес в fail2ban (во всех jails и базе данных), выполните следующую команду:

# fail2ban-client unban 192.168.56.1

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.