docker 容器 .git 泄露问题

最近公司的安全部门在扫描系统漏洞的时候发现了我们系统的一个漏洞,通过 GitHack 进行扫描,然后download 了前端的静态文件,第一次了解这个 GitHack,有点好奇,专门找了 github 库看了一下,其实使用起来蛮简单的,官方 readme 已经详细给出了操作步骤,这里不在叙述 https://github.com/BugScanTeam/GitHack

上图是公司安全部门给出的漏洞截图

在发现上述漏洞后,立马着手排查问题,由于我们的域名是 通过公网 -> F5 -> Ng -> 服务器的。其中 公网到 F5 的VIP 是不放文件的,那么这个.git 文件只能在 Ng 和 服务器中,所以第一步就是排查 ng 机器上是否有遗漏的.git 文件。在机器上 find了一把(ng 机器 文件少),查找后没有,那么确定是在服务器上了。

由于我们的服务器是 docker 启动的,ng 直接打到 容器内部,所以定位很简单,直接进入到 容器内部去排查,发现确实有一个 .git 文件。确定好了目标,就想办法处理。

我们的发版机制是通过 Jenkins build 镜像到 target 机器上,所以问题出错 也只能在 build 环节。

在 dockerfile 文件中有如下操作:

    COPY . /usr/share/nginx/html/

这里会把 build 目录下的文件全部 copy 到 nginx 代理的目录下,所以 我们只要在这里把 .git 不要 copy 到 /usr/share/nginx/html/ 就可以了
当然这里的 dockerfile 文件可以指定文件一个一个 copy,不过太麻烦了。所以我们使用 docker的 ignore 文件来处理。
在 根目录下,新建 .dockerignore 文件。

写入以下内容:

.git

重新 发版,就ok 了。

posted @ 2020-04-13 10:38  haoming1100  阅读(365)  评论(0编辑  收藏  举报
本文作者: haoming1100 博客链接: http://www.cnblogs.com/haoming1100 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载时必须带上原文链接!