开源代码监控--码小六(安装使用教程)

写在前面

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

工具介绍

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

安装部署

码小六支持 Docker 部署与源码部署,在这里我选择使用docker部署。

Docker 镜像不含 MySQL 实例,请安装 MySQL、创建数据库并授权。

我使用的是华为的云耀云,centos7.6系统,需要先自己安装下mysql。

安装MySQL

1).在/usr/local/目录下(看个人情况)新建文件夹mysql用来存放下载好的MySQL Yum Repository(mkdir mysql);

2).从https://dev.mysql.com/downloads/repo/yum/下载MySQL Yum Repository(选择所使用的linux发行版对应的版本,这里选择Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package)。下载到本地后用命令 rz -be上传到服务器上。

3).安装MySQL Yum Repository,执行命令sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm;

[root@hecs mysql]# ls
mysql80-community-release-el7-3.noarch.rpm
[root@hecs mysql]# sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
warning: mysql80-community-release-el7-3.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql80-community-release-el7-3  ################################# [100%]
[root@hecs mysql]# 

4).选择MySQL版本,执行命令yum repolist all | grep mysql查看所有版本,执行命令yum-config-manager --disable mysql80-community禁用默认选择的版本,执行命令选择所需要的版本yum-config-manager --enable mysql57-community,最后执行yum repolist enabled | grep mysql使选择生效(如果提示命令不存在,安装yum-utils:执行命令:yum -y install yum-utils);

[root@hecs mysql]# yum repolist all | grep mysql
mysql-cluster-7.5-community/x86_64  MySQL Cluster 7.5 Community  disabled
mysql-cluster-7.5-community-source  MySQL Cluster 7.5 Community  disabled
mysql-cluster-7.6-community/x86_64  MySQL Cluster 7.6 Community  disabled
mysql-cluster-7.6-community-source  MySQL Cluster 7.6 Community  disabled
mysql-cluster-8.0-community/x86_64  MySQL Cluster 8.0 Community  disabled
mysql-cluster-8.0-community-source  MySQL Cluster 8.0 Community  disabled
mysql-connectors-community/x86_64   MySQL Connectors Community   enabled:    153
mysql-connectors-community-source   MySQL Connectors Community - disabled
mysql-tools-community/x86_64        MySQL Tools Community        enabled:    110
mysql-tools-community-source        MySQL Tools Community - Sour disabled
mysql-tools-preview/x86_64          MySQL Tools Preview          disabled
mysql-tools-preview-source          MySQL Tools Preview - Source disabled
mysql55-community/x86_64            MySQL 5.5 Community Server   disabled
mysql55-community-source            MySQL 5.5 Community Server - disabled
mysql56-community/x86_64            MySQL 5.6 Community Server   disabled
mysql56-community-source            MySQL 5.6 Community Server - disabled
mysql57-community/x86_64            MySQL 5.7 Community Server   disabled
mysql57-community-source            MySQL 5.7 Community Server - disabled
mysql80-community/x86_64            MySQL 8.0 Community Server   enabled:    177
mysql80-community-source            MySQL 8.0 Community Server - disabled
[root@hecs  mysql]# yum-config-manager --disable mysql80-community
Loaded plugins: fastestmirror
================================================================== repo: mysql80-community ==================================================================
...省略...

[root@hecs mysql]# yum-config-manager --enable mysql57-community
Loaded plugins: fastestmirror
================================================================== repo: mysql57-community ==================================================================
...省略...

[root@hecs  mysql]# yum repolist enabled | grep mysql
mysql-connectors-community/x86_64 MySQL Connectors Community                 153
mysql-tools-community/x86_64      MySQL Tools Community                      110
mysql57-community/x86_64          MySQL 5.7 Community Server                 424
[root@hecs mysql]# 

5).安装MySQL,执行命令yum install mysql-community-server(全程选y),安装完成!

6).开启MySQL服务:service mysqld start(对于EL7-based平台,首选命令:systemctl start mysqld.service);

7).查看MySQL状态:service mysqld status(对于EL7-based频台,首选命令:systemctl status mysqld.service);

Docker部署

# 创建镜像
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 <邮箱> <密码>

在执行命令php artisan code6:user-add <邮箱> <密码>时遇到错误:

root@544263f6a916:/var/www/html# php artisan code6:user-add xxxx.com xxxx

In Connection.php line 671:
 SQLSTATE[HY000] [1130] Host '172.17.0.2' is not allowed to connect to this MySQL server (SQL: select * from `user` where (`email` = xxxxxx.com) limi  
  t 1)     
  
In Connector.php line 70:
 SQLSTATE[HY000] [1130] Host '172.17.0.2' is not allowed to connect to this MySQL server 

这是因为你可能忘记配置mysql了,需要在mysql里自己增加一个用户,允许在172.17.0.2这个ip登录,并且记得创建code6这个数据库。

解决方法:

mysql> create user 'xxx'@'172.17.0.2' identified by 'xxxxx';
Query OK, 0 rows affected (0.00 sec)

mysql> create database code6;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| code6              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> grant all on *.* to 'xxx'@'172.17.0.2';
Query OK, 0 rows affected (0.00 sec)

将在这里创建的用户名密码填入上面的

-e MYSQL_USERNAME=xxx \
-e MYSQL_PASSWORD=xxxxx \

做完以上的工作就安装完成了,此时便可以通过 http://<宿主机 IP>:666 访问系统。

设置令牌

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

如何申请令牌?

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

直达地址:

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

开源代码监控--码小六(安装使用教程)_第1张图片

其他说明

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

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

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

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

开始使用

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

关键字的选择

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

扫描结果存储

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

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

2、一个文件只记录一次

3、一个仓库只记录一次

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

扫描结果

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

未审:未审核的记录

误报:已确认正常的记录

异常:已确认异常的记录

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

结果处理

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

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

参考文章:https://mp.weixin.qq.com/s/7rBDZt3iBPzRrXpsZeahtg

你可能感兴趣的:(工具使用)