現(xiàn)在很多單位都部署了基于SNMP的網(wǎng)管系統(tǒng),通過SNMP網(wǎng)管系統(tǒng)實現(xiàn)了對網(wǎng)絡(luò)設(shè)備的端口流量、設(shè)備的CPU、內(nèi)存等指標(biāo)的管理,但基于SNMP的網(wǎng)絡(luò)系統(tǒng)只能監(jiān)測設(shè)備端口的流量大小,在端口發(fā)生擁塞或出現(xiàn)P2P、病毒等異常流量時,基于SNMP的網(wǎng)管系統(tǒng)是沒辦法提供端口用戶的IP地址和流量協(xié)議分布等情況的。這樣對于持續(xù)擁塞的端口,網(wǎng)絡(luò)管理人員要帶協(xié)議分析工具到現(xiàn)場通過端口鏡像等模式來讀取端口的流量內(nèi)容來解決問題,而端口間歇流量異常的問題就很難處理。
為了解決SNMP網(wǎng)管的管理盲區(qū),我們利用Netflow提供的網(wǎng)絡(luò)流量的三層、四層信息,
完成對網(wǎng)絡(luò)流量含量的分析,與SNMP網(wǎng)管配合對網(wǎng)絡(luò)流量實現(xiàn)全面監(jiān)測。
NetFlow 的監(jiān)測應(yīng)用例子1:分支的路由資源利用狀態(tài)
這篇文章是基于利用福祿克網(wǎng)絡(luò)的NFT (NetFlow Tracker) 的功能和界面來實現(xiàn)的。您可以下載試用版,有效期到2009年6月。
首先假設(shè)我們在這個簡單的網(wǎng)絡(luò)上,把分支的路由器啟動了NetFlow,可以對互聯(lián)網(wǎng)端口(紅色)的流量進(jìn)行長期的監(jiān)測。NetFlow數(shù)據(jù)通過網(wǎng)絡(luò)送到信息中心的NetFlow采集器上。
長期監(jiān)測的好處是可以提供"正常"時的狀態(tài),我們一般稱為"基線"。我們可以看看在一周內(nèi),從分支發(fā)送到互聯(lián)網(wǎng)的流量中,有多少是連接到信息中心的。通過一些NetFlow分析軟件,可以提供NetFlow的統(tǒng)計報表:餅圖、柱狀圖、圖表等。
我們關(guān)心的數(shù)據(jù)包括:
帶寬利用率?正常的最大、平均,出現(xiàn)異常時可以有基準(zhǔn)依據(jù)分辨異常的類型。
信息中心的那些服務(wù)器利用率最多?對于規(guī)劃資源和優(yōu)化提供幫助
非信息中心的應(yīng)用為何?對于非業(yè)務(wù)流量進(jìn)一步了解/控制
如果出現(xiàn)大流量時,分辨出差異,找出流量由誰發(fā)出,到哪里?
帶寬利用率:
有一點要留意,如果只依靠NetFlow來監(jiān)測端口的利用率,是不準(zhǔn)確的,因為NetFlow只能對IP流進(jìn)行統(tǒng)計。所以最好以SNMP的數(shù)據(jù)為基礎(chǔ)。但由于現(xiàn)今的流大部分為IP流,在廣域網(wǎng)上便更少非IP流,在大部分情況下可以從NetFlow得到很好的數(shù)據(jù)?;诮y(tǒng)計,可以生成基線,作為告警的依據(jù)。
平常的應(yīng)用分布,發(fā)報源列表,對話列表?這些都是越細(xì)越長越好。
一般的NetFlow流數(shù)據(jù)都以1分鐘為輸出單位,所以NetFlow的統(tǒng)計粒度一般最少可以到1分鐘。每個分析最好可以如下的應(yīng)用報告:可以按端口利用率、字節(jié)率或包數(shù)量列出。
有多少分支的流量是與信息中心(業(yè)務(wù))進(jìn)行的:
在NetFlow數(shù)據(jù)中,所有的IP源和目標(biāo)地址都會被記錄。我們可把分支流量分成以數(shù)據(jù)中心IP地址為源或目標(biāo)的流量和其他,分別列出便可。在一些NetFlow 分析軟件,可以加入過濾條件實現(xiàn)這分析(在報告中,DataCenter代表以下子網(wǎng)范圍)。
非信息中心的應(yīng)用、用戶為何?
與找出導(dǎo)向信息中心的流量多少相反,可以先用非信息中心的方法找出流量多少。對于比較高級的NetFlow分析軟件,還可以進(jìn)一步對這流量的內(nèi)容分析
然后對這些流量列出其應(yīng)用或其他列表。從NFT,可以用(右鼠標(biāo)鍵來選這)
生成需要的應(yīng)用報告
信息中心的那些服務(wù)器利用度最多(用戶/連接/字節(jié))
在某時段,按服務(wù)器照顧的對話數(shù)量排序,方便發(fā)現(xiàn)是否有對服務(wù)器進(jìn)行端口掃描的情況。在NFT (NetFlow Tracker)有一報告(Destination Address Popularity)可以同時列出流量中各個目標(biāo)地址的用戶和連接數(shù)量。
報告和告警:
在大多數(shù)情況下,網(wǎng)管員都不希望盯著以上的報告,所以定期生成報告的能力和當(dāng)異常狀態(tài)出現(xiàn)時,最好能提供告警(通過SNMP Trap或EMAIL等方式)。告警的考慮主要是:需要基線和不要太敏感。除了手動輸入基線外,可以利用學(xué)習(xí)的平均值加上偏離標(biāo)準(zhǔn)差來定義敏感度,然后定義偏離時間的長短,來決定告警。概念是如果偏離的時間持續(xù)比較長(15分鐘)一般誤判的機會比較低!
NetFlow 的應(yīng)用例子2:數(shù)據(jù)中心的路由資源利用狀態(tài)
對于分析一個信息中心需要支持多個分支時,管理員比較關(guān)心流量由何而來,是什么,利用了數(shù)據(jù)中心什么資源。這與分析一個分支與信息中心的報告相似(請參考NetFlow應(yīng)用例子1),分別是:
1.需要同時對多路流量進(jìn)行匯總分析。由于現(xiàn)今信息中心多有備份線路或負(fù)載均衡線路,監(jiān)測流量時必須可以把多個線路的流量進(jìn)行匯總分析。
2.如果配置了流量優(yōu)先級別,各級別占用的帶寬?優(yōu)化優(yōu)先級流量帶寬分配
3.需要了解各個分支發(fā)送到總部的流量占的比例。
利用NetFlow了解流量來源出現(xiàn)的變化,首先對進(jìn)口各個端口進(jìn)行匯聚式利用率監(jiān)測。如下圖把進(jìn)口的兩個路由器的兩個進(jìn)口的流量匯聚。
個優(yōu)先級別占用的帶寬
各個分支發(fā)送到總部的流量占的比例
當(dāng)需要了解各分支的流量時,可以把分支按其子網(wǎng)進(jìn)行定義,然后分支來列出流量分布。
NetFlow 的應(yīng)用例子3:發(fā)現(xiàn)異常流量
當(dāng)出現(xiàn)異常時,需要有好的手段發(fā)現(xiàn)異常流量的出現(xiàn)和發(fā)生的端口和原因。一般NetFlow的分析,都以"量"的分析和告警為主導(dǎo)、例如對每個分支的流量監(jiān)測,各應(yīng)用的流量,高級的可以對非正常業(yè)務(wù)量監(jiān)測(例如分支與分支間的流量)。有一種新的分析方法叫內(nèi)容報警。原理是對NetFlow的應(yīng)用列表、對話列表、源和目標(biāo)地址列表的頭100名次進(jìn)行監(jiān)測,當(dāng)頭20出現(xiàn)新的的項目而不是從列表中的頭100名中升級的,便會發(fā)出告警。這樣可以發(fā)現(xiàn)應(yīng)用(異常的)、數(shù)據(jù)源占用大量帶寬時(發(fā)出DDOS,WORM等攻擊)。在配置告警時,可以增加過濾參數(shù):如所屬的分支流量,分支對分支的流量,服務(wù)器處理的流量等?,F(xiàn)在這種報警方式,在福祿克網(wǎng)絡(luò)的NFT上已提供。
例如對分支與分支間的流量分析:
在現(xiàn)今的網(wǎng)絡(luò)中,特別是基于MPLS網(wǎng)絡(luò),都可以支持點對點的備份路經(jīng),以達(dá)到災(zāi)備和自動修復(fù)的功能。為了充分利用資源,高級路由技術(shù)如Cisco的PfR可以按性能選擇路徑。換句話說,路經(jīng)可以充分利用(不會只作為災(zāi)備)。但這對網(wǎng)管員在診斷應(yīng)用性能出現(xiàn)改變時,對網(wǎng)絡(luò)路經(jīng)的理解增加了不少困難。NetFlow可以用以跟蹤每一個流的路徑狀態(tài)。
要求:
要做到這點,需要選用的NetFlow采集結(jié)構(gòu),可以對每一個流進(jìn)行記錄和保存,而且需要對所有路徑上的端口都已啟動了NetFlow。在NetFlow數(shù)據(jù)中`,所記載有流的輸出路由端口。
方法:
把網(wǎng)絡(luò)所有路由器路徑上的數(shù)據(jù)都匯總分析。然后選擇所關(guān)心的對話,列出其經(jīng)過的路由器進(jìn)和出端口。下圖展示兩個子網(wǎng)通信時,經(jīng)過的路由設(shè)備,還有其端口。
在這里,看到HQ_ROUTER_1和BRANCH_1_ROUTER_1路由器,承載192.168.51.0和192.168.53.0之間的流量,在4:23AM-6:23AM的兩小時間,各路由器只有1對端口組合用以支持這兩個分支的通信。如果在正常時,HQ_Router_1用的端口不是這個的話,應(yīng)該可以進(jìn)一步分析。例如是什么對話利用了這端口呢?應(yīng)該可以輕易抽取出這樣的報告。
可能的異常流量
1.互聯(lián)網(wǎng)地址指派機構(gòu)(Internet Assigned Numbers Authority , IANA)將下列三段IP 地址保留給私有網(wǎng)絡(luò)使用10.0.0.0~10.255.255.255、172.16.0.0~172.31.255.255 及192.168.0.0~192.168.255.255。攻擊者可利用這個缺陷偽造來源IP 地址(IP Spoofing )來發(fā)動攻擊,避免被追蹤到攻擊來源,所以我們可以從我們所接受到NetFlow 數(shù)據(jù)中來源主機所使用的IP 地址(Source IP Address)字段,找出偽造來源地址的流量,再利用NetFlow數(shù)據(jù)中信息流流入接口編號(Input IFindex)字段的信息,找出連接這個接口的上游路由器,請他們協(xié)助調(diào)查或處理。
3.若某個Flow 正常地建立TCP 連接后,其數(shù)據(jù)包控制(TCP Flag) 字段會記錄的包含ACK、SYN、FIN 等控制標(biāo)志,但是如果蠕蟲進(jìn)行感染的動作時,由于隨機選取的主機并不一定存在,或是即使存在但目標(biāo)主機沒有開放蠕蟲所要感染的TCP port,在這種情況下,NetFlow 信息中由受感染主機對外聯(lián)機所產(chǎn)生的Flow 數(shù)據(jù)包控制標(biāo)志(TCP Flag) 字段會只存在SYN 這個TCP 控制標(biāo)志,根據(jù)這種特性網(wǎng)絡(luò)管理者可以先將其NetFlow 數(shù)據(jù)中數(shù)據(jù)包控制標(biāo)志(TCP Flag)字段只有存在SYN 控制標(biāo)志的Flow 數(shù)據(jù)過濾出來,通過這種方式我們可以把大部分正常的流量排除,這時候我們要從可疑的數(shù)據(jù)中找出真正異常流量的難度就會降低許多,能快速找出問題,也可以避免運算資源無謂的浪費。
NetFlow 的應(yīng)用例子6:找出丟包的位置
背景:
在一個關(guān)鍵的應(yīng)用中,需要能保證UDP的數(shù)據(jù)傳遞。其中在兩端的路由器相隔5-6公里,每端有20-30臺工作站進(jìn)行通信。在每次通信的1、2分鐘的過程中,需要保證不出現(xiàn)丟包。 在調(diào)試時,如果出現(xiàn)丟包,需要知道丟包出處,加以修正。
方法:
1.打開兩端的路由交換機個端口的NetFlow功能,向NetFlow采集器發(fā)送數(shù)據(jù)。
4.把在每一次調(diào)試時的整個過程,在各層的流量記錄起來。
5.通過對話列表,把兩端站點的所有對話列出(如下圖)
6.利用CSV格式輸出數(shù)據(jù),按源和目標(biāo)地址來排序
7.把四層的數(shù)據(jù)(包和字節(jié)數(shù))按行來對比 (通過對減,發(fā)現(xiàn)不是0的行)。至此,便可知道問題出于那層。
8.把出現(xiàn)問題的對話記錄,當(dāng)發(fā)現(xiàn)出問題的對話后,可以查出經(jīng)過的端口
9.如果用NFT (NetFlow Tracker),更可以對每層就這對話列出作進(jìn)行過的交易,對每層進(jìn)行比較,找出出問題交易的時間(利用查出對話的方式來查找)。這樣,按照對話的順序,應(yīng)用部門甚至知道是在哪個環(huán)節(jié)出現(xiàn)問題。
NetFlow 的應(yīng)用例子7:分析ICMP數(shù)據(jù)
某些蠕蟲或網(wǎng)絡(luò)攻擊也會利用ICMP 來進(jìn)行,我們可以從NetFlow數(shù)據(jù)中過濾出有異常行為的主機。
概念:
首先找出通訊協(xié)議(protocol) 字段值為1 的Flow,代表所使用的通訊協(xié)議為ICMP,再根據(jù)目的主機之端口號(destination TCP/UDP port)字段值分析出所代表的ICMP 訊息,例如目的主機之端口號(destination TCP/UDP port)字段值為2048,轉(zhuǎn)化成八進(jìn)位為800,第一位代表位數(shù)字代表的是ICMP 的類型,后兩碼為這個ICMP 類型中的編碼,整體的意思是ICMP echo 請求;但如果字段值為769,轉(zhuǎn)化為八進(jìn)位則為301,這個編碼代表的是ICMP host unreachable;如果字段值是771則代表ICMP port unreachable;字段值是768 則代表ICMP network unreachable。我們可以先找出所使用通訊協(xié)議為ICMP 的Flow,進(jìn)一步過濾出其中目的主機所使用端口號為768、769、771 的Flow,再進(jìn)一步分析找出可能的異常行為。通過這種方式從大量NetFlow 數(shù)據(jù)中過濾出可疑名單,再對名單內(nèi)的Flow 數(shù)據(jù)進(jìn)行進(jìn)一步的分析,這樣可以幫助網(wǎng)絡(luò)管理者快速找出問題所在。
NetFlow 的應(yīng)用例子8:流的辯證
NetFlow可以用以記錄每一個用戶/IP站點的行為。在高級的NetFlow采集系統(tǒng),如福祿克網(wǎng)絡(luò)的NFT (NetFlow Tracker), 他能長期記錄所有的NetFlow和其所有的數(shù)據(jù),包括最新的IPFIX/Cisco NetFlow V9。這不同于大部分NetFlow軟件只保留一部分而且只是TOP N的數(shù)據(jù)。
要求:
對每一個用戶的流長期保存所有的NetFlow數(shù)據(jù),包括:
流的開始、終止時間
應(yīng)用
記錄的設(shè)備和流貫穿得端口
流的TCP Flag的標(biāo)識
流量:包、字節(jié)數(shù)
TOS/Diffserv
AS / BGP next hop
功用:
當(dāng)發(fā)現(xiàn)可疑流,例如一個用戶得Session或數(shù)據(jù)數(shù)量異常過多,可以對這用戶在出現(xiàn)異常時有關(guān)的流羅列出,審查其行為:能發(fā)現(xiàn)SYN攻擊,端口掃描,海量下載, ICMP攻擊。。。和其行為經(jīng)過的端口路徑。
計算用戶的VoIP對話流的時間(通過對流得VoIP RTP源端口的過濾)
用戶和服務(wù)器請求服務(wù)時,TCP連接得成功率。(通過審查流的TCP標(biāo)識,是否有SYN+RST, 或只有SYN等狀態(tài)。 像福祿克網(wǎng)絡(luò)的NFT可以過濾TCP標(biāo)識,更方便查找這些狀態(tài))
服務(wù)器在某時間段的流有多少還沒有終結(jié)。(沒有FIN的流的統(tǒng)計).