我们正遭受来自如下流量的分布式拒绝服务攻击:
49.146.161.175 - - [11/Jul/2014:00:43:42 -0400] "POST / HTTP/1.1" 500 557 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
117.221.185.108 - - [11/Jul/2014:00:43:42 -0400] "POST / HTTP/1.1" 500 557 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
58.186.16.180 - - [11/Jul/2014:00:43:42 -0400] "POST / HTTP/1.1" 500 557 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"
我可以通过将其添加到根文件夹 .htaccess 文件来减少影响
<Limit POST>
Deny from all
</Limit>
问题当然是阻止使用 wp-login.php 或 /wp-admin/ 中的任何内容
我想知道是否有办法拒绝对 / 的 POST 请求或修改上述内容,以允许使用 wp-login 和 /wp-admin/ 中的任何内容
感谢您提供的任何建议。
答案1
由于设计原因,Apache 在过滤任何类型的请求方面确实非常糟糕(当它能够了解请求并丢弃它或响应错误时,它已经使用了大量资源和东西)。我做了并取得了巨大成功的是:
在 Apache 中安装 mod_rpaf 或类似程序并将其设置为接受来自本地主机的代理。
在某些端口(如 8080)上安装 haproxy,以 HTTP 模式配置它以代理到 Apache。
放置一个 ACL 来删除对 URL 的 POST 请求或任何您需要删除的内容,acls 在 haproxy 中非常强大。
设置 haproxy 将客户端 IP 放在标头中,并配置 mod_rpaf 从那里获取它。
添加NAT规则,将流量从80重定向到haproxy端口。
使用 haproxy 1.5,您也可以为 SSL 站点实现相同的功能。我真的发现 haproxy 对于像这样的第 7 层过滤非常强大。您可能也可以使用 nginx,但它有点慢,但是,您可以使用 naxsi 等工具并获得真正的 Web 应用程序防火墙。