![如何使用 rewriterule 阻止攻击?](https://linux22.com/image/506134/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20rewriterule%20%E9%98%BB%E6%AD%A2%E6%94%BB%E5%87%BB%EF%BC%9F.png)
收到一堆虚假请求袭击我的服务器。
想要阻止任何包含 http:// 的请求。
例子:
domain.com/forum/function/component.php=http://bogusdomain.gov.ve/images/foo.txt
我想
RewriteRule ^(.*=http://) - [F]
可以这样做,但是似乎不起作用。
有什么建议么?
答案1
您没有提到操作系统,这也不是您所要求的(重写规则)——但它确实可以阻止攻击。
我用失败禁止阻止 Ubuntu 上的所有类型的垃圾;使用 Web 服务器日志、sshd 日志和其他日志。
一个事件 = 一个正则表达式 + 一个日志文件。
规则可以规定,当 T 时间内发生 NN 事件时,在防火墙中对该 IP 添加 X 分钟的禁令。默认值为 10 分钟……如果您不小心禁止自己,这很好。如果您不担心这一点,可以设置更长的时间。
这种方法的好处在于,您可以禁止来自该 IP 的所有流量,而不仅仅是针对 Web 服务器的流量。此外,流量不会收到“REFUSED”或“FORBIDDEN”之类的指示,而是会直接挂起,永远不会被传送或确认。
答案2
如果您担心这样的请求,那么您最好解决问题的根源,即在 PHP 等中关闭 allow_url_fopen。
至于重写规则...其他重写规则有效吗?(即引擎是否启用?)^。=http://.我猜 $ 应该匹配,不需要括号,因为你没有重复使用匹配