APP下载

基于Kafka 和Spark 的网络安全分析平台的构建与应用

2023-03-05边静戈振兴

科海故事博览 2023年2期
关键词:批处理日志集群

边静,戈振兴

(集宁师范学院,内蒙古 集宁 012000)

随着计算机技术和网络技术的高速发展,网络应用逐渐深入各行各业,网络安全问题也随之越来越多,引起了相关各方面的高度重视。网络运维人员可通过对网络日志分析来监控网络运行状态及用户访问情况,及时发现各类故障及问题,提升运维管理水平[1]。此外,当前的网络攻击行为越来越难以发现,APT 攻击可以跳过网安设备,攻击者在得手后会销毁这些攻击记录,因此,如何快速实时地存储备份这些重要的日志信息和迅速地反馈这类信息成为目前的当务之急,通过建立可以将各类系统的日志信息进行统一集中的存储,网络安全分析平台可以解决这些问题[2]。

1 安全分析平台总体设计

1.1 平台需求分析

平台需处理的日志信息主要有网络设备日志、应用服务器系统日志、数据中心服务器日志、机房动力系统日志等。各种日志的内容不同、格式多样、结构复杂,日志信息中有价值的信息密度较低,非专业的人士很难读懂;由于信息化的高速发展、应用业务的数量增长、用户使用的增加、网络流量越来越大,日志信息数据增长很快,大量的日志难以收集、整理、存储;需要具备TB 级的海量日志分析存储平台来满足这一需求。本安全分析平台采用了Hadoop、Kafka、Spark 实时计算技术等,构建了一个分布式存储、实时计算的处理分析平台。利用分布式技术的高可用、高可扩展、高吞吐等特性,实现了日志信息的存储及实时分析处理。

1.2 技术介绍

目前在大数据存储领域的新技术中Hadoop 是最为广泛使用的技术之一,它是一个集分布式存储、管理和计算于一体的生态系统。Hadoop 生态系统的核心是分布式文件系统(Hadoop Distributed File System,简称HDFS)和MapReduce 框架,HDFS 实现了一个集群式的存储系统,MapReduce 框架可以在HDFS 上实现大数据的分析计算[3]。Hadoop 工作原理:在集群的多个节点上按照一定的冗余进行数据的存储,通过块保存到多个节点上,为海量数据提供高可靠性、高容错性、高可扩展性、高吞吐的存储方案[4]。

Spark 是一个易于使用的、强大的分布式处理大数据框架[5],主要应用在复杂的大数据处理场景中。目前已经在很多实际的生产环境中广泛使用,它可以稳定地操作PB 级的数据。它可以完成日志数据的抽取、清洗、转化、分析等功能。在Spark 中,数据被高度抽象且存储在弹性分布式数据集RDD 中。Spark 的处理速度比MapReduce 快10~100 倍,因此它是比Hadoop 更加高效的大数据计算框架。每次RDD 数据集的操作结果都可以保存在内存中,这样下一个操作可以直接从内存中读取数据,省去了MapReduce 中大量的磁盘I/O操作,明显提升了处理的速度。Spark 本身并没有提供分布式文件系统,因此Spark 分析处理后将数据存储于HDFS 中,将基于内存计算的Spark 与Hadoop 相互结合可提高各类处理的运行效率和处理规模。

1.3 平台总体结构

各种需要处理的日志信息数据首先会通过网络按照一定的规则被发送到各自的服务器中,然后各个服务器根据Flume NG 特有的接收方式将日志数据发送到特定的端口,根据实时处理和批处理的两种分析类型,Flume NG 集群将日志数据进行分别分发:需要实时处理的数据会通过Kafka Sink 发送到Kafka[6]集群中等待实时分析处理程序处理,Spark 的Spark Streaming 模块以消费者的消费数据的方式从Kafka 中提出数据进行相应的实时分析处理,分析处理后的结果会被传输到HBase 分布式开源数据库中,系统提供一个统一的可视化查询界面来对分析处理后的结果进行展示;另一部分需要批处理的日志数据通过HDFS Sink 发送到Hadoop集群的HDFS 中,这些在HDFS 中的数据既可以作为日志的备份也可以通过Spark 的批处理方式进行进一步的数据挖掘,从中提取更有价值的信息。Zookeeper 负责统一实现平台中的Hadoop、Kafka、Spark、HBase 等集群的分布式协调服务。

2 安全分析平台搭建与应用

2.1 日志收集

平台的日志收集模块主要由分布式日志收集系统Flume NG 实现,它是一个轻量级的数据采集工具,具有高可用、高容错、易扩展、可恢复、高性能等优势,经过简单配置就可实现与Kafka、Hadoop 等主流框架无缝对接,提供高效的、准确的数据采集服务。Flume NG 中,按照其内部设计结构分为了数据采集层(Source)、数据缓冲层(Channel)和数据处理层(Sink)三个层次。客户端按照事先订制的规则将日志数据封装成一系列的Event,Event 就是Flume NG 中的最小数据传输单位。Source 负责接收上一阶段生成的Event,然后将它写入Channel 中,Flume 提供了多种Source 的实现,例如:Taildir Source、Exec Source、Kafka Source 等,用户也可以自定义自己的Source;Channel 类似于Flume 内部的一个消息缓冲队列,它的任务是暂时将Source 端发送来的数据缓冲在Flume 中等待Sink 端拉取,常用的Channel 类型有:Memory Channel、File Channel 等;Sink 是负责拉取Channel 中的数据并发送到目标系统或下一个节点的Source 中,它的类型有HDFS Sink、Kafka Sink 等[7]。在Flume 中Source、Channel、Sink 都包含在一个称为Agent 的进程中,通过一系列的Agent组件将分布在不同节点的日志收集到指定的位置进而实现数据采集的任务。系统中将实时数据流通过Kafka Sink 端发送到Kafka 集群中供Spark Streaming 处理,将批处理数据通过HDFS Sink 端发送到Hadoop 的HDFS中做后续的分析处理。这里的Channel 选择了Memory Channel,这样可以提高传输的速度,但需要配置更多的内存。

Kafka 集群接收需要进行实时分析计算的日志数据,在其集群内部的每个节点都会创建相应的broker实例缓存数据,broker 内按照topic 对数据进行分类存储,在broker 两端,各有多个producer 和consumer。这里Flume 充当producer 的作用,完成向broker 发送日志数据的任务,Spark Streaming 的实时计算程序充当consumer 的作用,不断地从broker 中拉取各个topic 中缓存的日志数据。

2.2 日志分析处理

日志处理部分是本平台的核心业务处理部分,该部分主要包含了两种类型的业务:对需要实时结果的业务进行实时计算;对时效性要求不高的业务进行离线分析处理。

实时业务主要由Spark 集群中的Spark Streaming[8]模块来实现,Spark Streaming 使用的是一种微批处理的工作模式,它将从Kafka 中流入的数据按照秒级的时间单位划分成很短的数据单元,然后对这些数据进行微批处理,每块数据会被作为一个RDD。DStream 是Spark Streaming 提供的高级别抽象数据流,它实际上就是在时间维度上连续的RDD 序列,因此对DStream 的操作实际上也会被转换成对RDD 的操作,由此来完成对每一个小块数据的处理,Spark Streaming 的流计算就是通过这种快速小批量的批处理的方式来实现接近于实时计算的,所以从理论上来说它还是存在一定的延迟的,根据实验测试数据显示Spark Streaming 能实现秒级的延迟。Spark Streaming 通过从Kafka 中拉取所需日志数据来进行分析处理并最终输出分析结果。其具体处理流程如下:由SparkContex 对象初始化Master 节点和各个Worker 节点,启动StreamingContext 实例,通过createDirectStream()方法创建一个inputstream 用来直接从Kafka 中拉取日志数据,接着通过正则表达式的方法对数据进行过滤,将不符合规则的数据过滤掉。然后对过滤后的数据再根据内容进行匹配分类,这样就可以初步得到符合规则的日志信息。这些信息会被存储到HBase 中,供前端查询或作可视化展示。例如可以对访问地址做频次统计分析,配置好统计的时间范围和其他参数后,可以在展示界面中看到一段时间范围内某类事件出现频次的统计排行榜[9]。

离线分析业务是对HDFS 中收集的原始历史日志数据进行分析处理,通过进行更深入的数据挖掘处理可以发现日志数据中隐含的一些有价值的信息。离线日志分析是以Spark 的批处理工作模式实现的,它与Spark Streaming 实时日志处理稍有不同的,它主要被设计用来完成一些大数据量的业务,其执行的处理流程也和实时业务模块类似,也是对日志进行一定的清洗、过滤、分类等操作,然后根据事先设计好的分析算法进入相应的处理流程,处理结果持久化到HDFS或MySQL 中。

2.3 安全分析平台应用

2.3.1 日志查询和可视化展示

经过日志分析处理模块得到的结果会存储在HBase或MySQL 中,可以以时间区间为条件对结果数据进行数据分组查询,也可以根据不同的条件组合查询某个IP 相关的所有的连接信息,还可以查询发生次数最多的源IP、源端口、目的IP 和端口等内容。此外,在可视化展现模块中,通过相应的配置,可以将分析结果以柱状图、折线图和饼状图等形式进行展现,可视化的展现形式可以更加直观地展现日志数据的量化值、趋势特征和百分比等统计分析结果。

2.3.2 故障告警和设备监控

通过对记录了系统中硬件、软件和系统运行期间产生的各种信息的分析处理可以快速发现硬件故障、系统宕机、应用系统崩溃、数据库存储及备份故障等问题,及时排查错误产生的原因,帮助运维人员快速定位故障位置并恢复业务。在网络攻击活动中攻击者常常在攻击成功后会清除攻击行为记录等违法行为痕迹,甚至删除系统日志;日志分析平台的收集模块也可以起到对日志的快速备份的作用,这样即便攻击者删除了设备中的攻击日志记录,在分析平台中还存储了备份,这些信息同样也可以作为攻击者违法行为的证据,为网络安全事件的追踪和溯源提供重要的线索和依据。

2.3.3 攻击发现和非法挖矿

根据相关的研究数据表明,网络攻击和非法入侵行为逐年增加,分析平台可以通过日志信息分析识别出大多数的网络攻击行为和内网主机非法外联行为。网络攻击行为通常具有短时间内出现大量的访问的特征,通过对日志信息中访问量的统计结果可以及时发现此类行为。针对网络爬虫、恶意猜解VPN 用户名密码等攻击行为特征,进行相应的分析处理,也可以及时发现这些攻击行为,这里不再赘述。近几年随着挖矿的盛行,服务器成为其理想的攻击目标之一,由于数据中心的服务器性能较高且7X24 小时在线,所以经常会被入侵并植入木马、病毒从而被用来挖矿。根据公开的网络安全威胁信息,对日志信息中涉及的矿池IP、域名的数据进行分析可以在早期迅速发现此类行为,将风险和损失降到最低。

3 总结与展望

在大数据技术迅猛发展的今天,面对越来越复杂的网络安全环境,对运维工作提出了更高的要求,日志信息分析处理在网络安全管理中的作用也越来越大,基于Kafka、Spark 等技术搭建的网络安全分析平台,可以实现对海量日志的存储和分析,这些技术也具备了很好的扩展性和伸缩性,可以满足不同规模的企事业单位的业务需求,由于所使用的技术均为开源技术,也为经费不足的单位提供了很好的经济性。同时系统具有很好的稳定性和可靠性,极大地提高了网络管理人员的工作效率,对进一步提升网络运维的自动化程度具有重要的作用。目前该平台仅能完成日志信息的存储、分析、查询和可视化展示的功能,下一步将计划引入机器学习的方法[10],开展日志信息的关联分析、特征分析等处理方法,进一步挖掘日志信息中有价值的数据,提高网络安全管理水平。

猜你喜欢

批处理日志集群
一名老党员的工作日志
恶意批处理文件导致电脑黑屏、反复重启、无响应的原因分析及应对思路
扶贫日志
不装软件批处理为文件夹加锁
海上小型无人机集群的反制装备需求与应对之策研究
雅皮的心情日志
一种无人机集群发射回收装置的控制系统设计
游学日志
借助批处理 让Cortana变聪明
Python与Spark集群在收费数据分析中的应用