前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开源代码监控系统助力企业安全

开源代码监控系统助力企业安全

作者头像
信安之路
发布2020-06-23 11:36:26
9840
发布2020-06-23 11:36:26
举报
文章被收录于专栏:信安之路信安之路

众所周知,GitHub 是全球最大的代码托管平台,它在 2019 年报中提到平台已拥有超过 4000 万开发者,全年共创建了 4400 万个仓库。而在庞大的数字的背后,每天却发生着大量的安全泄露!我们需要实时监控 GitHub,防止出现重大安全事故。

0x01 监控原理

通常监控 GitHub 有两种方案:

1、爬虫

2、GitHub API:https://developer.github.com/v3/

GitHub 拥有健全的反爬虫机制,因此想通过爬虫监控 GitHub 并不容易,使用 GitHub API 是一个更加稳定且高效的选择。但是 GitHub API 对请求频率做了严格的限制,如果需要扫描很多关键字,必须申请多个令牌(personal access token)降低每个账号的请求频率。

0x02 码小六

今天介绍一款 GitHub 代码泄露监控工具 - 码小六,基于 PHP + Laravel 构建,开源免费,为企业安全保驾护航!

仓库地址:

https://github.com/4x99/code6

系统特点:

1、全可视化界面,操作简单

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

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

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

5、支持白名单模式,主动忽略白名单仓库

运行环境

Linux

PHP >= 7.3.0

Composer

MySQL >= 5.7

Apache >= 2.4

系统界面

0x03 安装部署

码小六支持 Docker 部署与源码部署,这里介绍使用 Docker 部署~

Docker 镜像不含 MySQL 实例,请安装 MySQL、创建数据库并授权(安装 MySQL 步骤略)

代码语言:javascript
复制
# 创建镜像
git clone https://github.com/4x99/code6.git
cd code6 && docker build -t code6 .
# 启动容器(宿主机映射端口 666 与 MySQL 连接参数请根据情况修改,容器启动将自动连接 MySQL 并导入数据表)
docker run -d \
-p 666:80 \
-e MYSQL_HOST=172.17.0.1 \
-e MYSQL_PORT=3306 \
-e MYSQL_DATABASE=code6 \
-e MYSQL_USERNAME=xxx \
-e MYSQL_PASSWORD=xxxxxx \
--name code6-server code6
# 进入容器创建用户
docker exec -it code6-server /bin/bash
php artisan code6:user-add <邮箱> <密码>

这样安装就完成了,此时便可以通过 http://<宿主机 IP>:666 访问系统~

0x04 设置令牌

进入系统的第一步需要到 [ 令牌配置 ] 模块配置 GitHub 令牌

如何申请令牌?

GitHub -> Settings -> Developer settings -> Personal access tokens -> Generate new token

直达地址:

https://github.com/settings/tokens/new

其他说明

1、建议至少配置 5 个令牌

2、不能用同一个 GitHub 账号创建多个令牌(这些令牌共享账号配额)

3、码小六在进行扫描任务时会自动检测更新令牌配额并进行调度

4、若令牌状态时而正常时而异常有可能是因为请求 GitHub 网络不通畅造成(可忽略)

0x05 设置任务

接下来可以到 [ 任务配置 ] 模块设置扫描任务啦!

关键字的选择

公司邮箱后缀、域名、项目标识是不错的选择,如果能在公司推行安全规范,在每个项目工程内放置唯一标识,并将此标识作为扫描关键字便能实现精准监控。

扫描结果存储

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

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

2、一个文件只记录一次

3、一个仓库只记录一次

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

0x06 审核结果

状态说明

码小六的 [ 扫描结果 ] 模块显示了匹配到关键字的扫描记录,可以将这些记录设置为以下状态:

未审:未审核的记录

误报:已确认正常的记录

异常:已确认异常的记录

解决:异常且已处理的记录

结果处理

如果通过 GitHub 个人主页、代码或 Commit 记录中能找到仓库拥有者的联系方式,可以直接联系处理。如果联系不上,则只能通过 GitHub DMCA (数字千年版权法),写邮件给 GitHub 申请下架仓库(建议各在公司内建立相关预案以便能快速处理此类问题),帮助文档:

https://help.github.com/en/github/site-policy/guide-to-submitting-a-dmca-takedown-notice)

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

本文分享自 信安之路 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 监控原理
  • 0x02 码小六
  • 0x03 安装部署
  • 0x04 设置令牌
  • 0x05 设置任务
  • 0x06 审核结果
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档