Я пытаюсь настроитьfail2ban
запретить плохо WordPress
попытки входа в систему, но у меня нет особого успеха.
Я использую WP fail2ban 3.0.0, который правильно регистрирует неудачные попытки входа в систему /var/log/secure
, насколько я могу судить (если кому-то интересно, я предоставляю ниже свою конфигурацию для плагина):
Apr 19 18:21:42 droplet wordpress(website.com)[17157]: Authentication failure for admin from my.ip.add.ress
В filter
вроде тоже правильно настроен. На самом деле, если я убегу fail2ban-client status wordpress
Я вижу, что мой ip забанен:
Status for the jail: wordpress
|- Filter
| |- Currently failed: 2
| |- Total failed: 15
| `- File list: /var/log/secure
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: my.ip.add.ress
А также fail2ban-regex /var/log/secure /etc/fail2ban/filter.d/wordpress.conf
находит Failregex: 102 total
.
Тем не менее, я вполне могу просматривать веб-сайт и получать доступ к странице входа.
Конечно, чего-то еще не хватает, может быть, на стороне Varnish? Я действительно не мог узнать, есть идея?
Я бегаю CentOS 7.2.1511
, Apache/2.4.6
, и Varnish 4.0.3
.
Если кому-то интересно, вот как я настроил WP fail2ban
заставить его работать с Varnish
:
wordpress.conf
(содержится в папке плагина) в /etc/fail2ban/filters.d/
Добавлены следующие строки в /etc/fail2ban/jail.local
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/secure
Добавлены следующие строки в wp-config.php
:
define('WP_FAIL2BAN_PROXIES','my.ser.ver.ip');
define('WP_FAIL2BAN_AUTH_LOG',LOG_AUTHPRIV);
Добавлены следующие строки в /etc/varnish/default.vcl
в sub vcl_recv
блок:
if (req.restarts == 0) {
if (req.http.X-Forwarded-For) {
set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
} else {
set req.http.X-Forwarded-For = client.ip;
}
}
Добавлены следующие строки в /etc/varnish/default.vcl
в sub vcl_pipe
блок:
set bereq.http.connection = "close";
return (pipe);
Хорошо, нашел ответ. Мне просто нужно было добавить действие запрета в соответствующий jail.local
блок. Итак, теперь это выглядит так:
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/secure
action = iptables-allports