Задача: блокировка повторяющихся запросов на авторизацию в wordpress на уровне iptables.
Ubuntu 18.04
Интересуют запросы вида:
POST /wp-login.php
POST /xmlrpc.php
В файл jail.local
добавляем
[wp-login] port = http,https action = iptables-multiport[name=WP, port="http,https", protocol=tcp] filter = wp-login logpath = /var/log/apache2/site.local-access.log maxretry = 3
Создаём файл /etc/fail2ban/filter.d/wp-login.conf
[Definition] failregex = ^<HOST> .*POST.*(wp-login\.php|xmlrpc\.php).* # для логов формата vhost (с указанием хоста в начале строки лога) # например: "site.local:80 1.2.3.4 ......" #failregex = ^[^\s]+ <HOST> .*POST.*(wp-login\.php|xmlrpc\.php).*
В файл /etc/fail2ban/jail.d/defaults-debian.conf
добавляем
[wp-login] enabled = true
Проверяем работу фильтра:
fail2ban-regex /var/log/apache2/site.local-access.log /etc/fail2ban/filter.d/wp-login.conf
# fail2ban-regex /var/log/apache2/site.local-access.log /etc/fail2ban/filter.d/wp-login.conf Running tests ============= Use failregex filter file : wp-login, basedir: /etc/fail2ban Use log file : /var/log/apache2/site.local-access.log Use encoding : UTF-8 Results ======= Failregex: 205 total |- #) [# of hits] regular expression | 1) [205] ^[^\s]+ .*POST.*(wp-login\.php|xmlrpc\.php).* `- Ignoreregex: 0 total Date template hits: |- [# of hits] date format | [20402] Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)? `- Lines: 20402 lines, 0 ignored, 205 matched, 20197 missed [processed in 8.01 sec] Missed line(s): too many to print. Use --print-all-missed to print all 20197 lines
итого 205 найденных строк по регулярному выражению.
Чтобы увидеть все найденные строки добавляем ключ --print-all-matched
fail2ban-regex /var/log/apache2/site.local-access.log /etc/fail2ban/filter.d/wp-login.conf --print-all-matched
Перезапуск сервиса fail2ban
service fail2ban restart
Проверяем загрузку нового jail
fail2ban-client status
https://serveradmin.ru/nastroyka-fail2ban-dlya-zashhityi-wordpress/
https://wpmag.ru/2014/fail2ban-wordpress/
https://kamaok.org.ua/?p=1570
Другой вариант: https://2keep.net/fail2ban-wordpress/
https://blog.hook.sh/wp/total-wordpress-secutity/