Image

База знаний → Настройка Fail2Ban для защиты от подбора паролей

[Виртуальные сервера]
Дата публикации: 27.01.2023

Служба Fail2Ban помогает блокировать ip адреса ботов, которые подбирают пароли к вашему сайту. В последнее время часто используется для проведения атак, так как большое кол-во post запросов создает существенную нагрузку на веб сервер. В наших примерах мы разберем блокировку ip адресов на примере популярной CMS - Wordpress, а также для службы ssh.

1. Установим службу Fail2Ban

1.1 Подключаем Epel репозиторий

yum install epel-release 

далее в /etc/yum.repos.d/epel.repo необходимо включить его, enabled=1

yum install fail2ban

2. Общие настройки

Служба Fail2ban хранит свои файлы конфигурации в каталоге /etc/fail2ban. Там есть файл со значениями по умолчанию, который называется jail.conf. Поскольку этот файл может быть перезаписан обновлениями пакета, мы не должны использовать его. Вместо этого мы напишем новый файл с именем jail.local. Любые значения, определенные в jail.local, переопределяют значения в jail.conf.

jail.conf содержит раздел [DEFAULT], за которым следуют разделы для отдельных служб. jail.local может переопределить любое из этих значений. Кроме того, файлы в /etc/fail2ban/jail.d/ могут использоваться для переопределения настроек в обоих этих файлах. Файлы применяются в следующем порядке:

    /etc/fail2ban/jail.conf
    /etc/fail2ban/jail.d/*.conf, alphabetically
    /etc/fail2ban/jail.local
    /etc/fail2ban/jail.d/*.local, alphabetically

Проверим и добавим настройки по умолчанию в файл /etc/fail2ban/jail.local

[DEFAULT]

# Ban hosts for one hour:
bantime = 3600

# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

[sshd]
enabled = true

Перезапустим службу

service fail2ban restart

Проверим состояние командой

fail2ban-client status

3. Wordpress фильтр

Добавим фильтр и правило (jail) блокировки ip адресов которые обратились по адресу /wp-login.php (админка wordpress) более 10 раз с одного ip адреса в течение 10 минут.

3.1 Фильтр

/etc/fail2ban/filter.d/wordpress.conf

[Definition]

failregex = ^.* "POST .*/wp-login.php([/\?#\\].*)? HTTP/.*" 200
ignoreregex =

По данному фильтру мы будем искать ip адреса.

3.2 Добавим jail

/etc/fail2ban/jail.d/wordpress.conf

[wordpress]

action = iptables-multiport[name="wordpress", port="http,https"]
filter = admin-wordpress
logpath = /var/www/vhosts/system/*/logs/*access*log
/var/log/httpd/*access_log

Если Вы используете другой веб сервер, Вам необходимо изменить фильтр согласно тому как он формируем лог и указать верный путь до файла журнала (access_log). После внесения изменений необходимо перезапустить службу.





Нет комментариев