NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

流沙:宜信安全数据平台实践

  • 2020-02-10
  • 本文字数:3680 字

    阅读完需:约 12 分钟

流沙:宜信安全数据平台实践

前言

OpenSOC 是思科在 BroCON 大会上亮相了的一个安全大数据分析架构,它是一个针对网络包和流的大数据分析框架,是大数据分析与安全分析技术的结合, 能够实时的检测网络异常情况并且可以扩展很多节点,它的存储使用开源项目 Hadoop,实时索引使用开源项目 ElasticSearch,在线流分析使用著名的开源项目 Storm。


宜信结合自己的实际情况,同样实现了一套集采集、分析和存储为一体的安全数据平台——流沙平台。本文重点介绍一下流沙平台的架构,相比于 OpenSOC 做了哪些优化及改进的地方以及流沙平台在落地过程中的经验总结。

一、流沙平台架构

1560327322348003539.png


整个平台架构分了多个层次,采集层、预处理层、分析层、存储层和响应层。层之间若需要,均使用 kafka 作为消息队列进行数据传递,保证了传输过程中的数据可靠。

1.1 采集层

采集层主要用于数据采集,然后将采集的数据统一发送至 kafka。采集的数据主要包括:


  • 流量数据——使用 packetbeat 进行解析

  • 日志数据——文件形式的日志使用 filebeat 进行采集;syslog 形式的数据采用 rsyslog 进行采集

  • 运维数据——为方便故障排查和集群性能监控,使用 metricbeat 采集流沙平台集群服务器的运维数据


在实际运营的过程中,我们发现 packetbeat 在攻击场景下存在一些缺陷,并给出了相应的解决办法,比如:


  • 网页压缩会导致 body 乱码

  • 若没有 content-type 字段则不会解包

  • 位于 body 部分的参数会被添加进 params 字段中

  • connect 请求导致的 urlparse 报错

  • 不规范的 url 编码字段导致的 urlparse 报错

1.2 预处理层

流沙平台的预处理程序(以下统称为“ybridge”)为宜信基于 golang 自主开发的一套支持分布式的预处理框架,通过编写配置即可实现自定义用户的输入输出以及数据所需要实现的功能。通过编写插件可以为每一种数据进行单独的处理操作,能够满足实际使用过程中的各种需要。


ybridge 具有以下优点:


  • 功能灵活

  • 性能较高

  • 无依赖

  • 支持冗余部署,可靠性高

  • 支持 docker/vm 部署方式,易于扩展

  • 能够将运行数据发送至 metricbeat,并进行性能监控


ybridge 的主要工作包括以下几点:


  • 支持 gzip 解码

  • 数据格式化

  • 字段扩展

  • 字段提取

  • 敏感字段打码

  • 日志情报化

  • 数据加解密

  • 删除无用数据

  • 数据压缩

1.3 分析层

作为大数据分析平台,数据分析是核心。虽然,分析可以在 kibana 或者单独写程序来实现,但是这种方式需要从 ES 来拉取数据然后再进行分析,一方面时效性会较差,另外一方面过于依赖 ES 集群会导致平台稳定性变差。 为此,流沙平台基于 spark 实现了一套分析引擎,该引擎以 kafka 为数据源,并将分析的结果存放在 ES 中。可以通过人工的方式在 kibana 上分析出规则,然后将该规则应用到分析引擎上。


在分析层实现的功能包括:


  • 资产发现

  • 攻击发现

  • 信息泄露

  • 内部威胁溯源

  • 业务风控

1.4 存储层

存储层包括两个 ES 集群(ES_all 集群和 ES_out 集群)和一个 hbase 集群。之所以使用两个 ES 集群,是因为两者功能不同,避免由于一方面的原因而导致整个集群不可用,提高平台稳定性。~ES_all 集群用于存储全量的原始数据,方便人工分析和溯源 ES_all 集群用于存储全量的原始数据,方便人工分析和溯源 ES_out 集群用于存储分析后的结果数据,方便程序调用~


ES 存放的是短期的热数据,hbase 存放的是长期的冷数据。


数据在 hbase 中以时间戳为单位,一个 rowkey 存储一秒钟数据。用户可以通过 ybridge 将 hbase 中某段时间内的冷数据回放至 kafka,再进行后续的操作,比如分析或者溯源。

1.5 响应层

响应层用于对用户的数据进行分析处理并响应。响应层主要包括:


kibana:用于数据搜索、监控展示、攻击溯源等


监控可视化:通过图标的方式在大屏上呈现出当前最主要的风险,可以更直观的了解到企业正在面临的安全威胁。


alertAPI:通过监控发现问题之后,往往需要有一个后续动作,比如自动化响应或者告警。


调用后续动作可以有多种途径,比如:


  • 编写程序分析并告警

  • watcher(收费。elastic 官方的工具)

  • Elastalert(免费。基于 python 的报警框架)


后续动作则可以包括:


  • 短信告警

  • 邮件告警

  • 自动拦截恶意 IP

  • 数据的二次加工并重新写入 ES


jupyterhub:从 ES 集群中提取数据并使用 python 进行离线的数据分析,多人数据分析平台。

二、与 OpenSOC 相比

1560327337477018731.png


OpenSOC 同样存储了流量数据和日志数据,数据采集之后先发送到 kafka,然后通过 storm 进行格式化和字段扩充之后分别写入 hive、ES 和 HBase,最后通过 webservise 或者分析工具对数据进行分析。流沙平台架构和 OpenSOC 基本相同,但是在上图所示的几处会有细微差异,下文将分别进行描述。

2.1 使用 beats 进行数据采集

在数据采集方面,流沙平台大量使用了 beats。beats 为 Elastic 官方出品,社区活跃度比较高,性能和功能都很优秀。


网络流量使用 packetbeat 进行网络数据解析,日志文件采用 filebeat 进行采集,系统性能监控和 ybridge 性能监控使用的是 metricbeat。beats 具有以下优点:


  • 性能较高

  • 易于上手

  • 与 ybridge 使用相同技术栈,易于功能扩展或改造

  • beats 版本同 elasticsearch 同步更新

2.2 处理层拆分

OpenSOC 的实时处理部分包含了多对数据的分析、丰富、分析等内容,流沙平台按照功能将这块分为了两层,第一部分是预处理层,第二部分是分析层。预处理层采用的是自研发的 ybridge 程序,主要实现 ETL 功能,支持横向扩展,时效性和处理速度可以保证预处理层的结果可以直接存储也可以扔给 kafka,进行下一次处理。分析层有一套基于 spark 实现的分析框架进行分析,相比于 storm,spark 虽然的时效性虽然没有那么高,但是 spark 能够更好地进行聚合分析、而且天生兼容机器学习和图计算,非常适合数据分析,而 storm 实现类似的功能成本较高。


1560327353669094389.png

2.3 舍弃 hive

OpenSOC 中一份数据会分别存储到 hive、hbase、ES 三处,这样无疑会有巨大的存储资源的投入,考虑到 hive 的查询速率较慢,而数据可以通过 ES 直接分析或者抽取出来之后再做分析,所以流沙平台没有使用 hive 存储。短期数据直接在 ES 里面查找,长期的数据从 hbase 拿出来之后再使用。这样的架构会更适用于中小型企业,在功能和资源之间取了一个平衡点。

2.4 数据回放方式不同

OpenSOC 在 hbase 中存储的是 pcap 文件,而流沙平台存储的是预处理格式化之后的 json 格式的数据,在进行数据回放的时候会更加方便而且更节省存储空间。


OpenSOC 过 webserver 来实现数据的回放,而流沙平台通过 ybridge 来实现回放。

2.5 与威胁情报紧密结合

OpenSOC 在实时处理层进行了数据的丰富,流沙平台除此之外还接入了威胁情报。威胁情报对于企业安全的作用越来越大,能够帮助企业发现潜在的安全问题


对于流沙平台来说,一方面,将内部的告警转化为内部情报,另外一方面将内部情报和外部情报结合形成宜信独有的威胁情报,并将其反哺给日志和流量,帮助企业安全分析人员更方便的进行数据分析和决策。

三、落地方面的经验

3.1 平台高可用

流沙平台最重要的是能够提供稳定可靠的数据服务,因此,平台高可用非常重要。首先,整个平台除了 beats 和 kibana,均为冗余部署,甚至流沙平台的日志接受服务器也采用了双活部署的方式;其次,预处理程序可以随时启停,实现程序的平滑升级,用户无感知;最后,为了确保稳定性,流沙平台添加了大量监控告警,比如:


  • ES 集群异常监控

  • 数据丢失监控

  • 丢包率监控

  • 服务存活状态监控

3.2 如何解决丢包问题

在解析网络流量的时候,最大的问题就是丢包。首先需要做的是能够发现丢包,可以定期发送 100 个指定 UA 的数据包,然后在 ES 端统计接收到多少个数据包,若是丢的数量超过一定数值则告警。


至于丢包的原因可能有很多,这里主要分析软件丢包的情况。解决方案也有很多,大的来说有以下几个思路:


  • 提高解析效率(比如使用 pf_ring 或者 DPDK)

  • 硬件分流

  • 软件分流

  • 谨慎选择镜像接入点,不建议接入核心数据,可以大大减少解析数据量


在选择解决方案的时候建议根据自身企业的实际情况,第一种效率最高,但是 pf_ring 为收费软件,而 DPDK 往往需要开发,都需要付出一些成本。除此之外,也可以通过硬件分流或者软件分流的方式来解决。硬件分流由于其更加简单而且可靠,比较推荐。

3.3 服务集中管理

为了能够让这套平台落地,需要到大量的服务器,不同服务器上各自运行不同的程序,因此需要一套集中化的管理手段,为此,流沙平台使用了以下两个工具:


  • gosuv:gosuv 是一个 go 写的分布式的 supervisor 框架,可以通过 web 页面远程管理服务器上的程序。

  • consul:consul 则是一个分布式的微服务框架,实现了服务注册、服务发现以及统一配置管理等功能。


gosuv + consul 的方式可以很方便的实现程序的集中管理,和程序状态监控。

总结

数据是安全分析的基础,有了数据以后,威胁情报、态势感知、黑客画像、业务风控、攻击溯源、攻击识别、资产发现都变得并非遥不可及。流沙平台结合宜信实际的场景,从效率、成本、功能三者之间综合考量,对 OpenSOC 进行了一些改良并落地。


通过流沙平台,安全工作人员可以将大部分精力专注于数据分析上,弥补了商业安全产品的不足,更好的帮助安全防护同学全面的了解企业的安全状态。流沙平台不仅仅是一个数据平台,更是宜信现有安全措施的重要补充。


本文转载自宜信技术学院网站。


原文链接:http://college.creditease.cn/detail/258


2020-02-10 21:05648

评论

发布
暂无评论
发现更多内容

【LeetCode】删除字符串中的所有相邻重复项Java题解

Albert

算法 LeetCode 28天写作 3月日更

这操作真香!一线互联网企业高级Android工程师面试题大全,面试真题解析

欢喜学安卓

android 程序员 面试 移动开发

2021年3月国产数据库排行榜:雏凤声清阿里三连 绝代双骄华为合璧

墨天轮

数据库 腾讯云 阿里云 华为云 TiDB

LinqToExcel.Extend 源码分析 第二波

happlyfox

28天写作 3月日更

滚雪球学 Python 之 lambda 表达式

梦想橡皮擦

28天写作 3月日更

低代码开发平台解决方案之“金融服务行业”篇

优秀

低代码

PT100热电阻温度阻值对应表

不脱发的程序猿

数据分析 28天写作 PT100 3月日更 温度传感器

中国人工智能,赏花更要寻根

脑极体

从产品经理到产品架构师

博文视点Broadview

淘宝推荐、视频搜索背后的检索技术:阿里达摩院向量检索Proxima核心能力揭秘

Proxima 技术社区

人工智能 大数据 阿里巴巴 搜索 非结构化数据

USB2.0 扩展器(一拖四)原理图、PCB,可打样使用

不脱发的程序猿

28天写作 电路设计 USB电路 USB转TTL 3月日更

能源管理可视化破冰而出,数字孪生打破传统运维僵局

一只数据鲸鱼

物联网 数据可视化 3D可视化 能源管理 智慧电厂

面试看这个就够了!最新BAT大厂面试者整理的Android面试题目模板,先收藏了

欢喜学安卓

android 程序员 面试 移动开发

【点评必看】这道 Hard 到底难在哪里?大概是难在考察的是违反“人性直觉”的内容吧 ...

宫水三叶的刷题日记

面试 LeetCode 数据结构与算法

产品经路训练营 -- 第四章作业(一)

Lucas zhou

产品经理训练

Java面试热门技术框架:Spring Security Oauth2.0认证授权

Java架构追梦

Java spring 面试 金三银四跳槽

为什么我们开发 San 项目时要用 CLI?

百度Geek说

service SLI san command

盘点 HashMap 的实现原理及面试题

老王说编程

Java hashmap HashMap底层原理

当跨国企业女职业经理人遇上创业女 CEO,两者会擦出什么样的火花?

科技新消息

如何凝聚党员力量?智慧组工系统构架组织部管理平台解决方案

源中瑞-龙先生

解决方案 党员 智慧组工

书单|互联网企业面试案头书之程序员技术篇

博文视点Broadview

腾讯五面、快手三面已拿offer(Java岗位),分享个人面经

Java架构之路

Java 程序员 架构 面试 编程语言

Kubectl Plugin 推荐(二)| 简化操作篇

郭旭东

Kubernetes kubectl kubectl plugin

Python3 * 和 ** 运算符

老王说编程

Python3

2021最新发布拼多多/字节/360/网易/面经总结

比伯

Java 编程 程序员 架构 面试

选择IDaaS解决方案的6个技巧

龙归科技

Idaas

他喵的,Google大佬的这份LeetCode刷题笔记太强了,提升算法能力必备!

Java架构之路

Java 程序员 架构 面试 编程语言

数据库周刊60丨3月国产数据库排行榜出炉;日本银行数据迁移失败致使业务宕机;阿里云RDS PG13发布;亚健康Oracle数据库故障定位;Redis最佳实践;MySQL查询优化……

墨天轮

MySQL 数据库 oracle 运维 postgre

场景demo落地 - 视频通话 2.0 ARCall

anyRTC开发者

flutter uni-app android WebRTC RTC

AI辅助宫颈癌筛查技术全球居首,守护者的力量来源是?

华为云开发者联盟

AI 华为云 目标检测 宫颈癌

谷歌大佬回国发展,吊打各大厂面试官!吐血总结大厂面试高频点及笔记解析

Java架构之路

Java 程序员 架构 面试 编程语言

流沙:宜信安全数据平台实践_大数据_安全开发 高杨_InfoQ精选文章