1. 背景
1.1 概述
最近在加强网站的安全性,使用了华为云的漏洞扫描服务,发现存在高风险的Git存储库泄露。这是由于对于对Gitlab的系统和目录结构不够熟悉,没有做好及时的规避。
1.2 详情
以上漏洞的现象为,访问站点下的https:xxx.domain.com/.git/config
可以下载相关文件,内容如下:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = ssh://git@xxx.domain.com/root/project_xxx.git
fetch = +refs/heads/*:refs/remotes/origin/*
很明显,暴露出了你的代码仓库地址,接下来黑客可以做的就是:拉下你的代码、分析你的业务、得到你的数据库连接信息。可想而知风险非常大。
2. 处理方式
2.1 Nginx拒绝访问
从最外层的流量网关禁止访问相关文件,可以在Nginx的对应server下配置:
# 避免暴露 .git 目录
location ~ /.git/ {
deny all;
}
2.2 Jenkins发布过滤
在Jenkins拉完代码之后会进行编译,之后的部署只需要编译后的文件(tar或者dist目录下的静态资源文件)。对于使用rsync命令推送的代码,可以使用--exclude=.git
排除掉。
rsync -vauP -e --exclude=.git 'ssh -p 22' /root/.jenkins/workspace/project_xxx/* root@192.168.1.191:/opt/openresty/nginx/html/project_xxx
3. 总结
安全无小事,要了解各个工具的运行机制,避免出现暴露出核心的代码文件。另外还可以通过公有云平台的漏洞检查工具,定期进行审查,防患于未然。