OpenSOC是思科公司于2014年夏天推出的开源安全大数据分析框架,专注于网络数据包和事件的大数据分析,可实时检测网络中的异常。从时间节点上比较,当时的OSSIM已10岁,当OSSIM发展到5.5版本并推出企业版OSSIM时,它已身居魔力象限的第三象限。而思科的OpenSOC刚刚起步,目前尚无成功落地的项目。

同样都是依靠开源软件组成SOC平台,OpenSOC在存储上采用Hadoop,实时索引采用ElasticSearch组件,在线实时分析使用了Storm技术。图1-11所示为OpenSOC的组成结构。

 

soc的主要架构 典型soc架构图_数据

图1-11 OpenSOC的组成结构

在图1-11中,从左至右分别代表平台由下到上的层次,它们分别是数据源层、数据收集层、消息系统层、实时处理层、存储层、分析处理层,各层功能如下所示。

       数据源层:该层主要设定大数据分析平台中的数据来源。它由两个部分组成,一是通过网络路由、网关等设备获取的数据包,将这些数据流量以副本形式传递给上层的PCAP模块;另一个是通过部署传感器,从系统日志、HTTP流量、文件系统和其他用户/系统行为中获取到的日志信息,这些信息传递给上层的Flume模块。

       数据收集层:该层主要收集初步获取的大量数据。一方面利用PCAP机制收集数据包,另一方面利用Flume框架收集大量的日志信息。Flume可将数据从一个地方实时传输到另一个地方,可以对数据进行二次加工(例如筛选、标准化处理等),目的是将这些零散的数据发送到统一的数据中心。

       消息系统层:数据收集层将捕获的数据包和海量日志提交给消息系统层,该层主要将这些数据包和日志封装为消息队列,以便于上层Storm的实时处理。这里主要使用的软件是开源的Kafka,主要用于进行日志处理的分布式消息队列。

       实时处理层:下层处理形成的消息队列交由该层实时处理,OpenSOC使用了Storm框架。Storm是一个开源的在线流分析系统,可以方便地在一个集群中编写、扩展复杂的实时计算,其用于实时处理,就好比Hadoop用于批处理。

       存储层:该层的主要任务是有效、合理地将前面获得的数据存储到文件系统中。对于结构化数据,OpenSOC使用Hive来实现;对于非结构化数据,则使用ElasticSearch来实现。Hive是基于Hadoop的数据仓库,其特点是可以将SQL语句与Hadoop架构无缝对接,将SQL语句转换成MapReduce(分布式计算模型)任务,从而在Hadoop集群上进行大数据的存储、查询与分析。

       分析处理层:完成数据的收集、存储、查询之后,接下来就是数据的分析工作。这里的分析工具可以由Python来编写,这里使用的是PowerPivot(PP)和Tableau(TB)两类分析工具。其中PowerPivot工具是一组应用程序和服务,能以极高的性能处理大型数据集;而Tableau则是一款企业智能化软件,主要用于分析数据。

OpenSOC和OSSIM之间的区别如下所示。

       架构分析:OSSIM的架构更简洁,适合处理中小规模的数据量,而OpenSOC借助于Flume+Strom+ElasticSearch的结构更适合大规模数据的采集分析。

       OpenSOC采用Kafka作为缓冲区,为数据的生产方和消费方提供了一个缓冲区域,而OSSIM采用了Redis+RabbitMQ的方式。两者的目的都是实现多队列并行处理,有着异曲同工之处。

       在存储数据方面,OpenSOC采用Hive技术,而OSSIM并不是存储所有采集的数据,而是只存储经过分析和加工后的事件和报警日志。

       在数据可视化方面,OpenSOC采用了ElasticSearch方式对数据进行索引,再利用Kibana通过API读取数据,最后以Web方式来呈现。OSSIM使用Python+Perl对数据进行深度分析,消耗的资源比较大。