前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GitHub代码泄露监控快速实践

GitHub代码泄露监控快速实践

作者头像
FB客服
发布2021-07-02 16:56:53
1.7K0
发布2021-07-02 16:56:53
举报
文章被收录于专栏:FreeBufFreeBuf

利用开源项目,快速实现Github代码监控,及时发现员工将公司代码托管到GitHub的行为并预警,能够降低代码泄露风险。

针对GitHub代码泄露监控类开源项目有多个,Hawkeye、VKSRC开源的Github-Monitor等,在个人测试实践中码小六是使用体验友好简洁且一直在持续维护中的一款,能帮助快速进行代码监控落地实践,通过该系统可以及时发现企业内部代码泄露到github的情况,从而降低由于代码泄露导致的一系列安全风险。

系统特点

可视化界面,操作简单

支持移动端,随时随地解决问题

支持 GitHub 令牌管理及智能调度

扫描结果信息丰富,支持批量操作

任务配置灵活,可单独配置任务扫描参数

支持白名单模式,可按仓库和文件名过滤

支持邮件、钉钉、WebHook、Telegram、企业微信通知

快速搭建

码小六支持Docker部署与源码部署,推荐容器部署(请提前准备docker和Git环境)。

下载安装

代码语言:javascript
复制
kali_# sudo git clone https://github.com/4x99/code6.git//克隆代码

kali_# cd  code6

kali_# sudo docker build -t code6  .            //使用目录code6下的dockerfile进行创建容器镜像

配置数据库

开源项目容器安装方式的dockerfile中并未提供数据库自动安装,需要事先手动启动数据库容器。

代码语言:javascript
复制
kali_# sudo docker pull mysql            //拉取一个MySQL容器镜像

kali_# sudo docker run --name mysqldb -e MYSQL_ROOT_PASSWORD=root -d mysql    //启动一个数据库容器,登录密码root

kali_# sudo docker inspect mysqldb | grep IPAddress    //查看数据库容器的内部IP

"IPAddress": "172.17.0.2",

"SecondaryIPAddresses": null

kali_# mysql -h 172.17.0.2 -u root -p      //使用密码root登录

如果出现无法登录数据库情况,请依照以下方法修改密码:

代码语言:javascript
复制
kali_# sudo docker ps       //查看数据库容器ID

kali_# sudo docker exec -it 0c79e2934l0f bash   //进入容器内部

root@0c79e2934l0f:/# mysql --user=root  --password  //进入数据库

root@0c79e2934l0f:/# ALTER USER 'root' IDENTIFIED WITH  mysql_native_password  BY  'root';

然后需要在数据库内新建一个库(以“code6”为例):

root@0c79e2934l0f:/# create database code6;

root@0c79e2934l0f:/# show databases;

root@0c79e2934l0f:/# exit

kali_# mysql -h 172.17.0.2 -u root -p      //再次尝试使用密码登录数据库容器,保证正常后退出

启动

#启动容器

宿主机映射端口 666 与 MySQL 连接参数请根据情况修改,容器启动将自动连接 MySQL 并导入数据表

代码语言:javascript
复制
kali_# sudo docker run -d \

-p 666:80 \

-e MYSQL_HOST=172.17.0.2 \

-e MYSQL_PORT=3306 \

-e MYSQL_DATABASE=code6 \

-e MYSQL_USERNAME=root \

-e MYSQL_PASSWORD=root \

--name code6-server code6

#进入容器内部创建用户

代码语言:javascript
复制
kali_# sudo docker exec -it code6-server /bin/bash

root@033fe7l34l0f:/# php artisan code6:user-add <邮箱> <密码>

(例如:php artisan code6:user-add  a@a.com.cn  123465)

root@033fe7l34l0f:/# php artisan code6:user-list  //查看用户

完成后,通过 http://<宿主机 IP>:666 访问系统,使用注册的账户进行登录。

配置使用

监控系统的配置使用全部时图形化界面,操作简单方便。

添加Github令牌

首先需要在Github上生成个人账户令牌。登录GitHub,在个人中心Settings -> Developer settings -> Personal access tokens -> Generate new token,内容选项无需勾选生成令牌。

然后在代码泄漏监控系统内添加令牌。在配置中心->令牌配置,点击新增令牌(也可直接新增令牌时点击窗口去生成令牌)。

注:每个令牌每分钟请求上限30次,每分钟更新。

新添加令牌需待同步完成,状态显示“正常”。

配置监控任务

在配置中心->任务配置,首先查看关键字说明。

新增监控任务,点击新增,配置扫描关键字(支持批量添加)以及频率。

扫描结果存储

扫描结果存储入库目前支持以下选项:

1.记录文件的每个版本:即文件每次提交(包含关键字)会产生一条新的未审记录 2.一个文件只记录一次 3.一个仓库只记录一次

如果仅仅关注项目维度可选择“一个仓库只记录一次”即可,这样会大大减少需要审核的记录数目。

后台计划任务自动扫描,然后转移到扫描结果页面查看。

扫描结果操作

在扫描结果处,点击用户名、仓库名、文件路径,均可以直接新窗口打开,或在“更多”选择查看代码快照,查看代码仓库内容。

操作有设为未审、误报、异常、解决,编辑说明或者直接删除记录,亦或者直接加入白名单。

告警通知

告警通知支持多种方式,以邮件为例:

在通知配置->邮件,添加接收邮件,直接换行添加即可。

注意:

端口:SSL加密使用465,非加密使用25 密码:转发邮箱开启SMTP/POP3/IMAP之后的授权码(非邮箱密码) 接收邮箱:一行一个(不能使用QQ邮箱,会被垃圾邮件阻拦)

维护升级

直接拉取代码生成镜像。

在/code6/目录下

代码语言:javascript
复制
kali_#git pull
kali_#sudo docker build -t CLM_v2 .
kali_#sudo docker inspect code6-mysql |grep IPAddress (获取数据库容器的IP地址)
kali_#sudo docker run -d \
-p 666:80 \
-e MYSQL_HOST=172.17.0.2 \
-e MYSQL_PORT=3306 \
-e MYSQL_DATABASE=code6 \
-e MYSQL_USERNAME=root \
-e MYSQL_PASSWORD=root \
--name  code6_server_v2  CLM_v2

优劣分析

优点:

此开源项目维护更新频繁

告警方式多样化

容器部署,升级便捷

二次开发简单

缺点:

暂无对Gitee(码云)和其他平台监控

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系统特点
  • 快速搭建
    • 下载安装
      • 配置数据库
        • 启动
        • #启动容器
        • #进入容器内部创建用户
          • 配置使用
            • 添加Github令牌
            • 配置监控任务
            • 扫描结果存储
            • 扫描结果操作
            • 告警通知
            • 维护升级
            • 优劣分析
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档