В наше время многие сталкиваются с проблемой когда в лучшем случае вы удивили что в админку вашего блога питаются перебирать пароли, но и в худшем когда админка явно сломана, но увы это уже поздно.
Предупредим взлом и обезопасим сайт от взлома хоть каким бы не жестоким методом это есть.
Для нашей защиты мы будем использовать:
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 |
На этом все. Всем успехов и больше безопасности вашим сайтам.