林峰旭 劉金揚(yáng) 鄭劍 翟宜凱
摘要:隨著我國(guó)互聯(lián)網(wǎng)發(fā)展,網(wǎng)絡(luò)安全問(wèn)題日益嚴(yán)重。校園網(wǎng)出口防火墻、網(wǎng)絡(luò)行為審計(jì)等系統(tǒng)在運(yùn)行過(guò)程中產(chǎn)生海量IT日志,這些日志對(duì)高校安全管理有著重要意義。但是,校園網(wǎng)IT日志種類(lèi)繁多、數(shù)量巨大,給采集發(fā)送工作帶來(lái)很大困難。文章對(duì)校園網(wǎng)IT日志采集的難點(diǎn)進(jìn)行了分析,應(yīng)用Rsyslog到校園網(wǎng)IT日志采集,以較低的運(yùn)行成本和對(duì)現(xiàn)有應(yīng)用最小的影響,解決日志的采集和轉(zhuǎn)發(fā)問(wèn)題。
關(guān)鍵詞:Syslog;Rsyslog;日志轉(zhuǎn)發(fā);日志提取
中圖分類(lèi)號(hào):TP391????????? 文獻(xiàn)標(biāo)識(shí)碼:A
1 引言
隨著我國(guó)互聯(lián)網(wǎng)日益發(fā)展,高校信息化程度逐漸提升,各高校通過(guò)建設(shè)信息化基礎(chǔ)設(shè)施和平臺(tái)系統(tǒng)提升自己的信息化水平,隨之而來(lái)的是成倍增加的網(wǎng)絡(luò)流量。新的互聯(lián)網(wǎng)技術(shù)雖然給高校工作開(kāi)展帶來(lái)了巨大的便利,但是也產(chǎn)生了新的問(wèn)題。網(wǎng)絡(luò)攻擊、網(wǎng)絡(luò)輿情、網(wǎng)絡(luò)泄密等事件的不斷發(fā)生,給學(xué)校、社會(huì)造成了很多不利影響。
為應(yīng)對(duì)這些問(wèn)題,大多數(shù)高校均建設(shè)了校園網(wǎng)出口防火墻、網(wǎng)絡(luò)行為審計(jì)等系統(tǒng),以加強(qiáng)對(duì)互聯(lián)網(wǎng)攻擊的防御和互聯(lián)網(wǎng)內(nèi)容訪問(wèn)的管理[1-3]。這些系統(tǒng)在運(yùn)行過(guò)程中會(huì)產(chǎn)生海量的日志數(shù)據(jù),這些日志對(duì)防御外來(lái)攻擊、輿情管控和泄密行為及時(shí)發(fā)現(xiàn)有著重要作用。通過(guò)對(duì)這些IT日志的集中分析,可以及時(shí)發(fā)現(xiàn)安全事件,能在事件發(fā)生后協(xié)助追蹤溯源,且可協(xié)助用戶(hù)掌握網(wǎng)絡(luò)安全態(tài)勢(shì)[4,5]。根據(jù)《中華人民共和國(guó)網(wǎng)絡(luò)安全法》要求,網(wǎng)絡(luò)運(yùn)營(yíng)者的網(wǎng)絡(luò)日志需要留存不少于6個(gè)月。
同時(shí),隨著大數(shù)據(jù)技術(shù)的發(fā)展,IT日志分析價(jià)值也變得越來(lái)越高,其分析結(jié)果對(duì)于校園安全管理越來(lái)越重要,收集、存儲(chǔ)、運(yùn)用IT日志,已成為校園信息化建設(shè)的重要一環(huán)。
2 日志采集問(wèn)題
在高校網(wǎng)絡(luò)中,IT日志主要來(lái)自各類(lèi)網(wǎng)絡(luò)設(shè)備和信息平臺(tái),日志種類(lèi)繁多、數(shù)量巨大。同時(shí),各廠商一般都有自己的日志服務(wù)器,完成日志的收集和展示,以支持日常運(yùn)維工作。但是,這些日志平臺(tái)大部分注重短期數(shù)據(jù)的統(tǒng)計(jì)分析和展示,在日志的長(zhǎng)時(shí)間留存和大規(guī)模關(guān)聯(lián)分析方面并不擅長(zhǎng)。
為了解決這個(gè)問(wèn)題,搭建了基于Hadoop的日志平臺(tái),進(jìn)行IT日志的統(tǒng)一收集和存儲(chǔ)。
在日志采集方面,隨著工作的開(kāi)展,主要面臨兩大問(wèn)題。
(1)多需求方問(wèn)題。部分平臺(tái)和系統(tǒng)的廠商有著自己的日志平臺(tái),且其數(shù)據(jù)源無(wú)法配置多個(gè)Syslog接收端,為了在采集日志的同時(shí)不影響現(xiàn)有平臺(tái)功能,需要對(duì)日志進(jìn)行復(fù)制,分別發(fā)往不同目的平臺(tái)。
(2)日志提取問(wèn)題。對(duì)于大部分平臺(tái)和系統(tǒng),日志均可通過(guò)Syslog進(jìn)行發(fā)送,但是部分IT系統(tǒng)并不提供Syslog轉(zhuǎn)發(fā)功能,日志以文件形式存儲(chǔ)在操作系統(tǒng)中。
在日志采集領(lǐng)域,目前國(guó)內(nèi)外有許多開(kāi)源工具及解決方案。Logstash工具可從文件或Syslog等數(shù)據(jù)源獲取日志,并對(duì)日志進(jìn)行加工轉(zhuǎn)換,將處理后的日志進(jìn)行輸出,是一個(gè)功能強(qiáng)大的日志采集工具。但是,Logstash基于JVM,有著較大的運(yùn)行開(kāi)銷(xiāo)。Filebeat作為L(zhǎng)ogstash在日志提取中的替代品,是一個(gè)輕量級(jí)日志提取工具,有著更小資源占用,用于從文件中提取日志。Flume是Apache基金會(huì)的開(kāi)源項(xiàng)目,支持從文件、Syslog等多種數(shù)據(jù)源收集日志數(shù)據(jù),并發(fā)送到不同接收方。Kafka是一個(gè)開(kāi)源的流處理平臺(tái),具有高吞吐低延遲的特性,并可以對(duì)數(shù)據(jù)進(jìn)行持久化存儲(chǔ),常被用于日志轉(zhuǎn)發(fā)。
Logstash雖然可以對(duì)日志進(jìn)行轉(zhuǎn)發(fā),并且支持對(duì)Syslog日志的轉(zhuǎn)發(fā),但在日志量較大的時(shí)候存在著性能問(wèn)題。Kafka雖然有著較高的性能,但是并未提供完善的Syslog轉(zhuǎn)發(fā)功能。Logstash、Filebeat和Flume都可以用來(lái)提取應(yīng)用系統(tǒng)中的文本日志,但是均需要在數(shù)據(jù)源服務(wù)器安裝額外的軟件,這不僅會(huì)有兼容性的問(wèn)題,還可能影響應(yīng)用服務(wù)器的穩(wěn)定性。
Rsyslog是Unix和類(lèi)Unix操作系統(tǒng)上的一個(gè)開(kāi)源軟件,支持從文件和Syslog接收日志,并提供日志信息轉(zhuǎn)發(fā)功能。其實(shí)現(xiàn)了基本的Syslog協(xié)議,并對(duì)其進(jìn)行了擴(kuò)展以支持基于內(nèi)容的過(guò)濾,提供了豐富的過(guò)濾能力,并支持通過(guò)TEP和UDP協(xié)議來(lái)傳輸日志數(shù)據(jù)。主流Linux發(fā)行版,如Centos、Ubuntu和Opensuse都預(yù)裝了Rsyslog,并使用該軟件進(jìn)行各類(lèi)系統(tǒng)日志的處理。
綜合上述因素,本文基于Rsyslog實(shí)現(xiàn)校園網(wǎng)日志采集,通過(guò)應(yīng)用該工具到日志提取和日志轉(zhuǎn)發(fā)過(guò)程,解決日志采集中的轉(zhuǎn)發(fā)和提取問(wèn)題。
3 Rsyslog的應(yīng)用
3.1 Rsyslog在日志轉(zhuǎn)發(fā)中的應(yīng)用
為解決同一類(lèi)日志多個(gè)需求方的問(wèn)題,基于Rsyslog搭建了日志中轉(zhuǎn)服務(wù)器。服務(wù)器選用Centos 7作為操作系統(tǒng),該版本的操作系統(tǒng)內(nèi)置了v7或v8版本Rsyslog,可以快速搭建中轉(zhuǎn)服務(wù)。Rsyslog在v6版本引進(jìn)了高級(jí)配置(Advanced Configuration Format)[6]格式,基于高級(jí)配置格式,不僅可以更簡(jiǎn)單地完成日志復(fù)制轉(zhuǎn)發(fā),還可以實(shí)現(xiàn)清晰的復(fù)制轉(zhuǎn)發(fā)任務(wù)管理。
如圖1所示是Rsyslog日志轉(zhuǎn)發(fā)的一個(gè)典型場(chǎng)景。Rsyslog從數(shù)據(jù)源接收日志數(shù)據(jù),并轉(zhuǎn)發(fā)到多個(gè)目的端:廠商日志服務(wù)器不受日志采集工作影響,提供日志分析服務(wù);Hadoop集群作為日志存儲(chǔ)倉(cāng)庫(kù),負(fù)責(zé)日志的存儲(chǔ)和大規(guī)模關(guān)聯(lián)分析;Elasticsearch集群負(fù)責(zé)對(duì)短期內(nèi)的熱數(shù)據(jù)進(jìn)行分析和展示;同時(shí),將日志發(fā)布到Kafka集群,教學(xué)或科研團(tuán)隊(duì)可以通過(guò)訂閱的方式獲取日志,以此實(shí)現(xiàn)數(shù)據(jù)開(kāi)放。
Rsyslog配置文件示例如下:
$Actionfiledefaulttemplate Rsyslog_Forwardformat
Module(Load="Imudp")
# Rsyslog監(jiān)控日志
Module(Load="Impstats" Interval="300" Format="Cee" Severity="6")
Action(Name="Rsyslogstat" Type="Omfwd" Target="192.168.1.5" Port="9514" Protocol="Udp")
# 轉(zhuǎn)發(fā)任務(wù)A
Ruleset(Name="Rulea"){
Action(Name="A2file" Type="Omfile" File="/Var/Log/Syslog/Alog.Log")
Action(Name="A2syslog" Type="Omfwd" Target="10.0.0.5" Port="9001" Protocol="Udp")
}
Input(Type="Imudp" Port="9000" Ruleset=" Rulea")
# 轉(zhuǎn)發(fā)任務(wù)B
Ruleset(Name="Ruleb"){
Action(Name="B2syslog1" Type="Omfwd" Target="10.0.0.5" Port="9002" Protocol="Udp")
Action(Name="B2syslog2" Type="Omfwd" Target="192.168.2.5" Port="514" Protocol="Udp")
}
Input(Type="Imudp" Port="9001" Ruleset="Ruleb")
轉(zhuǎn)發(fā)任務(wù)通過(guò)Ruleset和Input兩種要素進(jìn)行組織。Input定義日志監(jiān)聽(tīng)任務(wù),通過(guò)Imudp模塊實(shí)現(xiàn)端口的監(jiān)聽(tīng)和Syslog數(shù)據(jù)的接收,并將監(jiān)聽(tīng)任務(wù)關(guān)聯(lián)到Ruleset。Ruleset部分定義日志數(shù)據(jù)的處理方式,主要包括以UDP協(xié)議轉(zhuǎn)發(fā)(基于Omfwd模塊)和存儲(chǔ)到文件(基于Omfile模塊),通過(guò)在同一個(gè)Ruleset中配置多個(gè)Action實(shí)現(xiàn)日志的復(fù)制和轉(zhuǎn)發(fā)。
基于Impstats模塊實(shí)現(xiàn)對(duì)Rsyslog運(yùn)行情況的監(jiān)控,監(jiān)控日志可通過(guò)Syslog發(fā)送到統(tǒng)一的日志服務(wù)器,以此實(shí)現(xiàn)對(duì)Rsyslog轉(zhuǎn)發(fā)服務(wù)器的集中監(jiān)控,保證日志轉(zhuǎn)發(fā)服務(wù)的穩(wěn)定運(yùn)行。日志轉(zhuǎn)發(fā)服務(wù)器基于一臺(tái)Centos 7.3虛擬機(jī),4核8Gb內(nèi)存,配置一塊千兆以太網(wǎng)卡。使用系統(tǒng)默認(rèn)的Rsyslog 7.4.7搭建日志轉(zhuǎn)發(fā)服務(wù)。截止本文成文,此服務(wù)器已承載5個(gè)系統(tǒng)8類(lèi)日志的轉(zhuǎn)發(fā)任務(wù),復(fù)制并轉(zhuǎn)發(fā)Syslog日志44.3Tb(上行)。平均下行帶寬19Mbps,上行帶寬70Mbps,每秒收發(fā)報(bào)文數(shù)超過(guò)30000,丟包率0.00039%。
3.2 Rsyslog在文件日志提取中的應(yīng)用
對(duì)于不支持Syslog日志發(fā)送的系統(tǒng),使用Rsyslog從文件中讀取日志,并通過(guò)Syslog協(xié)議進(jìn)行轉(zhuǎn)發(fā)。為了在日志提取過(guò)程中最小限度影響現(xiàn)有平臺(tái),使用應(yīng)用服務(wù)器中已有的Rsyslog進(jìn)行日志提取和發(fā)送。部分系統(tǒng)由于建設(shè)較早,Rsyslog版本還在v5或者更早的版本,只支持基本配置(Basic Configuration Format)[6]格式。因此,為了保證兼容性,使用基本配置格式實(shí)現(xiàn)日志提取功能。
基于Imfile模塊,Rsyslog可從指定文件中讀取文本數(shù)據(jù),并將其轉(zhuǎn)換為Syslog消息。文件內(nèi)容讀取通過(guò)輪詢(xún)實(shí)現(xiàn),Rsyslog通過(guò)狀態(tài)文件跟蹤被監(jiān)控文件的處理進(jìn)度,以此實(shí)現(xiàn)增量日志提取。為達(dá)到不影響現(xiàn)有Rsyslog功能的目的,需要將日志提取發(fā)送任務(wù)配置在配置文件的頭部,以免和其他配置沖突。
基于Rsyslog實(shí)現(xiàn)了Coremail系統(tǒng)日志的提取,具體配置如下:
# 讀取多個(gè)文件并轉(zhuǎn)發(fā)到同一個(gè)目的地址
$Modload Imfile
$Inputfilename /Home/Coremail/Logs/Imapsvr.Log
$Inputfiletag Imaplog
$Inputfilestatefile /Home/Coremail/Logs/Stat-Imaplog
$Inputfileseverity Info
$Inputfilefacility Local6
$Inputrunfilemonitor
$Inputfilename /Home/Coremail/Logs/Wmsvr.Log
$Inputfiletag Wmlog
$Inputfilestatefile /Home/Coremail/Logs/Stat-Wmlog
$Inputfileseverity Info
$Inputfilefacility Local6
$Inputrunfilemonitor
Local6.Info @10.0.0.5:9004
Local6.* ~
日志提取基于Imfile模塊實(shí)現(xiàn),該模塊通過(guò)輪詢(xún)實(shí)現(xiàn)日志文件內(nèi)容的獲取和對(duì)文件修改狀態(tài)的監(jiān)控,將文本日志轉(zhuǎn)換為Syslog消息。Syslog消息中的各種屬性分別由以下幾個(gè)配置項(xiàng)給出:$Inputfiletag給從文件中讀取的內(nèi)容加上標(biāo)簽;$Inputfileseverity給出日志的Severity[7]級(jí)別,一般取Info即可,也可根據(jù)日志內(nèi)容調(diào)整;$Inputfilefacility給出日志的Syslog Facility[7],從Local0-Local7[7]中任選,選取時(shí)需避免沖突。最后通過(guò)日志發(fā)送配置(Local6.Info @10.0.0.5:9004)將Syslog消息發(fā)送到遠(yuǎn)端,并在發(fā)送完成后丟棄Syslog消息(Local6.* ~),不進(jìn)行后續(xù)的處理,防止影響現(xiàn)有應(yīng)用。
在實(shí)際應(yīng)用場(chǎng)景中,使用Rsyslog監(jiān)控學(xué)校郵件系統(tǒng)的Deliveragent.Log、Pop3svr.Log、Imapsvr.Log、Wmsvr.Log四個(gè)日志文件,并分別轉(zhuǎn)發(fā)到兩臺(tái)不同的日志服務(wù)器。應(yīng)用服務(wù)器基于一臺(tái)8核心64Gb內(nèi)存的服務(wù)器。獲取了連續(xù)48小時(shí)的Rsyslog系統(tǒng)資源占用日志,并對(duì)其占用情況進(jìn)行分析:CPU占用情況如圖2所示,其CPU占用最高達(dá)到1.29%;平均內(nèi)存占用11123Kb,最高內(nèi)存占用為12556Kb。截至本文成文,此日志提取服務(wù)已從文件中讀取并發(fā)送文本日志5.5億條,郵件系統(tǒng)服務(wù)未受影響。應(yīng)用表明,Rsyslog可在基本不影響現(xiàn)有平臺(tái)的前提下,很好地完成日志的提取任務(wù)。
4 結(jié)束語(yǔ)
本文對(duì)校園網(wǎng)IT日志采集中遇到的同一日志多需求方和文件日志提取問(wèn)題進(jìn)行了分析,并通過(guò)使用Rsyslog解決這些問(wèn)題。實(shí)踐證明,通過(guò)運(yùn)用Rsyslog可以有效地解決IT日志采集的問(wèn)題,協(xié)助進(jìn)行IT日志分析,為網(wǎng)絡(luò)安全管理提供有效手段和技術(shù)支撐。
參考文獻(xiàn)
[1]?睢貴芳.防火墻技術(shù)及其在校園網(wǎng)絡(luò)安全中的應(yīng)用探究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2019(2):57-66.
[2]?張新剛,劉妍.防火墻技術(shù)及其在校園網(wǎng)絡(luò)安全中的應(yīng)用[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2006(5):19-21.
[3]?查貴庭,彭其軍,羅國(guó)富.校園網(wǎng)安全威脅及安全系統(tǒng)構(gòu)建[J].計(jì)算機(jī)應(yīng)用研究,2005(3):150-152.
[4]?李棟科.一種面向海量網(wǎng)絡(luò)審計(jì)日志的敏感用戶(hù)挖掘分析架構(gòu)[J].網(wǎng)絡(luò)空間安全,2018,9(4):84-88.
[5]?萬(wàn)欣.網(wǎng)絡(luò)日志在網(wǎng)絡(luò)信息安全中的應(yīng)用[J].網(wǎng)絡(luò)空間安全,2018,9(3):78-81.
[6] ?Rsyslog Documentation[EB\OL]. Https://www.rsyslog.com/doc/v8-stable/,2019.
[7] ?Gerhards R. Rfc 5424: The Syslog Protocol[J]. request for comments, Ietf, 2009.