王 爽
(西安體育學(xué)院網(wǎng)絡(luò)管理中心,陜西 西安 710068)
隨著大數(shù)據(jù)技術(shù)發(fā)展、高速互聯(lián)網(wǎng)的興起,大規(guī)模軟件運(yùn)行日志收集及維護(hù)系統(tǒng)得到快速的發(fā)展,隨之產(chǎn)生了越來越多的日志數(shù)據(jù)。一些國際頂級期刊已經(jīng)設(shè)立了??瘉硌芯咳绾斡行У亟M織和使用海量的日志數(shù)據(jù)來推動(dòng)人類的科學(xué)技術(shù)進(jìn)步和社會(huì)的發(fā)展。記錄了軟件系統(tǒng)、硬件設(shè)備和用戶行為的日志文件,在監(jiān)控網(wǎng)絡(luò)情況、檢查硬件故障、保護(hù)軟件安全等方面起著重要的作用。加強(qiáng)對網(wǎng)絡(luò)日志的管理和分析是強(qiáng)化網(wǎng)絡(luò)管理、維護(hù)網(wǎng)絡(luò)安全的一個(gè)重要途徑。通過分析日志數(shù)據(jù),可以獲取關(guān)于設(shè)備故障、網(wǎng)絡(luò)運(yùn)行歷史背景、網(wǎng)絡(luò)異常行為等信息,從而有助于網(wǎng)絡(luò)安全管理人員及時(shí)發(fā)現(xiàn)和解決網(wǎng)絡(luò)故障或阻斷網(wǎng)絡(luò)攻擊,保證網(wǎng)絡(luò)的健康穩(wěn)定運(yùn)行。提供針對日志內(nèi)容的分析和查詢能力,可以給軟件運(yùn)維帶來便利,也可以基于日志中獲得更深的業(yè)務(wù)價(jià)值。
下一代互聯(lián)網(wǎng)技術(shù)IPv6 協(xié)議的不斷成熟及推廣,支持IPv6 訪問的應(yīng)用逐漸成為了主流,IPv6 網(wǎng)絡(luò)面臨的安全風(fēng)險(xiǎn)與攻擊威脅成為網(wǎng)絡(luò)發(fā)展亟待解決的問題。本文利用NoSQL非關(guān)系型數(shù)據(jù)庫設(shè)計(jì)并實(shí)現(xiàn)一種基于MongoDB 的IPv6 網(wǎng)絡(luò)安全日志分析系統(tǒng)。NoSQL 數(shù)據(jù)庫是一種新型模式,不僅能夠快速存儲(chǔ)數(shù)據(jù),也可以快速查詢數(shù)據(jù),除此之外,NoSQL 數(shù)據(jù)庫的容錯(cuò)性很高,靈活的分布方式更適合存儲(chǔ)海量數(shù)據(jù),NoSQL 數(shù)據(jù)庫有MongoDB、Hdase、Redis 等,其中MongoDB由于具有數(shù)據(jù)模型豐富、存取性能優(yōu)異、支持豐富查詢表達(dá)式、數(shù)據(jù)維護(hù)工作量小等諸多優(yōu)勢。因非常適用于分析和管理日志。
網(wǎng)絡(luò)日志通常具有大規(guī)模、高維、非結(jié)構(gòu)化、非數(shù)值化、非拓?fù)涞忍攸c(diǎn)。本文根據(jù)網(wǎng)絡(luò)日志的應(yīng)用特點(diǎn),提出了日志數(shù)據(jù)NoSQL緩存及處理機(jī)制。并依其為基礎(chǔ),設(shè)計(jì)構(gòu)建了基于NoSQL的在線網(wǎng)絡(luò)日志分析系統(tǒng)。在新系統(tǒng)中,日志通過MongoDB 數(shù)據(jù)庫作為日志接收緩存層,從而應(yīng)對突然到達(dá)的海量日志造成緩沖溢出。日志通過分析處理后,將可視化數(shù)據(jù)存儲(chǔ)在NoSQL 中,可提供訪問者行為分析、運(yùn)營相關(guān)指標(biāo)統(tǒng)計(jì)和分析結(jié)果可視化報(bào)表。
本系統(tǒng)包含六個(gè)功能:安全監(jiān)測預(yù)警、流量趨勢分析、訪問者行為分析、日志檢索、設(shè)備管理、日志存儲(chǔ)管理。
主要進(jìn)行異常信息的實(shí)時(shí)監(jiān)測,并產(chǎn)生預(yù)警信息。功能包含URL 訪問異常、設(shè)備登錄異常、反病毒分析、預(yù)警規(guī)則管理等。
通過相關(guān)指標(biāo)進(jìn)行網(wǎng)絡(luò)流量趨勢分析,包括URL訪問量、IP 流量、設(shè)備接口流量、應(yīng)用程序流量、防火墻規(guī)則流量等指標(biāo),各指標(biāo)最終以圖表方式展示。圖表主要內(nèi)容包括IP Top 10、規(guī)則Top10、接口Top10、IP 名聲、應(yīng)用程序Top10、URL Top 50、IP 源/目標(biāo)地理分布圖等。
通過分析網(wǎng)絡(luò)中訪問者的日志,可確定訪問者在網(wǎng)絡(luò)中的活動(dòng)軌跡,即達(dá)到分析“誰,在什么時(shí)間,使用什么設(shè)備,做了什么”的目的。主要包含訪問者的某時(shí)間范圍內(nèi)使用的IP、使用的設(shè)備名稱和MAC、具體的應(yīng)用程序、訪問了哪些網(wǎng)絡(luò)資源,并產(chǎn)生了多少流量。
通過日志檢索功能,可以確定網(wǎng)絡(luò)安全和設(shè)備運(yùn)行問題,進(jìn)而加強(qiáng)網(wǎng)絡(luò)安全和網(wǎng)絡(luò)管理。
通過配置日志源設(shè)備,來管理有效日志源,避免無效日志數(shù)據(jù)進(jìn)入系統(tǒng),造成系統(tǒng)負(fù)擔(dān)。
管理日志存儲(chǔ)配置信息,可指定日志存儲(chǔ)時(shí)效、磁盤空間限額等。
本系統(tǒng)在結(jié)構(gòu)上分為五個(gè)大模塊:分別為日志采集、日志預(yù)處理、日志存儲(chǔ)、日志分析、日志分析結(jié)果可視化。
日志采集模塊將采集符合SysLog RFC3164 和RFC5424 兩種協(xié)議的日志。采集到的日志分別發(fā)送兩次,一次發(fā)送到日志預(yù)處理模塊進(jìn)行處理后存儲(chǔ)于MongoDB,如果日志級別為Error,則再次發(fā)送到日志實(shí)時(shí)分析模塊,為系統(tǒng)實(shí)時(shí)預(yù)警機(jī)制提供數(shù)據(jù)。支持現(xiàn)有系統(tǒng)的多種數(shù)據(jù)源,包括文件、系統(tǒng)事件等。
系統(tǒng)基于Java 語言開發(fā),用于接收網(wǎng)絡(luò)安全設(shè)備通過UDP 協(xié)議輸出的標(biāo)準(zhǔn)syslog 日志。要基于IPv6實(shí)現(xiàn)UDP通訊我們需要做到以下兩個(gè)方面。
Java 從1.4 版開始支持Linux 和Solaris 平臺(tái)上的IPv6,1.5 版起又加入了Windows 平臺(tái)上的支持,在Java 語言中對于InetAddress 提供了兩個(gè)擴(kuò)展類:Inet4Address和Inet6Address,其中封裝了對于IPv4和IPv6的特殊屬性和行為,方便我們處理不同的IP協(xié)議。
Java 網(wǎng)絡(luò)棧會(huì)優(yōu)先檢查底層系統(tǒng)是否支持IPv6,及采用的何種IP 棧系統(tǒng)。如果是雙棧系統(tǒng),那它直接創(chuàng)建一個(gè)IPv6套接字如圖1所示,對于分隔棧系統(tǒng),Java則創(chuàng)建IPv4/v6兩個(gè)套接字(分隔棧結(jié)構(gòu))如圖2所示。
圖1 雙棧結(jié)構(gòu)
圖2 分隔棧結(jié)構(gòu)
在系統(tǒng)中,使用的是UDP 協(xié)議,所以兩個(gè)套接字都會(huì)保留來完成通訊。
在IPv4/IPv6雙環(huán)境中,對于使用Java開發(fā)的網(wǎng)絡(luò)應(yīng)用,比較值得注意的是以下兩個(gè)IPv6 相關(guān)的Java虛擬機(jī)系統(tǒng)屬性:
程序中設(shè)置代碼如下:
preferIPv4Stack(默認(rèn)false)表示如果存在IPv4 和IPv6 雙棧,Java 程序是否優(yōu)先使用IPv4 套接字。默認(rèn)值是優(yōu)先使用IPv6套接字,因?yàn)镮Pv6套接字可以與對應(yīng)的IPv4 或IPv6 主機(jī)進(jìn)行對話。相反如果優(yōu)先使用IPv4,則不能只與IPv6主機(jī)進(jìn)行通信。
preferIPv6Addresses(默認(rèn)false)表示在查詢本地或遠(yuǎn)端IP 地址時(shí),如果存在IPv4 和IPv6 雙地址,Java程序是否優(yōu)先返回IPv6 地址。Java 默認(rèn)返回IPv4地址主要是為了向后兼容,以支持舊有的IPv4 驗(yàn)證邏輯,以及舊有的僅支持IPv4地址的服務(wù)。
日志預(yù)處理作為系統(tǒng)的一個(gè)重要模塊,是日志分析的基礎(chǔ)。本系統(tǒng)將源日志處理后直接存入MongoDB,為了加快對數(shù)據(jù)的寫入,每個(gè)Document 下子Document 數(shù)據(jù)設(shè)置為2000,每200 個(gè)Document 寫入一次。每條日志按內(nèi)容結(jié)構(gòu)進(jìn)行切分為五個(gè)部分:設(shè)備、ip、級別、時(shí)間、消息主體。
對存儲(chǔ)模塊的設(shè)計(jì)采用MongoDB與NoSQL的組合方式,其中MongoDB 負(fù)責(zé)緩沖存儲(chǔ)采集的所有日志,NoSQL 負(fù)責(zé)存儲(chǔ)從MongoDB 中導(dǎo)出的日志數(shù)據(jù),從而為日志分析奠定基礎(chǔ)。
系統(tǒng)采集了大量網(wǎng)絡(luò)設(shè)備的日志,如:身份認(rèn)證、DHCP、DNS、流控等設(shè)備,系統(tǒng)依據(jù)這些設(shè)備日志,按業(yè)務(wù)規(guī)則對日志進(jìn)行分析,可以確定出訪問者在網(wǎng)絡(luò)中的活動(dòng)軌跡,具體實(shí)現(xiàn)過程的描述如圖3所示。
圖3 用戶行為軌跡分析
對日志分析結(jié)果進(jìn)行再處理并可視化顯示,系統(tǒng)將日志分析處理后存儲(chǔ)在NoSQL 中,需要先將這些結(jié)果提取出來,并分析轉(zhuǎn)換為相應(yīng)的可視化元素,如表格、圖、表等。例如:對目標(biāo)IP 位置進(jìn)行地圖展示如圖4所示。
圖4 目標(biāo)IP位置地圖可視化展示
系統(tǒng)由一臺(tái)日志收集服務(wù)器、日志分析服務(wù)器、和日志存儲(chǔ)數(shù)據(jù)庫服務(wù)器構(gòu)成,其中日志分析服務(wù)器在整個(gè)架構(gòu)中居于中心地位。
本文完成了基于IPv6 的網(wǎng)絡(luò)日志分析系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),系統(tǒng)結(jié)合Syslog 協(xié)議和MongoDB 數(shù)據(jù)庫技術(shù)實(shí)現(xiàn)了海量日志的收集和快速處理,同時(shí),實(shí)現(xiàn)了對訪問者的行為軌跡分析。
目前,本系統(tǒng)支持的網(wǎng)絡(luò)設(shè)備還不夠全面。此外,系統(tǒng)雖然具備一定的監(jiān)測預(yù)警能力,可以第一時(shí)間報(bào)警并告知管理人員,但是提供的安全監(jiān)測預(yù)警能力有限,在安全預(yù)警監(jiān)測方面仍有較大提升空間。