自动禁止“wp-login.php”攻击者的 IP

自动禁止“wp-login.php”攻击者的 IP

当我查看我的 Apache 日志时other_vhosts_access.log,我看到每个月来自几个不同 IP 的很多次尝试,如下所示:

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" 

这看起来像是暴力攻击。

有没有简单的方法来自动禁止(无链接高速公路这些袭击者?

  • 如果我使用 Wordpress 插件来执行此操作,流量仍会进入 PHP,从而浪费资源等等。

  • 如果我在 Apache 级别执行此操作,肯定仍会浪费资源

  • 我应该在尽可能低的层次上做这件事吗?即 IP 表?

是否有一种工具可以查找此类攻击者other_vhosts_access.log并自动禁止他们iptables

答案1

我终于找到了一个解决方案(我将在几天内看看它是否有效):fail2ban。

我们把它放进去/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

然后这个/etc/fail2ban/filter.d/apache-wp-login.conf

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

然后我们启动服务,并查看禁令:

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

非常有用:这可以帮助调试过滤正则表达式并查看它是否有效:

fail2ban-regex /var/log/apache2/other_vhosts_access.log /etc/fail2ban/filter.d/apache-wp-login.conf

相关内容