[Решено] Защита от брутфорса админки Wordpress в Docker с помощью Fail2Ban
Fail2Ban – это программная среда, предназначенная для предотвращения вторжений, защищающая серверы от атак методом перебора.
Fail2Ban работает, отслеживая файлы журналов (например, /var/log/auth.log, /var/log/apache/access.log и т. Д.) для выбранных сервисов и запускает сценарии на их основе. Чаще всего используется для блокировки выбранных IP-адресов, которые могут принадлежать хостам, которые пытаются нарушить безопасность системы.
Установка Fail2Ban была рассмотрена в одной из предыдущих статей
Для блокирования ip недоброжелателей от брутфорса админки Wordpress, развернутом в docker исполнении, Fail2Ban парсит access.log
файл.
Можно в переменной logpath
указать путь до логов контейнеров
1
2
3
...
logpath = /var/lib/docker/containers/*/*-json.log
...
Я вынес этот файл из контейнера и примонтировал к каталогу с проектом.
Редактируем конфигурационный файл Fail2Ban с нашими правилами (либо дефолтный /etc/fail2ban/jail.local
, либо который мы создали в каталоге /etc/fail2ban/jail.d
)
1
2
3
4
5
6
7
8
9
10
11
$ sudo nano /etc/fail2ban/jail.d/defaults-debian.conf
...
[wp-login]
enabled = true
port = http,https
filter = wp-login
chain = DOCKER-USER
logpath = /opt/itdraft.ru/logs/access.log
bantime = 604800
findtime = 7200
maxretry = 3
Основное отличие от wordpress не в docker исполнении - наличии строки:
1
2
3
...
chain = DOCKER-USER
...
Создаем фильтр под wordpress
1
2
3
4
$ sudo nano /etc/fail2ban/filter.d/wp-login.conf
[Definition]
failregex = <HOST>.*POST.*(wp-login.php|xmlrpc.php).* 200
ignoreregex =
Перезапускам Fail2Ban
1
$ sudo systemctl restart fail2ban
Проверить работу фильтра
1
2
3
$ sudo fail2ban-client status wp-login
$ sudo iptables -L -v -n
$ sudo less /var/log/fail2ban.log