我一直是对我拥有的两个 WordPress 网站进行暴力攻击的目标。攻击者正在使用旧的 XML-RPC 来放大暴力密码攻击。幸运的是,我们的密码生成得非常好,所以我非常怀疑他永远不会去任何地方。
我一直在使用 iptables 来阻止他再次弹出的请求(总是来自同一个虚拟云提供商),但我更愿意修改服务器,以便每当他的 IP 地址请求任何页面时,他都会收到一个响应告诉他获得生命。大多数请求都是 POST,所以理想情况下,我只想修改响应标头以包含诸如“下次祝你好运!”之类的内容。或同样令人满意的东西。
这可能吗?我远不是 Apache 的专家,所以我不确定实现这会有多困难。但即使需要我花费数小时,满足感也将是无价的。
作为参考,我正在运行 Ubuntu 16.04.2 LTS,Apache 2.4.18 托管 Wordpress 4.7.3。
我必须承认,正则表达式一直是我的弱点。我从来没有坐下来花足够的时间学习它们以有效地使用它们。但是,我真的不知道为什么这不匹配。我正在尝试制作一个自定义的 failregex 来阻止人们试图利用任何 xmlrpc.php 错误(并且他们一直在尝试这样做)。
我在 Ubuntu 16.04.2 上使用 fail2ban v0.9.3,Apache 2.4.18。
这是我的正则表达式:
<HOST> - - \[\d{2}/\w{3}/\d{4}:\d{2}:\d{2}:\d{2} +\d{4}\] "POST /xmlrpc.php HTTP/1.0" 200
这是一个不匹配的示例行(IP 替换为 0):
0.0.0.0 - - [06/Apr/2017:07:45:42 +0000] "POST /xmlrpc.php HTTP/1.0" 200 752 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"
我无法弄清楚为什么它不匹配。据我所知,这应该是完全匹配的。任何人都可以透露一些信息吗?
此外,让 + 和 - 符号的时区偏移量匹配会很好……我认为HTTP/1.0
用HTTP/1.\d{1}
它替换应该匹配 1.0 和 1.1,对吗?
提前致谢!
编辑:在使用fail2ban-regex 在命令行上玩弄之后,我发现它的正则表达式<HOST> - - \[
将匹配所有行。但是,第二个我将其更改为<HOST> - - \[\d{2}
它根本不匹配任何行。这似乎没有道理!
编辑 2:嗯,与此同时,我正在使用<HOST> - - \[.* "POST /(xmlrpc|wp-login).php HTTP/1.\d" 200
并且与我想要的行匹配。但是,我仍然很想知道为什么我原来的不匹配,因为我宁愿使用更具体的正则表达式而不是我现在使用的广泛的正则表达式。