Py学习  »  Git

近实时监控Github敏感信息泄露,并发送告警通知

搜云库技术团队 • 4 年前 • 948 次点击  
点击上面 蓝色字体 关注我们
技术 / 架构 / 职场 / 面试 
关注即送:4000G  架构师视频

GSIL全称 GitHub Sensitive Information Leakage

GitHub敏感信息泄露监控

近实时(15分钟内)监控GitHub敏感信息泄露,并发送告警通知。

功能:

1、根据rules.gsil规则匹配GitHub内容 2、通过邮件告警 3、设置计划任务,定期扫描

GSIL项目主页:https://github.com/FeeiCN/GSIL

安装

仅在Python3下验证过

  1. $ git clone https://github.com/FeeiCN/gsil.git

  2. $ cd gsil/

  3. $ pip install -r requirements.txt

配置

gsil/config.gsil(重命名自config.gsil.example)

告警邮箱和Github配置

  1. [mail]

  2. host : smtp.exmail.qq.com

  3. # SMTP端口(非SSL端口,但会使用TLS加密)

  4. port : 25

  5. # 多个发件人使用逗号(,)分隔

  6. mails : gsil@feei.cn

  7. from : GSIL

  8. password : your_password

  9. # 多个收件人使用逗号(,)分隔

  10. to : feei@feei.cn

  11. [github]

  12. # 扫描到的漏洞仓库是否立刻Clone到本地(~/.gsil/codes/)

  13. # 此选项用作监控其它厂商,避免因为仓库所有者发现后被删除

  14. clone: false

  15. # GitHub Token用来调用相关API,多个Token使用逗号(,)分隔

  16. # https://github.com/settings/tokens

  17. tokens : your_token

mail设置部分

mails填写自己QQ邮箱,注意,此处password并非填写QQ邮箱密码,需要填写QQ邮箱授权码,[授权码获取流程]

先进入设置-》帐户页面找到入口,按照以下流程操作。

1、点击“开启”

2、验证密保

3、获取授权码

获取授权码后填入password中。

最后需要在“to : feei@feei.cn”下一行添加“cc :feei@feei.cn”抄送邮箱,不然后面运行会报错。

GitHub设置部分

登录GitHub账号,设置tokens的页面说明文档已经给出:https://github.com/settings/tokens

点击Generate new token,出现如下页面:

填写token的描述,本人只勾选了repo下的public_repo。保存后出现如下信息:

注意保存下token,token只显示一次,后续再登录无法重新获取。填入tokens中。配置结束。

扫描规则

gsil/rules.gsil

重命名自:rules.gsil.example

规则一般选用内网独立的特征,比如蘑菇街的外网是mogujie.com,蘑菇街的内网是mogujie.org,则可以将mogujie.org作为一条规则。

其它还有类似代码头部特征、外部邮箱特征等

  1. {

  2.    # 一级分类,一般使用公司名,用作开启扫描的第一个参数(python gsil.py test)

  3.    "test" : {

  4.        # 二级分类,一般使用产品线

  5.        "mogujie": {

  6.            # 公司内部域名

  7.            "\"mogujie.org\"": {

  8.                # mode/ext默认可不填

  9.                "mode": "normal-match",

  10.                "ext": "php,java,python,go,js,properties"

  11.            },

  12.            # 公司代码特征

  13.            "copyright meili inc": {},

  14.            # 内部主机域名

  15.            "yewu1.db.mogujie.host": {},

  16.             # 外部邮箱

  17.            "mail.mogujie.com": {}

  18.        },

  19.        "meilishuo": {

  20.            "meilishuo.org": {},

  21.            "meilishuo.io": {}

  22.        }

  23.    }

  24. }

用法

启动测试

  1. $ python gsil.py test

测试token有效性

  1. $ python gsil.py --verify-tokens

  1. $ crontab -e

漏洞报告,此项任务发现漏洞后会立刻发送漏洞报告 每个小时运行一次,GitHub API接口调用频率限制可以根据token数量、规则数量来调整crontab频率实现,若觉得麻烦可简单配置多个token来实现。

crontab执行时间决定了报告的发送时效性,间隔越短报告越快但频率限制越容易触发 建议配置5个token+20条规则,每15分钟运行一次(可以配置更短,根据各自需求确定)

  1. */15 * * * * /usr/bin/python /var/app/gsil/gsil.py test > /tmp/gsil

统计报告,发送一天的扫描进展,包括运行次数、成功次数、失败次数、发现漏洞数、各域名状况、异常等等

每个小时运行一次

  1. 0 * * * * /usr/bin/python /var/app/gsil/gsil.py test > /tmp/gsil

每天晚上11点发送统计报告

  1. 0 23 * * * /usr/bin/python /var/app/gsil/gsil.py --report

扫描报告过一次的将不会重复报告,缓存记录在~/.gsil/目录

如果对本文的内容有疑问,请在下面的评论系统中留言,谢谢。

版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知我们,我们会立即删除并表示歉意。谢谢!

更多技术干货


推荐:最新200篇:技术文章整理 
如何永不迁移数据和避免热点?(揭秘篇) 
分库分表?如何做到永不迁移数据和避免热点吗? 
为什么 Redis 单线程却能支撑高并发? 
作为面试官,我是如何甄别应聘者的包装程度

点个在看再走呗!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/32271
 
948 次点击