导读:宜信结合本身的实际状况,实现了一套集采集、分析和存储为一体的安全数据平台——流沙平台。本文重点介绍一下流沙平台的架构,相比于OpenSOC作了哪些优化及改进的地方以及流沙平台在落地过程当中的经验总结。python
OpenSOC是思科在BroCON大会上亮相了的一个安全大数据分析架构,它是一个针对网络包和流的大数据分析框架,是大数据分析与安全分析技术的结合, 可以实时的检测网络异常状况而且能够扩展不少节点,它的存储使用开源项目Hadoop,实时索引使用开源项目ElasticSearch,在线流分析使用著名的开源项目Storm。golang
宜信结合本身的实际状况,一样实现了一套集采集、分析和存储为一体的安全数据平台——流沙平台。本文重点介绍一下流沙平台的架构,相比于OpenSOC作了哪些优化及改进的地方以及流沙平台在落地过程当中的经验总结。web
整个平台架构分了多个层次,采集层、预处理层、分析层、存储层和响应层。层之间若须要,均使用kafka做为消息队列进行数据传递,保证了传输过程当中的数据可靠。docker
采集层主要用于数据采集,而后将采集的数据统一发送至kafka。采集的数据主要包括:json
流量数据——使用packetbeat进行解析安全
日志数据——文件形式的日志使用filebeat进行采集;syslog形式的数据采用rsyslog进行采集服务器
运维数据——为方便故障排查和集群性能监控,使用metricbeat采集流沙平台集群服务器的运维数据网络
在实际运营的过程当中,咱们发现packetbeat在攻击场景下存在一些缺陷,并给出了相应的解决办法,好比:架构
网页压缩会致使body乱码框架
若没有content-type字段则不会解包
位于body部分的参数会被添加进params字段中
connect请求致使的urlparse报错
不规范的url编码字段致使的urlparse报错
流沙平台的预处理程序(如下统称为“ybridge”)为宜信基于golang自主开发的一套支持分布式的预处理框架,经过编写配置便可实现自定义用户的输入输出以及数据所须要实现的功能。经过编写插件能够为每一种数据进行单独的处理操做,可以知足实际使用过程当中的各类须要。
ybridge具备如下优势:
功能灵活
性能较高
无依赖
支持冗余部署,可靠性高
支持docker/vm部署方式,易于扩展
可以将运行数据发送至metricbeat,并进行性能监控
ybridge的主要工做包括如下几点:
支持gzip解码
数据格式化
字段扩展
字段提取
敏感字段打码
日志情报化
数据加解密
删除无用数据
数据压缩
做为大数据分析平台,数据分析是核心。虽然,分析能够在kibana或者单独写程序来实现,可是这种方式须要从ES来拉取数据而后再进行分析,一方面时效性会较差,另一方面过于依赖ES集群会致使平台稳定性变差。 为此,流沙平台基于spark实现了一套分析引擎,该引擎以kafka为数据源,并将分析的结果存放在ES中。能够经过人工的方式在kibana上分析出规则,而后将该规则应用到分析引擎上。
在分析层实现的功能包括:
资产发现
攻击发现
信息泄露
内部威胁溯源
业务风控
存储层包括两个ES集群(ES_all集群和ES_out集群)和一个hbase集群。之因此使用两个ES集群,是由于二者功能不一样,避免因为一方面的缘由而致使整个集群不可用,提升平台稳定性。~ES_all集群用于存储全量的原始数据,方便人工分析和溯源ES_all集群用于存储全量的原始数据,方便人工分析和溯源ES_out集群用于存储分析后的结果数据,方便程序调用~
ES存放的是短时间的热数据,hbase存放的是长期的冷数据。
数据在hbase中以时间戳为单位,一个rowkey存储一秒钟数据。用户能够经过ybridge将hbase中某段时间内的冷数据回放至kafka,再进行后续的操做,好比分析或者溯源。
响应层用于对用户的数据进行分析处理并响应。响应层主要包括:
kibana:用于数据搜索、监控展现、攻击溯源等
监控可视化:经过图标的方式在大屏上呈现出当前最主要的风险,能够更直观的了解到企业正在面临的安全威胁。
alertAPI:经过监控发现问题以后,每每须要有一个后续动做,好比自动化响应或者告警。
调用后续动做能够有多种途径,好比:
编写程序分析并告警
watcher(收费。elastic官方的工具)
Elastalert(免费。基于python的报警框架)
后续动做则能够包括:
短信告警
邮件告警
自动拦截恶意IP
数据的二次加工并从新写入ES
jupyterhub:从ES集群中提取数据并使用python进行离线的数据分析,多人数据分析平台。
OpenSOC一样存储了流量数据和日志数据,数据采集以后先发送到kafka,而后经过storm进行格式化和字段扩充以后分别写入hive、ES和HBase,最后经过webservise或者分析工具对数据进行分析。流沙平台架构和OpenSOC基本相同,可是在上图所示的几处会有细微差别,下文将分别进行描述。
在数据采集方面,流沙平台大量使用了beats。beats为Elastic官方出品,社区活跃度比较高,性能和功能都很优秀。
网络流量使用packetbeat进行网络数据解析,日志文件采用filebeat进行采集,系统性能监控和ybridge性能监控使用的是metricbeat。beats具备如下优势:
性能较高
易于上手
与ybridge使用相同技术栈,易于功能扩展或改造
beats版本同elasticsearch同步更新
OpenSOC的实时处理部分包含了多对数据的分析、丰富、分析等内容,流沙平台按照功能将这块分为了两层,第一部分是预处理层,第二部分是分析层。预处理层采用的是自研发的ybridge程序,主要实现ETL功能,支持横向扩展,时效性和处理速度能够保证预处理层的结果能够直接存储也能够扔给kafka,进行下一次处理。分析层有一套基于spark实现的分析框架进行分析,相比于storm,spark虽然的时效性虽然没有那么高,可是spark可以更好地进行聚合分析、并且天生兼容机器学习和图计算,很是适合数据分析,而storm实现相似的功能成本较高。
OpenSOC中一份数据会分别存储到hive、hbase、ES三处,这样无疑会有巨大的存储资源的投入,考虑到hive的查询速率较慢,而数据能够经过ES直接分析或者抽取出来以后再作分析,因此流沙平台没有使用hive存储。短时间数据直接在ES里面查找,长期的数据从hbase拿出来以后再使用。这样的架构会更适用于中小型企业,在功能和资源之间取了一个平衡点。
OpenSOC在hbase中存储的是pcap文件,而流沙平台存储的是预处理格式化以后的json格式的数据,在进行数据回放的时候会更加方便并且更节省存储空间。
OpenSOC过webserver来实现数据的回放,而流沙平台经过ybridge来实现回放。
OpenSOC在实时处理层进行了数据的丰富,流沙平台除此以外还接入了威胁情报。威胁情报对于企业安全的做用愈来愈大,可以帮助企业发现潜在的安全问题
对于流沙平台来讲,一方面,将内部的告警转化为内部情报,另一方面将内部情报和外部情报结合造成宜信独有的威胁情报,并将其反哺给日志和流量,帮助企业安全分析人员更方便的进行数据分析和决策。
流沙平台最重要的是可以提供稳定可靠的数据服务,所以,平台高可用很是重要。首先,整个平台除了beats和kibana,均为冗余部署,甚至流沙平台的日志接受服务器也采用了双活部署的方式;其次,预处理程序能够随时启停,实现程序的平滑升级,用户无感知;最后,为了确保稳定性,流沙平台添加了大量监控告警,好比:
ES集群异常监控
数据丢失监控
丢包率监控
服务存活状态监控
在解析网络流量的时候,最大的问题就是丢包。首先须要作的是可以发现丢包,能够按期发送100个指定UA的数据包,而后在ES端统计接收到多少个数据包,如果丢的数量超过必定数值则告警。
至于丢包的缘由可能有不少,这里主要分析软件丢包的状况。解决方案也有不少,大的来讲有如下几个思路:
提升解析效率(好比使用pf_ring或者DPDK)
硬件分流
软件分流
谨慎选择镜像接入点,不建议接入核心数据,能够大大减小解析数据量
在选择解决方案的时候建议根据自身企业的实际状况,第一种效率最高,可是pf_ring为收费软件,而DPDK每每须要开发,都须要付出一些成本。除此以外,也能够经过硬件分流或者软件分流的方式来解决。硬件分流因为其更加简单并且可靠,比较推荐。
为了可以让这套平台落地,须要到大量的服务器,不一样服务器上各自运行不一样的程序,所以须要一套集中化的管理手段,为此,流沙平台使用了如下两个工具:
gosuv:gosuv是一个go写的分布式的supervisor框架,能够经过web页面远程管理服务器上的程序。
consul:consul则是一个分布式的微服务框架,实现了服务注册、服务发现以及统一配置管理等功能。
gosuv + consul的方式能够很方便的实现程序的集中管理,和程序状态监控。
数据是安全分析的基础,有了数据之后,威胁情报、态势感知、黑客画像、业务风控、攻击溯源、攻击识别、资产发现都变得并不是高不可攀。流沙平台结合宜信实际的场景,从效率、成本、功能三者之间综合考量,对OpenSOC进行了一些改良并落地。
经过流沙平台,安全工做人员能够将大部分精力专一于数据分析上,弥补了商业安全产品的不足,更好的帮助安全防御同窗全面的了解企业的安全状态。流沙平台不只仅是一个数据平台,更是宜信现有安全措施的重要补充。
做者:安全开发 高杨
首发:宜信安全应急响应中心