Auto-banimento de IP de invasores “wp-login.php”

1

Quando olho para o meu log do Apache other_vhosts_access.log , vejo muitas tentativas de um IP diferente por mês assim:

www.example.com:80 91.200.x.x - - [25/Jun/2017:17:20:19 +0200] "POST /wp-login.php HTTP/1.1" 
www.example.com:80 91.200.x.x - - [25/Jun/2017:17:20:19 +0200] "POST /wp-login.php HTTP/1.1" 
www.example.com:80 91.200.x.x - - [25/Jun/2017:17:20:20 +0200] "POST /wp-login.php HTTP/1.1" 

Parece ser um ataque de força bruta.

Existe uma maneira simples de proibir automaticamente (sem link com Autobahn ) estes atacantes?

  • Se eu fizer isso com um plugin do Wordpress, o tráfego ainda irá para o PHP, desperdiçando recursos, etc.

  • Se eu fizer isso no nível do Apache, ele certamente ainda desperdiçará recursos

  • Devo fazê-lo no nível mais baixo possível? ou seja, tabelas IP?

Existe uma ferramenta que procura esses invasores em other_vhosts_access.log e os bane automaticamente em iptables ?

    
por Basj 01.07.2017 / 17:55

1 resposta

1

Eu finalmente encontrei uma solução (vou ver se funciona em alguns dias): fail2ban.

Vamos colocar isso em /etc/fail2ban/jail.conf :

#
# HTTP servers
#

[apache-wp-login]
enabled = true
port    = http,https
filter  = apache-wp-login
logpath = /var/log/apache2/other*.log
maxretry = 6
findtime = 36000
bantime = 36000

Em seguida, isso em /etc/fail2ban/filter.d/apache-wp-login.conf :

[Definition]
failregex = .*:(80|443) <HOST> .*/wp-login.php.*
ignoreregex =

Então vamos começar o serviço e ver as proibições:

service fail2ban start
tail -f /var/log/fail2ban.log

Muito útil: isso pode ajudar a depurar a regex de filtragem e ver se funciona ou não:

fail2ban-regex /var/log/apache2/other_vhosts_access.log /etc/fail2ban/filter.d/apache-wp-login.conf
    
por 01.07.2017 / 18:06