Первым делом установим fail2ban.
sudo apt-get install fail2ban
Создаем конфигурационный файл с регулярным выражением, для определения попыток попасть в админку WordPress.
sudo nano /etc/fail2ban/filter.d/apache-wp-login.conf
Вставляем:
# FAIL2BAN CONFIGURATION FILE # # [Definition] # OPTION: FAILREGEX # NOTES.: REGEXP TO CATCH APACHE DICTIONARY ATTACKS ON WORDPRESS WP-LOGIN # VALUES: TEXT # failregex = ^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,6}:[0-9]{1,5} <HOST>\ \-.*\"POST\ \/wp-login.php HTTP\/1\..*\" # OPTION: IGNOREREGEX # NOTES.: REGEX TO IGNORE. IF THIS REGEX MATCHES, THE LINE IS IGNORED.
Но fail2ban ничего не знает об этом конфиге, исправляем ситуацию.
Открываем конфиг jail.conf
sudo nano /etc/fail2ban/jail.conf
Находим строки:
# # JAILS #
и после втсавляем
[apache-wp-login] enabled = true port = http,https filter = apache-wp-login logpath = /var/log/apache*/other_vhosts_access.log maxretry = 2 enabled — Активировать/Деактивировать правило port — фильтруемый протокол (80/443) filter — имя конфигурационного файла созданого ранее без окончания(.conf) logpath — путь к лог файлу maxretry — максимальное количество попыток
Сохраняем и перезагружаем fail2ban
sudo /etc/init.d/fail2ban restart
Проверка забаненых ip.
iptables -L -n
Успехов.