当我查看我的 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