最近我有一个 VPS。现在似乎有一个不属于我的域名,其 DNS 记录指向我的 IP。因此,我的 Apache (2.4) 日志充斥着某种 GIT 请求。格式始终为:GET /?p=foo.git;...随机内容....
我尝试使用 iptables 和 Apache 配置来阻止它,但似乎不起作用,因为它以问号开头。我的整个网站都使用 SSL。
是否可以将其从我的日志中移除?如何操作?任何帮助都将不胜感激。
答案1
鉴于请求遵循特定的格式,您可以尝试以下技巧:将 HAProxy 放在 Apache 前面(这需要一些工作)并在 HAProxy 中创建一个与所述请求匹配的 ACL(基于主机/标头/请求标准)并确保它们永远不会到达 Apache。
答案2
有几种方法可以阻止这种情况:
- mod_rewrite 可以匹配查询字符串
- mod_security 可以阻止这种情况以及其他滥用服务器的尝试
- 如果客户端使用 SNI,您可以为其他域设置单独的虚拟主机并阻止所有内容,并记录到单独的文件(或 /dev/null)
- 让请求通过,但不记录它们
为了mod_rewrite, 有一个包含大量信息的典型问题. 基本规则如下
RewriteEngine On
RewriteCond %{QUERY_STRING} ?p=foo.git.*
RewriteRule .* - [F]
这将返回403 Forbidden
给客户端。
为了mod_security请参阅文档modsecurity.org。
为了虚拟主机请参阅文档Apache 文档站点。请注意,对于不使用 SNI 的客户端,可能会出现问题,如问题所述了解 SSL 设置
为了改变日志记录,你可以使用 mod_rewrite、环境变量和自定义日志格式的组合。以下是示例:
RewriteEngine On
RewriteCond %{QUERY_STRING} ?p=foo.git.*
RewriteRule .* - [F,E=nolog:1]
CustomLog /path/to/your/access.log common env=!nolog