態(tài)勢感知(Situational Awareness郑兴,SA)的概念最早在軍事領(lǐng)域被提出坐儿。20世紀(jì)80年代律胀,美國空軍就提出了態(tài)勢感知的概念,覆蓋感知(感覺)貌矿、理解和預(yù)測三個層次累铅。90年代,態(tài)勢感知的概念開始被逐漸被接受,并隨著網(wǎng)絡(luò)的興起而升級為“網(wǎng)絡(luò)態(tài)勢感知(Cyberspace Situation Awareness站叼,CSA)”,指在大規(guī)模網(wǎng)絡(luò)環(huán)境中對能夠引起網(wǎng)絡(luò)態(tài)勢發(fā)生變化的安全要素進(jìn)行獲取菇民、理解尽楔、顯示以及最近發(fā)展趨勢的順延性預(yù)測投储,而最終的目的是要進(jìn)行決策與行動。本文將圍繞以下話題討論網(wǎng)絡(luò)態(tài)勢感知中的幾個常見問題:
- 網(wǎng)絡(luò)感知的基礎(chǔ):網(wǎng)絡(luò)分層阔馋、傳感器
- 網(wǎng)絡(luò)分析技術(shù):SNMP玛荞、NetFlow、sFlow呕寝、NetStream勋眯、Packet Capturing
- 網(wǎng)絡(luò)數(shù)據(jù)可視化: WireShark、NTopng下梢、Ganglia客蹋、GeoIP
一、網(wǎng)絡(luò)感知的基礎(chǔ)
1孽江、沒有任何一個傳感器是全能的
測量一個網(wǎng)絡(luò)的一般步驟如下:首先獲得網(wǎng)絡(luò)拓?fù)鋱D讶坯,網(wǎng)絡(luò)的連接方法、潛在的觀察點(diǎn)列表等岗屏;然后確定潛在觀察點(diǎn)辆琅,確定該位置所能看到的流量;最后这刷,確定最優(yōu)的覆蓋方案婉烟。在復(fù)雜網(wǎng)絡(luò)中,沒有任何一個傳感器能夠全面覆蓋暇屋,需要多種傳感器配合使用似袁。按照采集的領(lǐng)域,傳感器可以分為三類:
- 網(wǎng)絡(luò):入侵檢測系統(tǒng)(IDS)率碾、NetFlow采集器叔营、TCP采集器(如tcpdump)
- 主機(jī):駐留在主機(jī)上,監(jiān)控主機(jī)上的活動(文件訪問所宰、登錄注銷)绒尊、網(wǎng)卡流量
- 服務(wù):郵件消息、特定服務(wù)的HTTP請求
2仔粥、網(wǎng)絡(luò)分層對傳感器的影響
總的來說婴谱,網(wǎng)絡(luò)傳感器的焦點(diǎn)是OSI模型中的第2層~第4層,而服務(wù)傳感器的焦點(diǎn)是第5層及以上躯泰。分層對網(wǎng)絡(luò)流量的影響中谭羔,還需要考慮最大傳輸單元(MTU):數(shù)據(jù)幀尺寸的上限,影響到介質(zhì)中可以傳送的封包的最大尺寸麦向,以太網(wǎng)的MTU為1500字節(jié)瘟裸,即IP封包不會超過這個尺寸。OSI模型第5層會話層需要考慮的情況是會話加密诵竭,加密后的信息無法直接理解话告;在第6層和第7層中兼搏,必須知道協(xié)議細(xì)節(jié),才能提取有意義的信息沙郭。
二佛呻、網(wǎng)絡(luò)分析技術(shù)
網(wǎng)絡(luò)流量反映了網(wǎng)絡(luò)的運(yùn)行狀態(tài),是判別網(wǎng)絡(luò)運(yùn)行是否正常的關(guān)鍵病线。如果網(wǎng)絡(luò)所接收的流量超過其實(shí)際運(yùn)載能力吓著,就會引起網(wǎng)絡(luò)性能下降。網(wǎng)絡(luò)中流量的各種參數(shù)主要包括:接收和發(fā)送數(shù)據(jù)報送挑、丟包率绑莺、數(shù)據(jù)報延遲。
1让虐、SNMP
SNMP( Simple Network Management Protocol )包含一個應(yīng)用層協(xié)議(application layer protocol)紊撕、數(shù)據(jù)庫模型(database schema),和一組數(shù)據(jù)對象赡突。SNMP的第一個RFC系列出現(xiàn)在1988年(RFC1065-1067)对扶,第二版(RFC1441–1452)作了修訂,由于第二版的新安全系統(tǒng)被認(rèn)為過于復(fù)雜而不被廣泛接受惭缰,因此出現(xiàn)了兩個方案:SNMP v2c(基于社區(qū)浪南,RFC1901–1908)、SNMP v2u(基于用戶漱受,RFC1909–1910)络凿。SNMP第三版(RFC3411-3418)主要增加了安全性方面的強(qiáng)化:信息完整性,保證數(shù)據(jù)包在發(fā)送中沒有被竄改昂羡;認(rèn)證絮记,檢驗(yàn)信息來自正確的來源;數(shù)據(jù)包加密虐先,避免被未授權(quán)的來源窺探怨愤。
基于SNMP協(xié)議定義的計(jì)數(shù)器:ifInOctets、ifOutOctets蛹批,兩次采樣的差值除以間隔時間即可獲得平均流量撰洗。需要注意的是計(jì)數(shù)器的數(shù)據(jù)類型有兩種:counter32和counter64。counter32計(jì)數(shù)的最大值是2的32次方減1腐芍,當(dāng)超過4G的時候差导,計(jì)數(shù)器就會清零。如果是大流量猪勇、高精度采樣(間隔時間低于1分鐘)设褐,需要考慮使用counter64(ifHCInOctets、ifHCOutOctets),否則可能出現(xiàn)數(shù)據(jù)偏差,例如:
snmpwalk -v 2c -c public -u username 192.168.1.10 ifHCInOctets
IF-MIB::ifHCInOctets.1 = Counter64: 5020760
IF-MIB::ifHCInOctets.2 = Counter64: 12343743
IF-MIB::ifHCInOctets.3 = Counter64: 7123
IF-MIB::ifHCInOctets.21 = Counter64: 3854
2络断、RMON
SNMP是基于TCP/IP裁替、應(yīng)用最廣泛的網(wǎng)管協(xié)議,但是也有一些明顯的不足貌笨,如:SNMP使用輪詢方式采集數(shù)據(jù)信息,在大型網(wǎng)絡(luò)中輪詢會產(chǎn)生巨大的網(wǎng)絡(luò)管理通訊報文襟沮;不支持管理進(jìn)程的分布式管理锥惋,它將收集數(shù)據(jù)的負(fù)擔(dān)加在網(wǎng)管站上,網(wǎng)絡(luò)管理站會成為瓶頸开伏;只能從這些管理信息庫中獲得單個設(shè)備的局部信息膀跌,標(biāo)準(zhǔn)管理信息庫MIB-II(RFC1213)和各廠家的專有MIB庫主要提供設(shè)備端口狀態(tài)、流量固灵、錯誤包數(shù)等數(shù)據(jù)捅伤,要想獲得一個網(wǎng)段的性能信息是比較困難。
因此IETF提出了RMON(Remote Network Monitoring巫玻,RFC2021)以解決SNMP所面臨的局限性丛忆。RMON 由 SNMP MIB 擴(kuò)展而來,網(wǎng)絡(luò)監(jiān)視數(shù)據(jù)包含了一組統(tǒng)計(jì)數(shù)據(jù)和性能指標(biāo)仍秤,它們在不同的監(jiān)視器(或稱探測器)和控制臺系統(tǒng)之間相互交換熄诡。它可以主動地監(jiān)測遠(yuǎn)程設(shè)備,對設(shè)備端口所連接的網(wǎng)段上的各種流量信息進(jìn)行跟蹤統(tǒng)計(jì)诗力,如某段時間內(nèi)某網(wǎng)段上報文總數(shù)等凰浮。只要給予探測器足夠的資源,它還可以對數(shù)據(jù)設(shè)備進(jìn)行防防性監(jiān)視苇本,設(shè)備主動地對網(wǎng)絡(luò)性能進(jìn)行診斷并記錄網(wǎng)絡(luò)性能狀況袜茧,在發(fā)生故障時可以把信息及時通知管理者,相關(guān)信息分為統(tǒng)計(jì)量瓣窄、歷史笛厦、告警、事件等四個組康栈,可以預(yù)置規(guī)則递递。
3、NetFlow vs sFlow vs NetStream
NetFlow最早由 Cisco 研發(fā)的流量匯總標(biāo)準(zhǔn)啥么,最初用于網(wǎng)絡(luò)服務(wù)計(jì)費(fèi)登舞,本意不是為了流量分析和信息安全。它通過路由器提供收集IP網(wǎng)絡(luò)流量的能力悬荣,分析的NetFlow數(shù)據(jù)(UDP packets)感知網(wǎng)絡(luò)流量和擁塞情況菠秒。NetFlow的核心概念流(Flow),NetFlow直接從 IP Packet 中復(fù)制信息,包含來源及目的地践叠、服務(wù)的種類等字段:
- Source and destination IP address
- Input and output interface number
- Source and destination port number
- Layer 4 Protocol
- Number of packets in the flow
- Total Bytes in the flow
- Time stamp in the flow
- Source and destination AS
- TCP_Flag & TOS
NetFlow vs IPFIX NetFlow 的主力實(shí)現(xiàn)版本是 v5言缤,但是 v5 主要針對 IPv4 存在很多限制,因此 Cisco 推出了基于模版的 NetFlow v9 禁灼。在NetFlow v9 的基礎(chǔ)上管挟,IETF在2008年發(fā)布了標(biāo)準(zhǔn)化的 IPFIX( Internet Protocol Flow Information eXport)(RFC5101/5102),IPFIX 提供了幾百種流字段弄捕。另外僻孝,Juniper也有一套自己的標(biāo)準(zhǔn) J-Flow 。
sFlow (Sampled Flow, 采樣流守谓,RFC3176 )是另一種一種基于報文采樣的網(wǎng)絡(luò)流量監(jiān)控技術(shù)穿铆,主要用于對網(wǎng)絡(luò)流量進(jìn)行統(tǒng)計(jì)分析。sFlow 2001年由lnMon公司提出來斋荞,目前是IEFE的一個開放標(biāo)準(zhǔn)荞雏,可提供完整的第二層到第四層、全網(wǎng)絡(luò)范圍內(nèi)的流量信息平酿。sFlow 關(guān)注的是接口的流量情況凤优、轉(zhuǎn)發(fā)情況以及設(shè)備整體運(yùn)行狀況,因此適合于網(wǎng)絡(luò)異 常監(jiān)控以及網(wǎng)絡(luò)異常定位染服,通過 Collector 可以以報表的方式將情況反應(yīng)出來别洪,特別適合于企業(yè)網(wǎng)用戶 。sFlow Agent內(nèi)嵌于網(wǎng)絡(luò)設(shè)備中柳刮,在 sFlow 系統(tǒng)中收集流量統(tǒng)計(jì)數(shù)據(jù)發(fā)送到 Collector 端供分析挖垛。
NetStream 是H3C定義的一套網(wǎng)絡(luò)流量的數(shù)據(jù)統(tǒng)計(jì)方法。它需要由特定的設(shè)備支持秉颗,首先由設(shè)備自身對網(wǎng)絡(luò)流進(jìn)行初步的統(tǒng)計(jì)分析痢毒,并把統(tǒng)計(jì)信息儲存在緩存區(qū)。值得注意的是蚕甥,NetStream(IPv6)功能需要跟華為購買License哪替,并且NetStream功能和sFlow功能不能同時在同一接口板上配置。如果接口板已經(jīng)配置sFlow功能菇怀,則不能配置NetStream功能凭舶。
綜上所述,各種 NetFlow 方案都是基于網(wǎng)絡(luò)硬件設(shè)施生成或者軟件封包為流爱沟,不同的廠商標(biāo)準(zhǔn)不同帅霜,尤其需要考慮兼容性。同時呼伸,各種機(jī)制都可能對硬件造成性能問題身冀,特別是舊的型號存在更大的風(fēng)險,一般不輕易開啟。無論是硬件(中高端設(shè)備)還是軟件(nProbe搂根、nDPI)珍促、NetStream(IPv6),都意味著昂貴的費(fèi)用剩愧,需要充分考慮成本預(yù)算猪叙。
4、NetFlow的其它替代方案
基于軟件替代路由采集隙咸,基本都是采用封包的思路沐悦,將pcap文件當(dāng)作數(shù)據(jù)源或者直接從網(wǎng)絡(luò)接口上封包,通過解析Header聚合成流格式或者更豐富的輸出五督。常見的產(chǎn)品如下:
5、協(xié)議和用戶識別
我們可以把數(shù)據(jù)包想像成一封信瓶殃。根據(jù)解析數(shù)據(jù)報報頭的內(nèi)容充包,可以分析IP地址、端口號遥椿、協(xié)議基矮、報文格式等特征,分類后可以實(shí)現(xiàn)對各種應(yīng)用層協(xié)議的準(zhǔn)確識別冠场,如P2P(迅雷)家浇、即時通信(QQ、微信)碴裙、VPN钢悲、郵件等。當(dāng)然舔株,這只能算是“淺度”的數(shù)據(jù)包檢測莺琳,就好像是看看信封上的發(fā)件人和收件人 。
“深度”的數(shù)據(jù)包檢測载慈,可以理解成對信件內(nèi)容的探查──相比起暴力打開信封惭等,這種基于機(jī)器學(xué)習(xí)的技術(shù)更具有藝術(shù)性。它并不實(shí)際解讀數(shù)據(jù)包的內(nèi)容办铡,而是搜集周邊信息辞做,對數(shù)據(jù)流進(jìn)行“肖像刻劃”(Profiling)。國內(nèi)某研究團(tuán)隊(duì)曾發(fā)表論文“網(wǎng)絡(luò)流量分類寡具,研究進(jìn)展與展望”秤茅,文章提到了多種使用機(jī)器學(xué)習(xí)進(jìn)行“深度數(shù)據(jù)包檢測”(Deep Packet Inspection,DPI)的技術(shù)晒杈。對“墻”有興趣的同學(xué)可以深入了解,http://riboseyim.github.io/2017/05/12/GFW/ 嫂伞。
三、網(wǎng)絡(luò)數(shù)據(jù)可視化
1、面向流向分析的可視化
文中開頭我們就提到測量網(wǎng)絡(luò)的第一步就是獲得網(wǎng)絡(luò)拓?fù)鋱D帖努,如果要獲得全局角度實(shí)時感知能力撰豺,需要在拓?fù)涞幕A(chǔ)之上疊加通過各種網(wǎng)絡(luò)分析技術(shù)獲得的流量/Flow/事件等信息,進(jìn)而處理分析網(wǎng)絡(luò)異常流量拼余。能夠?qū)嵱玫臄?shù)據(jù)分析具有相當(dāng)?shù)膹?fù)雜性污桦,需要專門的工具軟件,區(qū)分正常流量數(shù)據(jù)和異常流量數(shù)據(jù)匙监、對于“異常模式”的算法訓(xùn)練都有一定門檻凡橱,因此存在大量的開源和商業(yè)解決方案。
2亭姥、面向故障診斷的可視化
- 抓包工具:tcpdump稼钩、TShark、 WinDump
- 圖形化工具:wireshark(客戶端)达罗、ntopng(webUI)
- 自定義編程:R坝撑、Python(Python-Scapy)、Graphviz工具包
一個典型的故障場景:兩個服務(wù)之間發(fā)生故障粮揉、無法收發(fā)信息肛循,可以通過tcpdump的抓包丛塌,并將抓包結(jié)果在WireShark上分析,基于染色的方式通信失敗的報文被高亮提示。TCP通信中客戶端向服務(wù)端發(fā)送tcp zero window(表示沒有window可以接收新數(shù)據(jù))只怎,如果出現(xiàn)該特征一般可以確定故障是由接收端服務(wù)器TCP緩沖區(qū)占滿的引起何暮,應(yīng)將排查方向鎖定在接收端买猖。關(guān)于網(wǎng)絡(luò)數(shù)據(jù)包的捕獲询筏、過濾、分析的具體實(shí)現(xiàn)細(xì)節(jié)螃概,可以參考:Packet Capturing:關(guān)于網(wǎng)絡(luò)數(shù)據(jù)包的捕獲矫夯、過濾和分析
在企業(yè)應(yīng)用中,網(wǎng)絡(luò)監(jiān)測數(shù)據(jù)通常需要與基礎(chǔ)監(jiān)控平臺融合才能發(fā)揮最大價值(開源的方案Zabbix/Ganglia/Nagios/Graphite等)吊洼。Collectd與Ganglia是競爭關(guān)系训貌,都是C語言開發(fā),數(shù)據(jù)輸出都是RRDTool,性能應(yīng)該差不多冒窍,Collectd不包含圖形化組件递沪。zabbix是覆蓋面比較廣的綜合套件,除了采集還有告警等其它管理功能综液,專業(yè)性和大規(guī)模應(yīng)用方面可能就不太強(qiáng)款慨。Nagios在思路方面比較接近zabbix,走的是綜合性路子,側(cè)重于告警方案:“Ganglia is more concerned with gathering metrics and tracking them over time while Nagios has focused on being an alerting mechanism.” 在Ganglia項(xiàng)目中提供了一個 gmond_proxy 可以搭配 sFlow-RT 支持 NetFlow/sFlow 的數(shù)據(jù)收集谬莹,如果是自己實(shí)現(xiàn) sFlow-RT 類似的組件也需要考慮對 Logstash/splunk的支持檩奠。
開源項(xiàng)目 | 開發(fā)語言 | 定位 | 說明 |
---|---|---|---|
Collectd | C | 數(shù)據(jù)采集器 | 不包含圖形化組件 |
Ganglia | C桩了,PHP(front-end) | 數(shù)據(jù)采集器 | 包含一個Web圖形化組件 |
Zabbix | C,PHP(front-end) | Server-Client | 不包含圖形化擴(kuò)展插件 |
Nagios | C 埠戳,PHP(front-end) | Core+Plugins | 包含多種圖形化擴(kuò)展插件 |
Grafana | Go | 指標(biāo)數(shù)據(jù)的可視化展現(xiàn)板 | 需要提前對數(shù)據(jù)進(jìn)行時序化處理井誉,例如 InfluxDB 等 |
3、面向安全分析的可視化
- 流向&協(xié)議:Ntopng
- 地理位置服務(wù)整胃,根據(jù)IP地址確定改地址的物理位置信息(坐標(biāo)):MaxMind GeoIP
-
安全威脅情報服務(wù)颗圣,通過信息共享渠道了解識別攻擊者的來源、類型和安全廠商確認(rèn)情況屁使,做到知己知彼在岂。