Github Monitor - Github信息泄漏監控系統開源啦! 2018-12-19 #Github-Monitor #Github監控 #安全開發
GITHUB MONITOR 是vipkid安全研發團隊打造的用于監控Github代碼倉庫的系統。通過該系統可以及時發現企業內部代碼泄露、從而降低由于代碼泄露導致的一系列安全風險。用戶僅需通過簡單的任務配置,即可在分鐘級發現代碼泄露的情況。項目后端使用 django-rest-framework 開發,前端使用 react 和 antd-pro 開發。
系統特點
- 分鐘級監控
- 簡單且靈活的任務配置
- 郵件提醒
- github token管理
- 支持docker一鍵部署
- 運行十分穩定
安裝指南
首先將代碼clone到本地:
git clone https://github.com/VKSRC/Github-Monitor.git
1. docker 部署
我們推薦使用Docker
進行部署, 相對于源碼部署更為簡單和快速。
部署前請務必先安裝Docker
及docker-compose
。
修改配置文件
首先復制根目錄的.env.docker
并重命名為.env
,修改其中的Email Settings
和initial Administrator
配置。這兩個配置分別控制郵件提醒,以及初始管理帳號密碼。
注意: 如果需要訪問的地址不是127.0.0.1
或localhost
, 需要修改ALLOWED_HOST
參數,將訪問地址加到里面, 如: ALLOWED_HOSTS="127.0.0.1,localhost,github.sec.vipkid.com.cn"
一鍵啟動
docker-compose up -d
訪問http://127.0.0.1:8001
即可看到頁面。
修改啟動端口
如果想修改啟動端口,可以修改docker-compose.yaml
文件中web
容器的ports
。
默認為8001:80
,比如要修改為8080
端口可改為8080:80
。
2. 源碼部署:
項目運行依賴 redis, 請在運行服務前啟動redis-server
首先將.env.sample
復制一份重命名為.env
,并按照自己的要求修改配置:
# Django Settings
DEBUG="True" # Django后臺是否以debug模式運行, 可選True/False
ALLOWED_HOSTS="127.0.0.1,localhost" # 配置Django Allowed_Hosts
# Database Settings
# DATABASE choice is mysql or sqlite
DATABASE="sqlite" # 數據庫類型, 可選sqlite或mysql
DB_NAME="github" # 數據庫名稱
DB_HOST="127.0.0.1" # mysql host
DB_PORT="3306" # mysql port
DB_USER="root" # mysql用戶名
DB_PASSWORD="vipkid@2018" # mysql密碼
# Email Settings
# If you do not fill it in, it is None/False
EMAIL_HOST="smtp.example.com" # smtp host
EMAIL_PORT="25" # smtp port
FROM_EMAIL="secuirty@example.com" # 發件人
EMAIL_HOST_USER="security@example.com" # email user, 如為匿名發送,將值設為空字符即可
EMAIL_HOST_PASSWORD="password123!@#" # email password, 如為匿名發送,將值設為空字符即可
EMAIL_USE_TLS=
EMAIL_USE_SSL=
# initial Administrator
INIT_ADMIN_USERNAME="admin" # 初始化系統用戶使用的用戶名
INIT_ADMIN_PASSWORD="password123!@#" # 初始化系統用戶使用的用戶密碼
?
- 后端代碼運行部署:
測試環境可以使用django runserver的方式來進行部署,生產環境建議使用uwsgi + Nginx的方式部署,配置文件的示例可以參考 配置 目錄下的文件。
進入項目根目錄下的server目錄
配置virtualenv環境(建議)
在mysql里創建數據庫(如使用sqlite、請忽略此步):
> 登錄進mysql后, 執行 ```CREATE DATABASE IF NOT EXISTS github DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_bin;```
在server目錄下執行如下腳本:
安裝python依賴
pip3 install -r requirements.pip -i http://pypi.doubanio.com/simple –trusted-host pypi.doubanio.com
初始化數據庫
python3 manage.py migrate
初始化用戶賬號
python3 manage.py init_admin
啟動web后端服務:
python3 manage.py runserver 127.0.0.1:8001
啟動監控任務服務:
python3 manage.py monitor_task_service
- 前端代碼部署:
測試環境可以使用
npm run start
方式啟動, 生產環境建議先通過npm run build
生成靜態文件,然后通過nginx做轉發來做。
- 進入項目根目錄下的client目錄
- 如果后端接口地址不為
127.0.0.1:8001
, 需要修改config/config.local.js
, 將target修改為后端地址即可 - 執行:
npm install && npm run start
使用手冊
1.添加Token
Github Monitor使用Github REST API v3接口進行搜索,所以需要預先配置Token進行認證。
首先登錄Github,然后進入Token配置頁面創建Token。
隨后把Token添加到Github Monitor中。
Github API有次數限制,1分鐘最多請求30次,為了提高爬取速度,Github Monitor支持添加多個Token。
2.添加監控任務
如圖:
- 任務名稱:僅做標記使用,無實際意義。
- 關鍵詞:支持多個關鍵詞,每行一個,支持Github REST API v3搜索語法,如:
vipkid extension:java
,只搜索java后綴文件。 - 忽略帳號:不支持模糊匹配,忽略指定帳號下的倉庫,同樣支持多個帳號,換行分隔。
- 忽略倉庫:支持模糊匹配,比如:
github.io
,可忽略test.github.io
、vipkid.github.io
等倉庫。 - 郵箱:可為空,不填則不會郵件提醒。
- 爬取頁數:默認5頁,每頁50條數據。
- 爬取間隔:默認60分鐘,可根據自己需求修改。
3.確認/忽略風險
如圖:
爬蟲爬取到的數據會入庫,可以在查詢系統
中進行操作,進行處理/加白/忽略倉庫
操作。
- 處理:確認有風險,需要處理。
- 加白:確認無風險,以后不會再提醒,如果文件有修改,還是會再次提醒。
- 忽略倉庫:批量加白該倉庫下已經發現的信息。
聯系我們
關注VKSRC微信公眾號,有任何建議和意見都可以發送到公眾號/提交Issue。