Estou tentando configurar o fail2ban
para banir as tentativas ruins de login do WordPress
, mas não estou tendo muito sucesso.
Estou usando o WP fail2ban 3.0.0 , que registra corretamente tentativas de login inválidas em /var/log/secure
, até o momento como eu posso dizer (se alguém estiver interessado, estou fornecendo abaixo minha configuração para o plugin):
Apr 19 18:21:42 droplet wordpress(website.com)[17157]: Authentication failure for admin from my.ip.add.ress
O filter
também parece estar configurado corretamente. Na verdade, se eu executar fail2ban-client status wordpress
, posso ver meu ip sendo banido:
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
E também fail2ban-regex /var/log/secure /etc/fail2ban/filter.d/wordpress.conf
encontra Failregex: 102 total
.
Ainda assim, sou perfeitamente capaz de navegar no site e acessar a página de login.
É claro que ainda falta alguma coisa, talvez no lado do verniz? Eu não consegui descobrir, alguma ideia?
Estou executando CentOS 7.2.1511
, Apache/2.4.6
e Varnish 4.0.3
.
Caso alguém esteja interessado, aqui está como eu configurei o WP fail2ban
para fazê-lo funcionar com Varnish
:
- Ativou o plug-in
- Copiado sobre o arquivo
wordpress.conf
(contido na pasta do plug-in) em /etc/fail2ban/filters.d/
-
Adicionadas as linhas a seguir a /etc/fail2ban/jail.local
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/secure
-
Adicionadas as seguintes linhas a wp-config.php
:
define('WP_FAIL2BAN_PROXIES','my.ser.ver.ip');
define('WP_FAIL2BAN_AUTH_LOG',LOG_AUTHPRIV);
-
Adicionadas as linhas a seguir em /etc/varnish/default.vcl
no bloco 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;
}
}
-
Adicionadas as linhas a seguir em /etc/varnish/default.vcl
no bloco sub vcl_pipe
:
set bereq.http.connection = "close";
return (pipe);