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

Фильтр , похоже, также настроен правильно. По факту, если я запускаю wordpress со статусом fail2ban-client , я вижу, что мой 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 .

Тем не менее, я вполне могу просматривать веб-сайт и получить доступ к странице входа.

Конечно, чего-то еще не хватает, возможно, на Varnish сторона? Я не мог ничего узнать, есть идея?

Я использую CentOS 7.2.1511 , Apache / 2.4.6 и Varnish 4.0.3 ].


Если кому-то интересно, вот как я настроил WP fail2ban , чтобы он работал с Varnish :

  1. Включил плагин
  2. Скопировал файл WordPress.
      [wordpress]
    enabled = true
    порт = http, https
    фильтр = wordpress
    logpath = / var / log / secure
    
  3. В wp-config.php добавлены следующие строки:

     define ('WP_FAIL2BAN_PROXIES', 'my.ser.ver.ip');
    определить ('WP_FAIL2BAN_AUTH_LOG', LOG_AUTHPRIV);
    
  4. Добавлены следующие строки в /etc/varnish/default.vcl в блоке sub vcl_recv :

     if (req.restarts == 0) {
     if (req.http.X-Forwarded-For) {
     установите req.http.X-Forwarded-For = req.http.X-Forwarded-For + "," + client.ip;
     } else {
     установите req.http.X-Forwarded-For = client.ip;
     }
    }
    
  5. Добавлены следующие строки в /etc/varnish/default.vcl в блоке sub vcl_pipe :

     set bereq.http.connection = "close";
    возврат (труба);
    
2
задан 20 April 2016 в 17:15
1 ответ

Хорошо, нашел ответ. Мне просто нужно было добавить действие запрета в соответствующий блок jail.local . Итак, теперь это выглядит так:

[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/secure
action = iptables-allports
1
ответ дан 3 December 2019 в 12:41

Теги

Похожие вопросы