如何在Apache、Nginx和Cloudflare中阻止.git文件?
不要暴露.git文件夹,该文件夹可能包含敏感信息。
当您通过Git初始化和部署应用程序时,它会创建一个包含必要信息的.git文件夹。如果通过互联网的web服务器或前端可以访问.git文件夹,则可能会泄漏敏感数据。
更糟糕的是,如果您在某些配置文件中存储了凭据。
使用这些链接_0>在GitHub存储库中查找凭据。
如果您不确定是否在Web应用程序的某个位置有.git文件夹,您可以使用诸如链接_1、链接_2或其他链接_3的安全漏洞扫描器。
Gitjacker不仅可以检测.git目录,还可以下载整个目录。
有多种方法可以处理此问题。
您可以选择不在服务器上保留.git文件夹或阻止任何请求。阻止请求非常简单,具体取决于您使用的Web服务器。
Nginx
如果您使用Nginx,可以在nginx.conf文件中添加以下位置指令
location ~ /.git {
deny all;
}
上述指令将指示Nginx在包含.git的请求时返回403错误。
或者,如果您不希望攻击者认为服务器上有.git,则可以返回404。
location ~ /.git {
return 404;
}
这将返回以下链接_4> 404。
无论您选择哪种方式,在更改配置后不要忘记重新启动Nginx。
service nginx restart
Apache HTTP
让我们看看如何在Apache Web服务器中阻止.git。您可以使用RedirectMatch或DirectoryMatch实现此目的。
使用RedirectMatch可能是最简单的方法。您只需要在httpd.conf或.htaccess文件中添加以下内容。
RedirectMatch 404 /.git
上述内容将在有人访问.git时返回404,以下内容将显示403。
RedirectMatch 403 /.git
接下来,尝试使用DirectoryMatch规则,将以下内容添加到httpd.conf文件中。
Deny from all
重新启动Apache,访问包含.git的URL,将显示403 Forbidden错误。
Cloudflare
这是我最喜欢的方式。在边缘阻止请求!
但是,正如您可以猜到的那样,只有在您的网站通过链接_5>网络加速时,这才会起作用。
- 登录到Cloudflare
- 转到防火墙选项卡 >> 防火墙规则 >> 创建防火墙规则
- 给规则命名-阻止GIT
- 选择字段-URI
- 运算符-包含
- 值-.git
- 选择操作-阻止并保存
规则在所有Cloudflare数据中心传播大约需要1分钟。完成后,Cloudflare将完成其他操作。
需要注意的一件事是,当实施Cloudflare防火墙规则来阻止时,您必须确保链接_6>没有暴露。否则,攻击者可以链接_7>访问.git文件。
结论
希望以上内容能帮助您减轻暴露.git目录的风险。