在传统的安全管理中,由于设备多厂家、采集日志单一、留存时间短等原由,安全监管人员往往无法得知各联网信息系统的安全水平。采用基于大数据的安全管理平台将有效解决该类问题,便于安全管理员及时掌握安全运行情况、安全事件及风险预警,从而使安全决策者能及时调整安全防护策略,制定针对性的安全预案,恰当地进行安全优化,及时地部署安全措施,消除网络和系统中的问题和安全隐患。
大数据总体架构设计是基于信息安全驱动下的大数据分析和挖掘,涉及数据采集、集成、存储、处理、分析、评估、预测等大数据全生命周期管理过程。而大数据相关技术应用需解决两大基本问题,第一是数据的存储问题,如何存储庞大的数据量的问题;第二是数据的计算问题,如何处理分析海量的数据。因此,从生命周期和技术应用角度出发,把大数据安全分析平台整体架构分为五大层级,分别为数据源层、数据采集层、数据存储层、数据计算引擎、数据分析层和应用层。
数据源层:数据源层为整个系统提供数据,需要尽可能多地搜集与安全相关的数据。从数据类型角度来看可分为结构化数据、半结构化数据和非结构化数据,从采集源角度来看又可分为设备类、流量类和情报类。其中设备类涉及网络安全产品、主机、中间件和系统的日志的采集,流量类主要涉及对网络流量报文的采集,情报类主要涉及外部数据,主要包括各种攻防动态、攻击样本、黑客组织等情报数据,通过关联分析和数据挖掘等技术手段,将原本碎片化的日志和数据整合,找出安全事件的联系,从而达到为大数据平台提供底层数据支撑的目的。
数据采集层:面对数据源种类繁多、格式不一的数据,需采用一套完整的数据收集框架及归一化过程对其进行清洗,去除冗余,从而统一格式,实现转化。针对来自不同数据源的安全数据可采用2种数据采集技术进行收集。一是通过sqoop或kettle等批量采集工具负责安全事件信息或网络中的行为信息从关系型数据库到hive的双向数据传输,用以发现攻击行为,并进行后续挖掘分析,发觉攻击行为起源、变化与评估对目标系统产生的威胁。二是通过flume(分布式日志收集系统)+kafka(分布式发布订阅消息系统)的分布式采集方式负责原始安全时间信息到hdfs的数据传输,实现每秒数百兆的日志数据采集与传输,发现潜伏的异常流量和潜在威胁。
数据存储层:为了实现不同分析需求的数据存储,提高分析与查询效率,采用不同存储技术混搭的存储方式。高价值结构化的数据采用mpp数据库进行存储,低价值结构化、半结构化、非结构化的数据采用hdfs+hbase/hive的方式存储,取长补短从而发挥更大效能。mpp(massive parallel processor)数据库采用的是分布式结构化存储技术,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。相对于传统数据库技术,mpp在分析pb级别的结构化数据方面高效、稳定。hdfs、hbase和hive作为hadoop框架的子项目,用以支撑非结构化数据的存储。hdfs分布式文件系统实现日志文件的分布式存储。hbase是一个分布式列存储数据库系统,底层物理存储利用了hdfs分布式文件系统,其设计目标是为了满足有海量行数、大量列数及数据结构不固定这类特殊数据的存储需求,并可以运行于大量低成本构建的硬件平台上,针对的应用环境是对事务一致性没有特别严格要求的领域。当查询检索流量、日志等信息时,可采用hbase列式存储方式,发挥hbase基于主键查询效率高的特点,添加索引表,把基于索引字段的查询转换为基于hbase主键的查询,实现毫秒级的数据查询响应。hive 是基于hadoop的数据仓库工具,可提供快速统计分析技术,并进行挖掘分析,从而支撑安全态势分析能力。
数据计算引擎:为了对安全分析平台提供全套计算引擎支撑服务,计算引擎采用mapreduce和storm相结合的方式。离线日志分析由mapreduce分布式并行计算框架提供计算能力,并具备抽象调度单元、集群资源管配、负载均衡机制、作业执行时间预测、优先级调度策略、各角色各时段的失败重试机制功能。mapreduce实现将打碎的碎片任务发送(map)到多个节点上,之后再以单个数据集的形式加载(reduce)到数据仓库里。实时流式日志分析由storm集群实现。实时日志流通过kafka消息队列的缓存后被发送到storm集群进行实时计算分析,并将结果存储到数据仓库hive中。
数据分析层:数据分析层实际上是各类数据挖掘、机器学习的算法支撑,实现包括关联规则(apriori等)、分类(decision tree等)、聚类(k-means等)等数据挖掘算法,实现数据的深度挖掘与分析,发现安全规律与趋势。关联规则用于发现各安全事件之间的关系网。分类是把一些新的数据项(如新的安全事件)映射到给定类别中的某一个类别。聚类是将相似的事物(如已知的安全事件)聚集在一起,而将不相似的事物划分到不同的类别的过程。根据不同的分析挖掘目的,结合运用不同的数据分析挖掘算法,为上层不同类型的应用提供强大的分析能力。
应用层:从实时性的角度出发,将安全大数据分析平台划分为2类,分别是在线分析和离线分析。其中,在线分析模块为平台提供安全事件实时监控告警服务、在线统计服务(统计实时数据等)等;离线分析根据算法库,进行统一调度和分布式计算,为平台提供行为分析、趋势预测、安全指数、安全风险态势感知等能力。
安全事件实时监控能力,每次安全事件发生会伴随着大量日志产生,实时监控系统可快速对安全事件做出告警动作并进行分级、分类统计,辅助安全管理人员初步了解当前安全状态,如识别出是ddos攻击告警、网络攻击告警、病毒流量告警、异常流量告警、非法登录告警、网站防护告警、非法下载告警、违规操作告警等。其原理是通过flume+kafka实时数据采集工具,将实时采集的各方面的安全数据汇聚到storm实时计算引擎,利用storm强大的流计算能力,实现流式数据实时或准实时处理,为平台提供在线分析处理能力,并通过生成的多维度详细报告。不仅如此,在线分析结果和安全事件处理结果还会被收集存储到离线分析模块的hdfs,结合多维度采集数据,利用mapreduce批量处理引擎和算法分析层的计算能力,实现各方数据综合离线分析,从而更精准地定位问题。
安全风险态势感知能力,网络安全态势感知是从宏观角度对网络系统安全状态的认知过程,通过在一定时间及空间范围内感知所发生的网络安全事件,针对安全数据进行综合处理,分析系统受到的攻击行为,提供网络安全的“全局视图”。其流程是经过收集、清洗、转换安全系统中各个方面的数据,采用一定的算法和技术手段识别系统中的各类网络活动,并得出各类网络活动的活动特征,这一过程可称之为理解。从理解到状态评估再到理解的闭环应该是动态的,只有具备这种动态自学习能力才能保证感知的准确性。网络态势的全面感知离不开对安全事件快速、高效、准确的发现和处理。具备态势感知分析能力的离线分析流程,离线分析模块收集全部历史数据和各类事件数据(包括在线分析处理转交的疑难事件数据和安全事件数据),并结合事件数据库中的事件信息,利用挖掘引擎对数据仓库中的数据进行深度分析,将深度分析后的事件结果流转至安全事件处理模块中进一步处理,并把事件保留至事件仓库中。同时,离线分析模块依据新的安全事件更新在线分析处理的规则库。通过对大量的各种安全事件融合分析和挖掘,可识别出网络系统中的各种类型的安全攻击行为,结合其发生时间、空间分布和对网络系统的危害程度等情报信息,从而达到准确地形成网络整体安全态势的目的。