当前位置: 欣欣网 > 码农

15.6k star! 推荐一款超强的业务风控系统

2024-06-19码农

一、项目介绍

TH-Nebula 通过解析企业的网络流量 (包括 http https ) 来还原企业内部的各种事件, 从而进行深层次的分析来发现各种风险 ,并快速的实施攻防对抗,星云采用旁路流量的方式进行数据采集,无需在业务逻辑上做数据埋点或侵入,同时支持本地私有化部署和 Docker 镜像云端部署;出于数据隐私和敏感性的考虑,我们不做任何数据的上传;

另外考虑到部分使用者风控经验不足,星云会提供基础的风控策略模板,使用者可以结合业务实际情况,灵活的进行配置和调整。考虑到攻防对抗的时效性,策略调整之后实时生效,无需重新编译和上线。

二、项目特点

1.轻量级部署

星云采用完全旁路流量解析的方式来采集业务信息,企业只需要与运维配合即可完成部署。值得一提的是,即使在业务增加、变化的情况下企业都可快速地获取到网络访问、登陆、注册、下单、参与活动等业务行为。

2.内置风险识别规则,简单易用

在「星云」上内置了大量业务场景下的攻防规则,并采用可视化规则编辑的方式,企业可以快速编辑策略并进行实际环境下的测试。

3.无埋点,无敏感数据泄漏风险

星云不需要企业研发埋点即可实现访问、登陆、注册、信息修改等的数据实时采集,无敏感数据外泄风险,更好的保护企业数据隐私。

三、技术选型

前端环境

n ode.js: 11.x

npm: 6.x

webpack: 4.x

后端环境

java: 1.8

maven: 3.x

python: 2.7.x

四、架构设计

TH-Nebula 是一个互联网风控分析和检测平台, 可以对包括流量攻击, 账户攻击, 支付攻击在内的多种业务风险场景进行细致的分析, 找出威胁流量, 帮助用户减少损失.

与常见的一些简易安全防护软件不同, TH-Nebula 本质上应该是一套完整且独立的数据分析平台, 逻辑上, 它需要提供以下几个方面的功能:

  • 数据采集与集成平台. 负责对接客户现有系统不同形式存在的各种原始数据, 包括流量, 实时日志, 日志文件等.

  • 数据规整化与业务日志提取系统. TH-Nebula 对原始数据进行清洗和标准转换, 并根据配置抽象出各种标准的业务日志, 方便后续进一步的分析.

  • 数据持久化功能.对于进入系统的日志, 进行持久化, 方便后续的离线计算以及攻击溯源操作.

  • 海量数据实时计算引擎. 对进入系统的海量数据, 进行大规模实时并行计算, 得到关于用户的实时统计特征

  • 海量数据离线批处理计算引擎. 对进入系统的海量数据, 间隔性地进行离线批处理计算, 得到关于用户的固定特征

  • 高性能策略引擎. 利用实时计算和离线计算的数据, 对所有用户访问进行策略判别, 识别出风险流量, 方便后续进一步处理

  • 风险事件和黑白名单管理功能. 对于系统中识别出的风险事件, 以及与之相关的黑白名单进行管理和查询

  • 数据可视化和风险数据自助式分析系统. 方便对原始数据进行 review , 对风险情况进行溯源

  • 数据导出和 API 集成. 用于将黑白名单和风险事件导出, 集成到客户系统; 同时可以进一步将系统内部数据导出.

  • 系统配置和管理功能. 复杂的系统需要配合相应的管理工具.

  • 系统粗略的架构设计如下图所示:

    整个 TH-Nebula 系统, 功能比较完整和复杂, 无法用单个进程或软件的形态来提供这样一整套平台.在物理实现上, 将由多个独立的组件组成, 纯业务模块包括:

  • 数据采集和转化模块. 数据采集和规整化由单个物理模块提供.

  • 数据实时计算模块和规则引擎. 提供了系统中实时处理的功能, 包括实时计算, 准实时计算, 策略引擎等.为了简化, 目前统一在实时模块.

  • 数据离线计算模块. 离线计算负责离线数据的统计计算, 数据呈现以及数据持久化等.

  • 系统配置和管理模块. 配置和所有的数据管理都由单独的web应用负责.

  • TH-Nebula 前端展现模块. TH-Nebula 的前端采用 JS + API 的模式, 大量的数据展现功能由前端模块来提供支撑.

  • 当然, 系统还用到了许多底层的平台支撑:

  • 系统缓存 Redis . Redis 提供了缓存数据的支撑, 主要包括消息中间件和监控数据的存储.

  • 文件系统. 通过文件数据库, 可以提供海量数据的存储和查询.

  • 数据存储 MySQL . MySQL 提供了所有具备强持久化需求的数据落地和读取.

  • 用户画像辅助 Key-Value 数据库 AeroSpike . AeroSpike 是一个 Key-Value 数据库, 为用户画像数据的高性能存取提供了支撑.

  • 其他. 包括负载均衡 Nginx , 离线管理脚本, 进程监控平台, 定制内核模块等多个其他功能.

  • 下图描述了系统的物理模块组成, 以及逻辑模块在其中的划分

    五、功能

    总览:观察网站流量和风险事件的情况

    风险名单管理:由你设置的某个具体的策略出发而产生,风险名单管理页面展示了风险名单的列别,通过这个页面可以进行风险名单的查询、删除和人工添加等操作。

    风险事件管理:风险事件由一组关联风险名单的基础事件组成,风险事件可以对不同的攻击进行整理成组,以便分析人员快速的针对一组风险事件进行查看。

    风险分析:风险分析页面提供了IP、USER、PAGE、DEVICE ID四个维度的分析视角、允许分析人员通过不同的维度去查看某个IP、用户、设备或页面的细节以还原风险事件的整个流程。

    日志查询:通过自定义的方式去搜索历史日志中的数据

    策略管理:提供了可视化策略编辑功能,允许用户通过界面方式创建或编辑策略,并且可通过对策略状态的编辑快速的测试策略的有效程度,以及生产策略的下限。

    六、场景介绍

    对于公司业务细分到不同的场景, 再到定制策略, 以及 TH-Nebula 脚本可能会有些模糊, 对于一开始认识 TH-Nebula 系统可能会对此概念模糊不清, 所以接下来对于不同的场景分别制定策略, 来深入了解策略的定制, 以及 TH-Nebula 脚本的定制.

    IP撞库登陆

    假设同一个 IP , 不断的用不同的账号或者密码一直访问登陆页面, 那么设定次数之后就可以捕获到这个 IP , 之后对此 IP 进行弹验证码, 封 IP 等处理.

    策略的制定

    首先对公司的登陆接口在新建策略的时候, 以 [事件-动态资源请求] 选定属性 [ page ] , 也就是 URL 中包含了 login 字段的, 即认定为登陆接口, 此处要根据公司的登陆接口做相应的改变, 每家公司业务的登陆接口不尽相同. 在 ①处填公司的登陆接口

    接下来选择点击图片中②所全选的+号, 选择 [ 条件判断 - 条件统计 - 动态资源请求 ]

    然后编辑参数, 选择同一个 IP 的访问次数, 这样才可以达到计算的效果

    以上是实时计算5分钟内统计同一 IP 访问登陆接口则对次 IP 进行判定为审核或者是黑名单, 通过 TH-Nebula 查询接口可以查询到黑名单, 审核名单, 可以对其做进一步处理.

    IP大量请求却不加载静态资源

    假设一个 IP 大量的请求却不加载静态资源, 那么可以认定此 IP 是通过机器程序登陆的操作的, 只对接口访问, 这种 IP 存在一定的风险.

    策略的制定

    选择新建策略, 选择 [ 事件 - 动态资源请求 ] 选定属性 c_ip , 包含 [ . ] , 这样表达的意思是所有的 IP 都会被捕获到, 接下来通过条件筛选出同一个 IP 大量请求却不加载静态资源的 IP .

    选择 [ 条件判断 - 条件统计 - IP请求量5M ] 然后编辑参数设定为 [ c_ip ] 大于50, 表示在5分钟内某个相同的 IP 访问50次网站 接下来选择 [ 条件判断 - 条件统计 - 静态资源请求量 ] 编辑参数设定 [ c_ip ] 等于 [0]

    这样设定就可以判断出同一个 IP 在5分钟内大量请求接口却不加载静态资源, 进行判定为审核或者是黑名单, 通过 TH-Nebula 查询接口可以查询到黑名单, 审核名单, 可以对其做进一步处理.

    IP关联多个用户

    假设一个 IP 以多个用户登陆, 那么可以认定此 IP 是通过机器程序操作多个用, 这种 IP 存在一定的风险.

    策略的制定

    选择新建策略, 选择 [ 事件 - 动态资源请求 ] 选定属性 [ c_ip ] , 包含 [ . ] , 这样表达的意思是所有的 IP 都会被捕获到, 接下来通过条件筛选出同一个 IP 关联多个用户

    随后增加条件筛选

    需要注意编辑参数

    之后增加处置措施

    以上三个例子从3个不同的业务场景说明了制定场景的方法, 希望可以从这些例子帮助到理解根据业务制定策略.

    源代码下载地址:

    https://gitee.com/threathunter/nebula.git

    看到最后,如果这个项目对你有用,一定要给我点个「 在看和赞 」。