王 爽
(西安體育學院網絡管理中心,陜西 西安 710068)
隨著大數據技術發展、高速互聯網的興起,大規模軟件運行日志收集及維護系統得到快速的發展,隨之產生了越來越多的日志數據。一些國際頂級期刊已經設立了??瘉硌芯咳绾斡行У亟M織和使用海量的日志數據來推動人類的科學技術進步和社會的發展。記錄了軟件系統、硬件設備和用戶行為的日志文件,在監控網絡情況、檢查硬件故障、保護軟件安全等方面起著重要的作用。加強對網絡日志的管理和分析是強化網絡管理、維護網絡安全的一個重要途徑。通過分析日志數據,可以獲取關于設備故障、網絡運行歷史背景、網絡異常行為等信息,從而有助于網絡安全管理人員及時發現和解決網絡故障或阻斷網絡攻擊,保證網絡的健康穩定運行。提供針對日志內容的分析和查詢能力,可以給軟件運維帶來便利,也可以基于日志中獲得更深的業務價值。
下一代互聯網技術IPv6 協議的不斷成熟及推廣,支持IPv6 訪問的應用逐漸成為了主流,IPv6 網絡面臨的安全風險與攻擊威脅成為網絡發展亟待解決的問題。本文利用NoSQL非關系型數據庫設計并實現一種基于MongoDB 的IPv6 網絡安全日志分析系統。NoSQL 數據庫是一種新型模式,不僅能夠快速存儲數據,也可以快速查詢數據,除此之外,NoSQL 數據庫的容錯性很高,靈活的分布方式更適合存儲海量數據,NoSQL 數據庫有MongoDB、Hdase、Redis 等,其中MongoDB由于具有數據模型豐富、存取性能優異、支持豐富查詢表達式、數據維護工作量小等諸多優勢。因非常適用于分析和管理日志。
網絡日志通常具有大規模、高維、非結構化、非數值化、非拓撲等特點。本文根據網絡日志的應用特點,提出了日志數據NoSQL緩存及處理機制。并依其為基礎,設計構建了基于NoSQL的在線網絡日志分析系統。在新系統中,日志通過MongoDB 數據庫作為日志接收緩存層,從而應對突然到達的海量日志造成緩沖溢出。日志通過分析處理后,將可視化數據存儲在NoSQL 中,可提供訪問者行為分析、運營相關指標統計和分析結果可視化報表。
本系統包含六個功能:安全監測預警、流量趨勢分析、訪問者行為分析、日志檢索、設備管理、日志存儲管理。
主要進行異常信息的實時監測,并產生預警信息。功能包含URL 訪問異常、設備登錄異常、反病毒分析、預警規則管理等。
通過相關指標進行網絡流量趨勢分析,包括URL訪問量、IP 流量、設備接口流量、應用程序流量、防火墻規則流量等指標,各指標最終以圖表方式展示。圖表主要內容包括IP Top 10、規則Top10、接口Top10、IP 名聲、應用程序Top10、URL Top 50、IP 源/目標地理分布圖等。
通過分析網絡中訪問者的日志,可確定訪問者在網絡中的活動軌跡,即達到分析“誰,在什么時間,使用什么設備,做了什么”的目的。主要包含訪問者的某時間范圍內使用的IP、使用的設備名稱和MAC、具體的應用程序、訪問了哪些網絡資源,并產生了多少流量。
通過日志檢索功能,可以確定網絡安全和設備運行問題,進而加強網絡安全和網絡管理。
通過配置日志源設備,來管理有效日志源,避免無效日志數據進入系統,造成系統負擔。
管理日志存儲配置信息,可指定日志存儲時效、磁盤空間限額等。
本系統在結構上分為五個大模塊:分別為日志采集、日志預處理、日志存儲、日志分析、日志分析結果可視化。
日志采集模塊將采集符合SysLog RFC3164 和RFC5424 兩種協議的日志。采集到的日志分別發送兩次,一次發送到日志預處理模塊進行處理后存儲于MongoDB,如果日志級別為Error,則再次發送到日志實時分析模塊,為系統實時預警機制提供數據。支持現有系統的多種數據源,包括文件、系統事件等。
系統基于Java 語言開發,用于接收網絡安全設備通過UDP 協議輸出的標準syslog 日志。要基于IPv6實現UDP通訊我們需要做到以下兩個方面。
Java 從1.4 版開始支持Linux 和Solaris 平臺上的IPv6,1.5 版起又加入了Windows 平臺上的支持,在Java 語言中對于InetAddress 提供了兩個擴展類:Inet4Address和Inet6Address,其中封裝了對于IPv4和IPv6的特殊屬性和行為,方便我們處理不同的IP協議。
Java 網絡棧會優先檢查底層系統是否支持IPv6,及采用的何種IP 棧系統。如果是雙棧系統,那它直接創建一個IPv6套接字如圖1所示,對于分隔棧系統,Java則創建IPv4/v6兩個套接字(分隔棧結構)如圖2所示。

圖1 雙棧結構

圖2 分隔棧結構
在系統中,使用的是UDP 協議,所以兩個套接字都會保留來完成通訊。
在IPv4/IPv6雙環境中,對于使用Java開發的網絡應用,比較值得注意的是以下兩個IPv6 相關的Java虛擬機系統屬性:

程序中設置代碼如下:

preferIPv4Stack(默認false)表示如果存在IPv4 和IPv6 雙棧,Java 程序是否優先使用IPv4 套接字。默認值是優先使用IPv6套接字,因為IPv6套接字可以與對應的IPv4 或IPv6 主機進行對話。相反如果優先使用IPv4,則不能只與IPv6主機進行通信。
preferIPv6Addresses(默認false)表示在查詢本地或遠端IP 地址時,如果存在IPv4 和IPv6 雙地址,Java程序是否優先返回IPv6 地址。Java 默認返回IPv4地址主要是為了向后兼容,以支持舊有的IPv4 驗證邏輯,以及舊有的僅支持IPv4地址的服務。
日志預處理作為系統的一個重要模塊,是日志分析的基礎。本系統將源日志處理后直接存入MongoDB,為了加快對數據的寫入,每個Document 下子Document 數據設置為2000,每200 個Document 寫入一次。每條日志按內容結構進行切分為五個部分:設備、ip、級別、時間、消息主體。
對存儲模塊的設計采用MongoDB與NoSQL的組合方式,其中MongoDB 負責緩沖存儲采集的所有日志,NoSQL 負責存儲從MongoDB 中導出的日志數據,從而為日志分析奠定基礎。
系統采集了大量網絡設備的日志,如:身份認證、DHCP、DNS、流控等設備,系統依據這些設備日志,按業務規則對日志進行分析,可以確定出訪問者在網絡中的活動軌跡,具體實現過程的描述如圖3所示。

圖3 用戶行為軌跡分析
對日志分析結果進行再處理并可視化顯示,系統將日志分析處理后存儲在NoSQL 中,需要先將這些結果提取出來,并分析轉換為相應的可視化元素,如表格、圖、表等。例如:對目標IP 位置進行地圖展示如圖4所示。

圖4 目標IP位置地圖可視化展示
系統由一臺日志收集服務器、日志分析服務器、和日志存儲數據庫服務器構成,其中日志分析服務器在整個架構中居于中心地位。
本文完成了基于IPv6 的網絡日志分析系統的設計和實現,系統結合Syslog 協議和MongoDB 數據庫技術實現了海量日志的收集和快速處理,同時,實現了對訪問者的行為軌跡分析。
目前,本系統支持的網絡設備還不夠全面。此外,系統雖然具備一定的監測預警能力,可以第一時間報警并告知管理人員,但是提供的安全監測預警能力有限,在安全預警監測方面仍有較大提升空間。