龔劍敏 顏濤 周亮
摘要:隨著計(jì)算機(jī)技術(shù)和通信技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)安全形勢也越來越嚴(yán)峻,如何在海量日志中發(fā)現(xiàn)安全攻擊是個(gè)值得研究的問題,傳統(tǒng)的日志分析方法效率低,難以發(fā)現(xiàn)一些高級的網(wǎng)絡(luò)安全威脅。針對該問題,提出了基于分布式存儲(chǔ)和Spark框架的網(wǎng)絡(luò)日志分析系統(tǒng)架構(gòu),不僅有效利用了云環(huán)境中的計(jì)算存儲(chǔ)資源,同時(shí)還大大提高了計(jì)算效率。
關(guān)鍵詞:分布式計(jì)算;網(wǎng)絡(luò)攻擊;日志分析;拒絕服務(wù)攻擊
中圖分類號:TP393? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2021)04-0044-02
Abstract:With the rapid development of computer technology and communication technology, the network security situation is becoming more and more serious. How to find security attacks in massive logs is a problem worth studying. Traditional log analysis methods are inefficient and difficult to find some advanced network security threats. To solve this problem, a network log analysis system based on distributed storage and spark framework is proposed, which not only effectively utilizes the computing storage resources in cloud environment, but also greatly improves the computing efficiency.
Key words: distributed computing; network attack; log analysis; denial of service attack
隨著計(jì)算機(jī)技術(shù)和通信技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)數(shù)據(jù)呈指數(shù)級上升,服務(wù)器端接收到的用戶訪問日志文件的數(shù)據(jù)量越來越多,網(wǎng)絡(luò)安全威脅形勢也越來越嚴(yán)峻,攻擊手段越來越隱蔽,如何在海量日志中發(fā)現(xiàn)安全攻擊是個(gè)值得研究的問題。本文提出了一種基于分布式存儲(chǔ)和Spark框架的網(wǎng)絡(luò)日志分析系統(tǒng)架構(gòu),不僅有效利用了云環(huán)境中的計(jì)算存儲(chǔ)資源,同時(shí)還大大提高了計(jì)算效率。
1相關(guān)技術(shù)概述
本文設(shè)計(jì)的檢測系統(tǒng)是針對實(shí)時(shí)數(shù)據(jù)進(jìn)行計(jì)算和分析,目前對于大量實(shí)時(shí)數(shù)據(jù)進(jìn)行流式計(jì)算的最實(shí)用的組件是 Spark Streaming,本系統(tǒng)采用 Kafka 用于收集服務(wù)器的訪問日志,接下來介紹 Spark和Kafka。
1.1 Spark框架
Spark是由加州伯克利大學(xué)提出的一種分布式數(shù)據(jù)處理框架,可用于構(gòu)建低延時(shí)的大型數(shù)據(jù)挖掘應(yīng)用程序。Hadoop中 MapReduce 會(huì)產(chǎn)生巨大的 I/O 開銷,Spark采用內(nèi)存計(jì)算克服了這一弱點(diǎn),提高了性能[1]。SparkStreaming 是一個(gè) Spark 針對實(shí)時(shí)數(shù)據(jù)進(jìn)行計(jì)算和分析設(shè)計(jì)的模型。具有高吞吐率和高容錯(cuò)率等特點(diǎn)。SparkStreaming 可以處理多種不同類型的數(shù)據(jù)源, 比如 Kafka,flume 等。通過 SparkStreaming 計(jì)算得到的結(jié)果有兩種操作:一種是轉(zhuǎn)化操作,繼續(xù)進(jìn)行新的計(jì)算;另一種是輸出操作,把數(shù)據(jù)寫入外部系統(tǒng)中,存儲(chǔ)到數(shù)據(jù)庫或者應(yīng)用到實(shí)時(shí)系統(tǒng)顯示界面中。SparkStreaming 相較于其他處理引擎最大的優(yōu)勢是可以同時(shí)進(jìn)行批處理和流處理,還具有強(qiáng)大的容錯(cuò)性。
1.2 Kafka分布式消息中間件
Kafka是近年來使用較多的分布式消息隊(duì)列中間件,是由 LinkedIn 研發(fā)[2]。如今被廣泛應(yīng)用于分布式集群應(yīng)用之中,當(dāng)作多種類型的數(shù)據(jù)管道和消息系統(tǒng)。 Kafka 的出現(xiàn)起到了兩個(gè)作用:一方面是降低了系統(tǒng)組網(wǎng)的復(fù)雜程度,另一方面減少了編寫程序的難度,每個(gè)子系統(tǒng)并非是彼此協(xié)調(diào)的接口,而是像插口插在插座上,而 Kafka 起著極速數(shù)據(jù)總線的角色。
Kafka主要的特點(diǎn)如下:
(1)能夠同時(shí)發(fā)布和訂閱,供給高吞吐量。據(jù)統(tǒng)計(jì),Kafka 以秒為單位能夠產(chǎn)生大約 25 萬信息(50Mb),每秒處理達(dá)到 55 萬信息(110MB)。
(2)持久化操作。將信息持久化到磁盤中因而可用于成批的消耗,例如 ETL。采取將數(shù)據(jù)持久化到磁盤的方式以及拷貝(Replication) 預(yù)防數(shù)據(jù)遺失,為數(shù)據(jù)安全提供了保障。
(3)分布式系統(tǒng),便于向外擴(kuò)展。所有的 Producer、Broker 和 Consumer 都有多個(gè),而且全都為分布式,便于擴(kuò)展機(jī)器。
(4)信息被操作的階段是在 Consumer 端維護(hù),而不是 Server 端維護(hù)。當(dāng)失敗的時(shí)候能夠自動(dòng)平衡。
2系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
低速率拒絕服務(wù)攻擊(Low-rate Denial-of-Service,簡稱LDoS)是近年來提出的一類新型攻擊[4],其不同于傳統(tǒng)洪泛(flooding)式的DoS攻擊,主要是利用端系統(tǒng)或網(wǎng)絡(luò)中常見的自適應(yīng)機(jī)制所存在的安全漏洞,通過低速率周期性攻擊流,以更高的攻擊效率對受害者進(jìn)行破壞且不易被發(fā)現(xiàn),本文主要針對該類型的攻擊檢測展開研究。如圖所示,基于Spark的低速率拒絕服務(wù)攻擊檢測系統(tǒng)模塊主要分為:數(shù)據(jù)采集模塊,數(shù)據(jù)處理模塊,特征提取模塊,檢測模塊,預(yù)警模塊和異常處理模塊。
(1)數(shù)據(jù)采集模塊。根據(jù) Kafka+Spark 架構(gòu),提取服務(wù)器端的實(shí)時(shí)數(shù)據(jù)流日志文件,并將初始數(shù)據(jù)集存儲(chǔ)在 Hadoop 的分布式文件存儲(chǔ)系統(tǒng)中。
(2)數(shù)據(jù)處理模塊,對初始數(shù)據(jù)集進(jìn)行數(shù)據(jù)預(yù)處理,并將數(shù)據(jù)集切片處理,將一個(gè)大的時(shí)間周期內(nèi)的數(shù)據(jù)集切分成多個(gè)小的時(shí)間周期,計(jì)算相應(yīng)的吞度量、時(shí)延、高頻信號的能量值、低頻信號的能量值、流量峰值、阻塞指數(shù)等特征值。
(3)檢測模塊,將提取的特征數(shù)據(jù)集放入提前訓(xùn)練好的隨機(jī)森林模型中,判斷該事件段內(nèi)服務(wù)器端是否受到了LDoS 攻擊。
(4)預(yù)警模塊,當(dāng)檢測模塊發(fā)現(xiàn)某時(shí)間段內(nèi)大量特征值檢測超過正常值范圍,即模型認(rèn)為該時(shí)間段服務(wù)器端收到了LDoS 攻擊,就會(huì)觸發(fā)報(bào)警機(jī)制,提醒管理人員,在該時(shí)間間隔內(nèi),服務(wù)器收到攻擊。
(5)異常處理模塊,管理員可以根據(jù)發(fā)生的時(shí)間間隔內(nèi)的同一IP出現(xiàn)的頻率過高或者是同一IP段內(nèi)同一地區(qū)內(nèi)的 IP 出現(xiàn)過多時(shí),采取屏蔽IP段或者屏蔽某一塊地區(qū)訪問權(quán)限。
3系統(tǒng)仿真實(shí)驗(yàn)
實(shí)驗(yàn)設(shè)計(jì)如下:在一臺物理服務(wù)器上搭建 4 臺虛擬機(jī),其中一臺作為主節(jié)點(diǎn),一臺作為備用節(jié)點(diǎn),剩余兩臺作為 Slave 節(jié)點(diǎn)。實(shí)驗(yàn)具體硬件配置如表 1 所示。另外在一臺內(nèi)存為 16G,硬盤空間為 1T的物理機(jī)上安裝相同的環(huán)境作為對照。
為了保證實(shí)驗(yàn)的公平性,本次實(shí)驗(yàn)是基于離線數(shù)據(jù)集批處理過程,初始數(shù)據(jù)集大小設(shè)置為 5 組數(shù)據(jù)集,分別約為 100M,300M,500M,700M,1T,1.2T。每組的數(shù)據(jù)量不相同,但攻擊數(shù)據(jù)流的攻擊周期,攻擊時(shí)長,攻擊速率以及正常數(shù)據(jù)流通信的速率, 滑動(dòng)窗口大小都一致,且都不存在噪聲數(shù)據(jù)。數(shù)據(jù)分布相似,能夠用來作對比實(shí)驗(yàn)。經(jīng)過實(shí)驗(yàn)結(jié)果統(tǒng)計(jì)得到本文提出的檢測模型在單機(jī)和集群下的不同耗時(shí)如圖 2所示。由此可見,數(shù)據(jù)集比較小的時(shí)候,單機(jī)模式和集群模式下的算法耗時(shí) 時(shí)長沒有明顯差異,但數(shù)據(jù)集越大時(shí),集群模式下的算法耗時(shí)優(yōu)勢越明顯,而且, 本次實(shí)驗(yàn)集群只有兩臺 Worker,如果有多臺 Worker 同時(shí)運(yùn)行,耗時(shí)將會(huì)更短。 因此,對于一個(gè)日活躍用戶達(dá)到萬級的特小型網(wǎng)站來說,假設(shè)每個(gè)用戶每天的點(diǎn)擊量是 10 次,那么每天服務(wù)器端將收到數(shù)十萬條的日志數(shù)據(jù),因此,采用集群模式的低速率 DoS 攻擊檢測系統(tǒng),效率要遠(yuǎn)高于單機(jī)模式下的攻擊檢測系統(tǒng)。
4總結(jié)
本文主要介紹了 Spark,Kafka 的工作原理,以及基于分布式的 LDoS 攻擊檢測系統(tǒng)的部署和實(shí)現(xiàn)流程,并且通過仿真實(shí)現(xiàn)對比了單機(jī)系統(tǒng)和集群系統(tǒng)的工作效率。實(shí)驗(yàn)證明,本文提出的基于Spark的網(wǎng)絡(luò)日志分析系統(tǒng)能有效地提高日志分析的效率。
參考文獻(xiàn):
[1] 李曉燕,郭亞峰.面向Hadoop的分布式日志分析系統(tǒng)[J].計(jì)算機(jī)產(chǎn)品與流通,2020(3):111.
[2] Kafka 2.6 Documentation. http://kafka.apache.org/documentation/#gettingStarted [EB/OL].2020,11.
[3] 石樂義,劉佳,劉祎豪,等.網(wǎng)絡(luò)安全態(tài)勢感知研究綜述[J].計(jì)算機(jī)工程與應(yīng)用,2019,55(24):1-9.
[4] 李芳菊.基于Hadoop的網(wǎng)絡(luò)行為大數(shù)據(jù)安全實(shí)體識別系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2019,42(17):75-79.
[5] 劉軍,冷芳玲,李世奇,等.基于HDFS的分布式文件系統(tǒng)[J].東北大學(xué)學(xué)報(bào)(自然科學(xué)版),2019,40(6):795-800.
[6] 王建仁,馬鑫,段剛龍.改進(jìn)的K-means聚類k值選擇算法[J].計(jì)算機(jī)工程與應(yīng)用,2019,55(8):27-33.
[7] 陸勰,羅守山,張玉梅.基于Hadoop的海量安全日志聚類算法研究[J].信息網(wǎng)絡(luò)安全,2018(8):56-63.
[8] 劉景云.搭建HDFS分布式文件系統(tǒng)[J].網(wǎng)絡(luò)安全和信息化,2018(2):100-103.
[9] 周波.基于Apache Flume的MR數(shù)據(jù)采集實(shí)現(xiàn)方案[J].電信科學(xué),2018,34(S1):216-221.
[10] 劉芬,廖榮濤,余錚.Hadoop下的在線網(wǎng)絡(luò)日志分析系統(tǒng)設(shè)計(jì)[J].電子技術(shù)與軟件工程,2017(22):20.
【通聯(lián)編輯:代影】