GShark has beem maintained for alomost two years as an open source sensitive infomation detection tool. This tool is utilized in my own company and sparetime, multi information sensi

GShark 作为一款开源的敏感信息监测工具其实差不多维护也有两年多的时间。这款产品其实笔者在自己的公司或者平常都在使用,也通过这个工具发现多多起内部的信息泄露事件以及外部的一些的信息泄露事件。其实这种类似的开源工具数不胜数,大家的核心功能其实就是监控 Github 上面的信息,但是笔者要想把这种产品做得更好一点,就要从功能性、易用性角度来做进一步拓展。最近,对 GShark 做了较大的重构,前后端都完成了比较大的重构,之前老的版本也有写过文章介绍,所以关于这个工具的起源就不多介绍了,主要对这次重构和新的架构做介绍。

架构

目前 GShark 已经是一个前后端分离的项目,之前因为前端通过后端模板直接渲染的,所以在前端的功能性以及美观性都会差很多。新的重构是基于 gin-vue-admin,技术栈是后端通过 gin 实现,前端通过 vue-elemment 来实现。

所以架构主要就分为前端和后端两个部分,而后端则分为 web 服务以及敏感信息的扫描服务。新的架构具有以下特点:

部署

之前就有想使用 GShark 的同学来和我反映,其实之前的编译就已经很简单了。但是因为有些人不太熟悉 go,所以觉得编译还是有一些问题。这一次,笔者专门写了一个脚本来发布三个操作系统下的工具包,所以直接使用即可,开箱即用,即使你不安装 go 也无所谓。

rm -rf ./releases/*
cd web
npm run build
cd ../

# build for mac
cd server
GOOS=darwin GOARCH=amd64 go build 
cd ../releases
mkdir gshark_darwin_amd64
cd gshark_darwin_amd64
mv ../../server/gshark .
cp -rf ../../server/resource .
cp ../../server/config-temp.yaml config.yaml
cd ../../
cp -rf ./web/dist ./releases/gshark_darwin_amd64
7z a -r ./releases/gshark_darwin_amd64.zip ./releases/gshark_darwin_amd64/

# build for windows
cd server
GOOS=windows GOARCH=amd64 go build
cd ../releases
mkdir gshark_windows_amd64
cd gshark_windows_amd64
mv ../../server/gshark.exe .
cp -rf ../../server/resource .
cp ../../server/config-temp.yaml config.yaml
cd ../../
cp -rf ./web/dist ./releases/gshark_windows_amd64
7z a -r ./releases/gshark_windows_amd64.zip ./releases/gshark_windows_amd64/

# build for linux
cd server
GOOS=linux GOARCH=amd64 go build -o gshark
cd ../releases
mkdir gshark_linux_amd64
cd gshark_linux_amd64
mv ../../server/gshark .
cp -rf ../../server/resource .
cp ../../server/config-temp.yaml config.yaml
cd ../../
cp -rf ./web/dist ./releases/gshark_linux_amd64
7z a -r ./releases/gshark_linux_amd64.zip ./releases/gshark_linux_amd64


rm -rf ./releases/gshark*/

这个是 build 的脚本,主要是实现跨平台的编译并且将前端文件夹打包进去,然后拿到这个安装包解压即可使用。目前 GShark 的发布应该只需要两个前提条件:

发布步骤

Step 1:

下载压缩包,然后将压缩包解压。

Step 2:

修改二进制文件的权限,以 ghsark_darwin_amd64为例,解压后修改二进制文件权限 chmod +x gshark,然后启动服务 ./gshark web

Step 3:

将前端文件发布到 nginx 的根目录下,就是将压缩包内的 dist 文件夹的文件拷贝到 nginx 根目录下,另外为了反向代理后端服务还需要修改一下 nginx 的配置,加入以下配置:

location /api/ {
proxy_set_header Host $http_host;
proxy_set_header  X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:8888;
}

这样启动完 nginx 后,整个发布过程就完成了,关于整个发布流程,笔者也在B站上发布了一个教学视频,如果感兴趣的还可以再去看看。

使用

如果其实之前使用过 GShark 的用户,对于功能的使用应该有多了解,这里着重介绍一些增加的功能。在上面的发布完成之后,第一次进入应用 http://localhost:8080,会需要初始化数据库,只要输入数据库用户名、密码以及数据库名即可。进入系统,首先是服务器运行状态的监控界面。系统主要分为几个菜单,当然有一些可能还是有冗余,后续可能会考虑删除掉,其实核心功能主要就是搜索结果、管理、以及超级管理员菜单。

server

和之前一样,如果需要开启 scan 服务,那么首先需要添加 Github 或者 Gitlab 的 token,这个可以在 token管理菜单下进行添加。另外也需要根据自己的需求在规则管理里添加规则:

rule.png

当然你也可以配置过滤规则,主要是文件夹后缀的过滤,以及选择是否搜索 fork 的代码仓库。另外值得讲的就是角色管理,通过角色管理可以创建任意角色,每种角色对应的菜单权限或者 API 权限都可以自由设置

role.gif

关于这个系统的整体介绍也可看笔者在B站发布的这个视频

总结

目前基于新的框架做的重构对于前端方面说可以说是做了非常大的改善,不管是在功能性上亦或是美观性都强了不少。另外,由于完善的权限控制,这也对于系统的控制性的加强也有帮助。同时,由于技术栈的基础,后续开发也会更加的便捷。后续的计划可能是增加更多的搜索源并且修复现在存在的一些小 BUG 吧。