Назад | Перейти на главную страницу

Fail2ban регистрирует правильный IP-адрес Varnish, но все еще не заблокирован

Я пытаюсь настроить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:

  1. Включил плагин
  2. Скопировано поверх файла wordpress.conf (содержится в папке плагина) в /etc/fail2ban/filters.d/
  3. Добавлены следующие строки в /etc/fail2ban/jail.local

    [wordpress]
    enabled = true
    port = http,https
    filter = wordpress
    logpath = /var/log/secure
    
  4. Добавлены следующие строки в wp-config.php:

    define('WP_FAIL2BAN_PROXIES','my.ser.ver.ip');
    define('WP_FAIL2BAN_AUTH_LOG',LOG_AUTHPRIV);
    
  5. Добавлены следующие строки в /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;
        }
    }
    
  6. Добавлены следующие строки в /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