Защита сайта на WP с помощью Fail2ban

В наше время многие сталкиваются с проблемой когда в лучшем случае вы удивили что в админку вашего блога питаются перебирать пароли, но и в худшем когда админка явно сломана, но увы это уже поздно.
Предупредим взлом и обезопасим сайт от взлома хоть каким бы не жестоким методом это есть.
Для нашей защиты мы будем использовать:
1. плагин WP fail2ban (скачать|с нашего сайта|с сайта wordpress.org)
2. Fail2ban
Ну и небольшие детали.
Под сервером у меня Centos 7.
после установки плагина в WP нужно внести настройки fail2ban:
3. создаем фильтр в директории:

1
/etc/fail2ban/filter.d

3.1

1
wordpress-hard.conf

1
2
3
4
5
6
7
8
9
10
11
12
[INCLUDES]
before = common.conf
[Definition]
_daemon = (?:wordpress|wp)
failregex = ^%(__prefix_line)sAuthentication attempt for unknown user .* from <HOST>$
            ^%(__prefix_line)sBlocked user enumeration attempt from <HOST>$
            ^%(__prefix_line)sBlocked authentication attempt for .* from <HOST>$
            ^%(__prefix_line)sPingback error .* generated from <HOST>$
            ^%(__prefix_line)sSpam comment \d+ from <HOST>$
            ^%(__prefix_line)sXML-RPC authentication attempt for unknown user .* from <HOST>$
            ^%(__prefix_line)sXML-RPC multicall authentication failure from <HOST>$
ignoreregex =

3.2

1
wordpress-soft.conf

1
2
3
4
5
6
7
[INCLUDES]
before = common.conf
[Definition]
_daemon = (?:wordpress|wp)
failregex = ^%(__prefix_line)sAuthentication failure for .* from <HOST>$
            ^%(__prefix_line)sXML-RPC authentication failure from <HOST>$
ignoreregex =

4. запишем jail name
4.1 в файл

1
jail.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
[wordpress-hard]
enabled = true
filter = wordpress-hard
logpath = <strong>/var/log/messages</strong>
maxretry = 1
port = http,https

[wordpress-soft]
enabled = true
filter = wordpress-soft
logpath = <strong>/var/log/messages</strong>
maxretry = 3
port = http,https

4.2 также jail.local повторить

1
2
3
4
5
6
7
8
9
10
11
12
[wordpress-hard]
enabled = true
filter = wordpress-hard
logpath = <strong>/var/log/messages</strong>
maxretry = 1
port = http,https
[wordpress-soft]
enabled = true
filter = wordpress-soft
logpath = <strong>/var/log/messages</strong>
maxretry = 3
port = http,https

* /var/log/messages — log файл для centos
*/var/log/auth.log — ubuntu,debian

Результат на лицо
если одной ошибки ввода неправильного пароля вам мало то желательно увеличить переменную

1
maxretry

Fail2Ban WP log
На этом все. Всем успехов и больше безопасности вашим сайтам.