隨著各種網(wǎng)絡(luò)應(yīng)用迅速增加,由此帶來了網(wǎng)絡(luò)流量的激增。在這些流量中,網(wǎng)絡(luò)用戶的上網(wǎng)行為如何管理?各種類型的流量如何分布?在這種情況下,可以使用NetFlow這一有效工具以滿足對網(wǎng)絡(luò)流量管理的需求。
NetFlow最初是由Cisco開發(fā)的,由于使用廣泛,目前很多廠家都可以實現(xiàn),如:Juniper、Extreme、Foundry、H3C等。Cisco的NetFlow也有多種版本,如V5、V7、V8、V9。目前NetFlow V5是主流。因此本文主要針對NetFlow V5,該版本數(shù)據(jù)包中的基本元素包含哪些內(nèi)容呢?首先從Flow講起,一個IP數(shù)據(jù)包的Flow至少定義了下面7個關(guān)鍵元素:
源IP地址;
目的IP地址;
源端口號;
目的端口號;
第三層協(xié)議的類型;
TOS字段;
網(wǎng)絡(luò)設(shè)備輸入/輸出的邏輯端口(if index)
以上7個字段定義了一個基本的Flow信息。 Netflow就是利用分析IP數(shù)據(jù)包的上述7種屬性,快速區(qū)分網(wǎng)絡(luò)中傳送的各種類型的業(yè)務(wù)數(shù)據(jù)流。
1. Cache管理
在NetFlow中有兩個關(guān)鍵組件:
(1) NetFlow Cache,主要描述流緩存(或者說源數(shù)據(jù))如何存放在Cache中。
NetFlow緩存管理機制中包含一系列高度精細化算法,能夠有效地判斷一個報文是屬于已存在Flow的一部分還是應(yīng)該在緩存中產(chǎn)生一條新的Flow。這些算法也能動態(tài)更新緩存中Flow的信息,并且判斷哪些Flow應(yīng)該到期終止。
(2) NetFlow Export,數(shù)據(jù)流的輸出機制,主要描述了數(shù)據(jù)流是如何輸出并被分析器接收的。
首先了解NetFlow Cache(緩存機制)。當緩存中的Flow到期后,就產(chǎn)生一個將Flow輸出的動作。將超時的Flow信息以數(shù)據(jù)報文的方式輸出,叫做“NetFlow Export”,這些輸出的報文包含30條以上的Flow信息。這些NetFlow信息一般是無法識別的,需由專用收集器(Flow Collector)采集到并做出進一步分析,這些Flow Collector能夠識別NetFlow的特殊格式。
2.輸出格式
NetFlow的輸出報文包含報頭和一系列的Flow流,報頭包含系列號、記錄數(shù)、系統(tǒng)時間等,F(xiàn)low流包含具體內(nèi)容,如IP地址、端口、路由信息等。各個版本的NetFlow格式都相同,且NetFlow采用UDP報文,這更有利于大流量情況下的數(shù)據(jù)報文傳輸。換句話說,在路由器,防火墻等網(wǎng)絡(luò)設(shè)備中如要使用NetFlow就不能禁用UDP端口,否則無法接收設(shè)備傳遞的信息。
3 .抽樣機制
在Netflow的實際應(yīng)用中,它不是時刻都把數(shù)據(jù)包抓取過來,而是采用抽樣的機制,通過使用抽樣技術(shù)可以降低路由器的CPU利用率,減少Flow的輸出量,但仍然可以監(jiān)測到大多數(shù)的流量信息。當我們不需要了解網(wǎng)絡(luò)流量的每個Flow的具體細節(jié)的時候,抽樣就成了比較好的選擇。但流量計費系統(tǒng)采用NetFlow會造成誤差,使得NetFlow輸出有時不能準確反映流量的實際情況。這時如果你的流量計費系統(tǒng)選用Netflow就不太合適了。
4.性能影響
使用任何一種技術(shù)作為工程師最應(yīng)該關(guān)注它的性能問題。由于在設(shè)備緩存中Flow的生成,需要消耗系統(tǒng)資源同樣,將Flow格式化成特定的輸出報文并將報文輸出,也是要消耗系統(tǒng)資源,因此在設(shè)備上使用NetFlow時,肯定就會影響設(shè)備性能。由于高端Cisco設(shè)備(如6500、7600系列等)都是通過ASIC硬件處理數(shù)據(jù)包,所以占用10%~20%利用率均屬正常。注意,在使用中CPU的利用率會隨著緩存中Flow條目的增大而增加,所以在高負載情況下,一定要慎用Netflow功能。
5.在蠕蟲病毒監(jiān)測中的舉例
前些年Code Red、SQL Slammer、沖擊波、振蕩波等蠕蟲病毒的相繼爆發(fā),不但對用戶主機造成影響,而且對網(wǎng)絡(luò)的正常運行也構(gòu)成了的危害,因為這些病毒具有掃描網(wǎng)絡(luò),主動傳播病毒的能力,會大量占用網(wǎng)絡(luò)帶寬或網(wǎng)絡(luò)設(shè)備系統(tǒng)資源。這些蠕蟲在網(wǎng)絡(luò)行為上都有某些共同特征,我們可以利用NetFlow的信息篩選出這些數(shù)據(jù)包,從而快速發(fā)現(xiàn)問題。
例1:CodeRed的Flow特征是destination port=80,、packets=3、size=144bytes。雖然在Internet上,符合上述特性的正常行為是存在的(如使用ICQ),但是一般正常使用的主機不會在連續(xù)幾段時間內(nèi)發(fā)出大量的這些報文。
因此監(jiān)測CodeRed 可采用的方法是:取幾個不同時間段,例如每段時間5分鐘,如果每個時間段內(nèi)符合特征的Flow大于上限值,則可以判斷為Code Red。
例2:感染了Nimda病毒的主機會向外部地址(往往是TCP 80端口)發(fā)起大量連接,Nimda的Flow特征是每個Flow代表一次連接destination port=80的行為,如果普通的客戶機在一段時間內(nèi)(例如5分鐘)Flow數(shù)量過大,那么很有可能遭受病毒感染或者有其他針對HTTP的攻擊行為。
因此監(jiān)測Nimda可采用的策略是:取幾個不同時間段,每段時間5分鐘,如果每個時間段內(nèi)符合特征的Flow超過上限值,則可以判斷為Nimda病毒或其他攻擊行為。另外,如果Apache Http Server感染了Slapper Worm的話,也會產(chǎn)生大量的Http報文。
例3:震蕩波(Worm.Sasser)的特征是一個IP同時向隨機生成的多個IP發(fā)起445端口的TCP連接。因此檢測條件是:相同源IP,大量不同目的IP,目的端口為445,當符合的Flow達到上限值時,則可以認定是振蕩波病毒。
例4:幾年前臭名昭著的微軟SQL-Server漏洞造成了很大的影響,它的特征是目的端口為1433的TCP流。表13-2是根據(jù)此條件篩選出的NetFlow統(tǒng)計數(shù)據(jù),可以得知IP地址66.190.144.166正在對某網(wǎng)段進行SQL漏洞掃描。
表1 篩選的NetFlow數(shù)據(jù)
例5:用NetFlow分析DOS攻擊流量
DOS攻擊使用非正常的數(shù)據(jù)流量攻擊網(wǎng)絡(luò)設(shè)備或其接入的服務(wù)器,致使網(wǎng)絡(luò)設(shè)備或服務(wù)器的性能下降,或占用網(wǎng)絡(luò)帶寬,影響其他相關(guān)用戶流量的正常通信,最終可能導致網(wǎng)絡(luò)服務(wù)不可用。例如DOS可以利用TCP協(xié)議的缺陷,通過SYN打開半開的TCP連接,占用系統(tǒng)資源,使合法用戶被排斥而不能建立正常的TCP連接。以下為一個典型的DoS SYN攻擊的NetFlow數(shù)據(jù)實例,該案例中多個偽造的源IP同時向一個目的IP發(fā)起TCP SYN攻擊。
111.*.68.35|202.*.*.80|Others|64851|3|2|10000|10000|6|1|40|1
105.*.93.91|202.*.*.80|Others|64851|3|2|5557|5928|6|1|40|1
158.*.25.208|202.*.*.80|Others|64851|3|2|3330|10000|6|1|40|1
日常工作中發(fā)現(xiàn),除了遇到DOS 以外還有許多攻擊屬于DDOS攻擊,只不過攻擊類別不同,有些為Ping Death,另一些則為SYN Flooding。
DDOS攻擊基本上都造成這樣一種結(jié)果:服務(wù)器無法處理源源不斷如潮水般涌來的請求,從而造成響應(yīng)遲緩,直至系統(tǒng)資源耗盡而宕機。DDOS攻擊的共同點是來源廣泛,針對一臺主機,大量數(shù)據(jù)包。
因此檢測ICMP攻擊就可以根據(jù)下面的條件:在連續(xù)的幾個時間段,假設(shè)每個時間段為5分鐘,各個時間段內(nèi)ICMP報文大于5000。符合這個條件的,可以認為受到了ICMP攻擊。
下面是ICMP流的NetFlow實例。
另外,還有一種DDOS攻擊是SYN flooding,它的特征是TCP報頭中的SYN被置位,且有大量的SYN特征數(shù)據(jù)包。NetFlow輸出格式中提供了Flag位,為我們判斷SYN攻擊創(chuàng)造了條件。
因此檢測SYN flooding的條件是:在連續(xù)的幾個時間段,假設(shè)每個時間段為5分鐘,產(chǎn)生大量flag=2的數(shù)據(jù)包,正常連接不會產(chǎn)生這么多flag=2的數(shù)據(jù)包,所以可以設(shè)置閾值為5000。超過這個數(shù)值就認為服務(wù)器受到SYN flooding攻擊。如果主機發(fā)出flag=2的數(shù)據(jù)包數(shù)量超過1000,則可以認為主機在發(fā)起攻擊。以下是SYN特征的NetFlow實例。
各種DDOS攻擊的特征都是在短時間內(nèi)產(chǎn)生大量的數(shù)據(jù)包,因此,即使不知道攻擊報文的特征,也可以在NetFlow的輸出結(jié)果中進行相應(yīng)的查找,找到符合條件的異常Flow。這就為及時發(fā)現(xiàn)和防范網(wǎng)絡(luò)上的不安全因素提供了有效的手段。
案例6:NetFlow在網(wǎng)絡(luò)取證方面的應(yīng)用
假設(shè)圖1中的ADSL撥號用戶從Internet上某FTP服務(wù)器上下載了可疑文件,在客戶端PC上留有下載日期時間戳信息,在局端的接入服務(wù)器上也可以看到特定IP地址在相應(yīng)時間內(nèi)被分配給客戶端PC,通過在ISP方面的ANI(Automatic Number Identification)日志就能將客戶端的所在家庭電話號碼與上網(wǎng)撥號信息聯(lián)系到一起,與此同時,在ISP的路由器上記錄(一般會保留30天左右)著FTP下載/上傳網(wǎng)絡(luò)流量(NetFlow)日志,這個流量至關(guān)重要。最后在Ftp服務(wù)器上還有完整的下載記錄。
圖 1 分析下載可疑文件
由上圖可以看出,從客戶端發(fā)起連接到FTP服務(wù)器下載分為四個階段,分別是客戶端發(fā)送/接受、接入服務(wù)器驗證、路由器轉(zhuǎn)發(fā)及FTP服務(wù)器接受下載,每個階段都有日志記錄信息包含用戶賬號、登錄時間、IP、端口、發(fā)送數(shù)據(jù)包大小及日期及時間戳等。這些日志信息分別存放在不同的設(shè)備上,即便是某些日志遭到了一定程度破壞(例如篡改IP,丟失了某些日志等)也不會影響全局,所以這些相關(guān)信息,在調(diào)查人員進行計算機網(wǎng)絡(luò)取證時就顯得尤為重要,希望引起管理人員重視。
在某些情況下,設(shè)備不支持Netflow,怎么對流量進行檢測呢?對于這樣的環(huán)境也有相應(yīng)的解決方法,那就是使用Fprobe。利用Fprobe來生成Netflow報文,其默認格式為V5版本。最初Fprobe是一款在BSD環(huán)境下運行的軟件,目前在UNIX/Linux平臺上均可運行。它可以將NIC接口收到的數(shù)據(jù)轉(zhuǎn)化為Netflow數(shù)據(jù),并發(fā)送至Netflow分析端。我們可以通過部署這樣一臺Ossim服務(wù)器,將網(wǎng)絡(luò)流量鏡像至Ossim服務(wù)器,實現(xiàn)網(wǎng)絡(luò)流量分析。Ossim服務(wù)器中的Netflow分析器,由下列三個工具組成:
Fprobe: 從遠程主機發(fā)送數(shù)據(jù)流;
NfSen: NetFlow的分析圖形前端;
Nfdump: NetFlow采集模塊;
有關(guān)Ossim結(jié)構(gòu)大家可以先參看本書第14章,這里介紹Netflow分析數(shù)據(jù)包的過程。首先,在網(wǎng)絡(luò)接口接收網(wǎng)絡(luò)數(shù)據(jù),然后由Fprobe程序?qū)⑹占臄?shù)據(jù)按照一定規(guī)則和格式進行轉(zhuǎn)換(Netflow格式),再發(fā)到系統(tǒng)的555端口(查看/etc/default/fprobe能得知詳情),再由Nfsen系統(tǒng)中的Nfdump程序?qū)⑥D(zhuǎn)換后的數(shù)據(jù)統(tǒng)一存放在/var/cache/nfdump/flows/目錄下,最后由Web前端程序Nfsen來讀取,數(shù)據(jù)通過555端口接收,同時結(jié)果會顯示在前臺Web界面上(在Ossim系統(tǒng)中路徑為Situational Awareness→Network→Traffic,顯示效果在Ossim右側(cè)導航欄里可以查看),分析Netflow過程如圖2所示。
圖 2 Ossim系統(tǒng)分析Netflow數(shù)據(jù)
在Ossim4.1系統(tǒng)中查詢 Netflow流量如圖13-3所示。
圖 3 Netflow流量源端口Top 10
在Ossim 4.1系統(tǒng)中由Netflow收集的數(shù)據(jù)放置在/var/cache/nfdump/flows/live/ossim/目錄下,并存儲為二進制文件格式,以天為單位分別設(shè)置目錄,方便查看。這些數(shù)據(jù)按照一定的時間組織起來,每5分鐘采集一次數(shù)據(jù),同時由nfcapd產(chǎn)生新的文件,并用當前時間來命名,例如nfcapd.2013053112035包含的數(shù)據(jù)是從2013年5月31日12小時35分鐘開始的數(shù)據(jù)。
圖 4 nfcapd產(chǎn)生的數(shù)據(jù)
從系統(tǒng)捕獲數(shù)據(jù)包的過程來看Nfdump這一過程至關(guān)重要,它由nfcpad、fddump、nfprofile和nfreplay這4個進程組成,功能見表2所示。
表2 nfdump工具組成
6.分布式環(huán)境數(shù)據(jù)流處理
本節(jié)內(nèi)容是對上述知識點的總結(jié),下面這個實驗在一個模擬的分布式環(huán)境中完成,其中有一臺混合安裝的Ossim USM,兩臺Sensor,三臺接入層交換機和一臺核心交換機以及若干PC組成,為簡化實驗這些設(shè)備均在同一個VLAN中,實際生產(chǎn)中應(yīng)在多個VLAN。拓撲如圖5所示。
圖5 Ossim分布式部署
第2章講解了如何添加Sensor,并與Server進行連接,下面接著啟用Netflow服務(wù),交換機上Netflow也必須同時設(shè)置正確,注意nfcapd進程在12000和120001端口進行監(jiān)聽。各主機IP、UUID及端口如表3所示。
表3 Ossim服務(wù)器傳感器配置
前面已經(jīng)講過查看UUID的方法下面依次在終端下輸入如下命令:
所有數(shù)據(jù)存儲在Ossim Server端,所以我們到Server命令行下輸入以下命令進行驗證:
為了確保在SensorA、SensorB和Sensor上都能展現(xiàn)其Netflow數(shù)據(jù)要確保nfsen都收到數(shù)據(jù),我們在Ossim Server的終端控制臺下,操作以下命令
接著觀察目錄的內(nèi)容,我們進入目錄564db4303295cb66ae8a8141c00f6233,在該目錄下有若干Pcap格式的文件,每隔5分鐘生成一個,每個文件大小在500KB~1000KB(大小并不固定),每天會產(chǎn)生100~200MB的抓包文件。
如果在實驗中發(fā)現(xiàn)沒有收到Sensor數(shù)據(jù)包,首先檢查設(shè)置是否正確,接下來用tcpdump來抓包分析,具體抓包操作如下圖所示。
或tcpdump -i eth0 ‘port 12001’ 。
通過nfdump可以實現(xiàn)Netflow記錄的過濾、Top統(tǒng)計和排序等功能,在Ossim通過Web UI能輕松的展現(xiàn)給用戶,如圖6所示。
圖6 Netflow多傳感器顯示
作為系統(tǒng)維護人員需要了解后臺執(zhí)行的命令,例如我們進入2015-05-01目錄,對其數(shù)據(jù)包按端口排序輸入命令nfdump –r nfcapd.201505010315 –s dstport –n 10
又如
7.交換機上配置
下面歸納一下實施流量監(jiān)控的步驟(以Cisco 6000系列交換機為例):
1) 在Cisco 6509上配置NetFlow(或其他網(wǎng)絡(luò)設(shè)備),并輸出到指定到Ossim采集器(IP)的固定UDP端口。
2) 采集器軟件為Ossim系統(tǒng)的Flow-tool工具,該軟件監(jiān)聽UDP端口,接收進入的NetFlow數(shù)據(jù)包并存儲為特定格式。
3) 使用Nfsen等軟件包中的工具對NetFlow源文件進行讀取,轉(zhuǎn)換成可讀的ASICII格式,再用Ossim內(nèi)的Perl程序?qū)etFlow進行分析和規(guī)范格式的操作,并將讀取的NetFlow信息存儲入Ossim數(shù)據(jù)庫中。
4) 依據(jù)蠕蟲和DDOS攻擊等異常報文的流量特征,在分析程序中預設(shè)各種觸發(fā)條件,定時運行,從中發(fā)現(xiàn)滿足這些條件的Flow。
5) 將分析結(jié)果在Web客戶端中展示,或者通過E-mail、短信等接口發(fā)送。也可以通過與設(shè)備聯(lián)動的方式,采用ACL對設(shè)備進行自動配置,等攻擊流消退后再自動取消ACL。
除了OSSIM之外,還有些商業(yè)軟件都提供了很好的分析工具,例如Solarwinds NetFlow Traffic Analysis 和Manage Engine NetFlow Analyzer這兩款軟件如圖7所示,它們都是不錯的選擇。
圖7 Manage Engine NetFlow Analyzer