天天看點

實用教程:使用Netflow分析網絡異常流量

随着各種網絡應用迅速增加,由此帶來了網絡流量的激增。在這些流量中,網絡使用者的上網行為如何管理?各種類型的流量如何分布?在這種情況下,可以使用netflow這一有效工具以滿足對網絡流量管理的需求。

實用教程:使用Netflow分析網絡異常流量

netflow最初是由cisco開發的,由于使用廣泛,目前很多廠家都可以實作,如:juniper、extreme、foundry、h3c等。cisco的netflow也有多種版本,如v5、v7、v8、v9。目前netflow v5是主流。是以本文主要針對netflow v5,該版本資料包中的基本元素包含哪些内容呢?首先從flow講起,一個ip資料包的flow至少定義了下面7個關鍵元素:

源ip位址;

目的ip位址;

源端口号;

目的端口号;

第三層協定的類型;

tos字段;

網絡裝置輸入/輸出的邏輯端口(if index)

以上7個字段定義了一個基本的flow資訊。 netflow就是利用分析ip資料包的上述7種屬性,快速區分網絡中傳送的各種類型的業務資料流。

1. cache管理

在netflow中有兩個關鍵元件:

(1) netflow cache,主要描述流緩存(或者說源資料)如何存放在cache中。

netflow緩存管理機制中包含一系列高度精細化算法,能夠有效地判斷一個封包是屬于已存在flow的一部分還是應該在緩存中産生一條新的flow。這些算法也能動态更新緩存中flow的資訊,并且判斷哪些flow應該到期終止。

(2) netflow export,資料流的輸出機制,主要描述了資料流是如何輸出并被分析器接收的。

首先了解netflow cache(緩存機制)。當緩存中的flow到期後,就産生一個将flow輸出的動作。将逾時的flow資訊以資料封包的方式輸出,叫做“netflow export”,這些輸出的封包包含30條以上的flow資訊。這些netflow資訊一般是無法識别的,需由專用收集器(flow collector)采集到并做出進一步分析,這些flow collector能夠識别netflow的特殊格式。

2.輸出格式

netflow的輸出封包包含報頭和一系列的flow流,報頭包含系列号、記錄數、系統時間等,flow流包含具體内容,如ip位址、端口、路由資訊等。各個版本的netflow格式都相同,且netflow采用udp封包,這更有利于大流量情況下的資料封包傳輸。換句話說,在路由器,防火牆等網絡裝置中如要使用netflow就不能禁用udp端口,否則無法接收裝置傳遞的資訊。

3 .抽樣機制

在netflow的實際應用中,它不是時刻都把資料包抓取過來,而是采用抽樣的機制,通過使用抽樣技術可以降低路由器的cpu使用率,減少flow的輸出量,但仍然可以監測到大多數的流量資訊。當我們不需要了解網絡流量的每個flow的具體細節的時候,抽樣就成了比較好的選擇。但流量計費系統采用netflow會造成誤差,使得netflow輸出有時不能準确反映流量的實際情況。這時如果你的流量計費系統選用netflow就不太合适了。

4.性能影響

使用任何一種技術作為工程師最應該關注它的性能問題。由于在裝置緩存中flow的生成,需要消耗系統資源同樣,将flow格式化成特定的輸出封包并将封包輸出,也是要消耗系統資源,是以在裝置上使用netflow時,肯定就會影響裝置性能。由于高端cisco裝置(如6500、7600系列等)都是通過asic硬體處理資料包,是以占用10%~20%使用率均屬正常。注意,在使用中cpu的使用率會随着緩存中flow條目的增大而增加,是以在高負載情況下,一定要慎用netflow功能。

5.在蠕蟲病毒監測中的舉例

前些年code red、sql slammer、沖擊波、振蕩波等蠕蟲病毒的相繼爆發,不但對使用者主機造成影響,而且對網絡的正常運作也構成了的危害,因為這些病毒具有掃描網絡,主動傳播病毒的能力,會大量占用網絡帶寬或網絡裝置系統資源。這些蠕蟲在網絡行為上都有某些共同特征,我們可以利用netflow的資訊篩選出這些資料包,進而快速發現問題。

例1:codered的flow特征是destination port=80,、packets=3、size=144bytes。雖然在internet上,符合上述特性的正常行為是存在的(如使用icq),但是一般正常使用的主機不會在連續幾段時間内發出大量的這些封包。

是以監測codered 可采用的方法是:取幾個不同時間段,例如每段時間5分鐘,如果每個時間段内符合特征的flow大于上限值,則可以判斷為code red。

例2:感染了nimda病毒的主機會向外部位址(往往是tcp 80端口)發起大量連接配接,nimda的flow特征是每個flow代表一次連接配接destination port=80的行為,如果普通的客戶機在一段時間内(例如5分鐘)flow數量過大,那麼很有可能遭受病毒感染或者有其他針對http的攻擊行為。

是以監測nimda可采用的政策是:取幾個不同時間段,每段時間5分鐘,如果每個時間段内符合特征的flow超過上限值,則可以判斷為nimda病毒或其他攻擊行為。另外,如果apache http server感染了slapper worm的話,也會産生大量的http封包。

例3:震蕩波(worm.sasser)的特征是一個ip同時向随機生成的多個ip發起445端口的tcp連接配接。是以檢測條件是:相同源ip,大量不同目的ip,目的端口為445,當符合的flow達到上限值時,則可以認定是振蕩波病毒。

例4:幾年前臭名昭著的微軟sql-server漏洞造成了很大的影響,它的特征是目的端口為1433的tcp流。表13-2是根據此條件篩選出的netflow統計資料,可以得知ip位址66.190.144.166正在對某網段進行sql漏洞掃描。

表1 篩選的netflow資料

實用教程:使用Netflow分析網絡異常流量

  例5:用netflow分析dos攻擊流量

dos攻擊使用非正常的資料流量攻擊網絡裝置或其接入的伺服器,緻使網絡裝置或伺服器的性能下降,或占用網絡帶寬,影響其他相關使用者流量的正常通信,最終可能導緻網絡服務不可用。例如dos可以利用tcp協定的缺陷,通過syn打開半開的tcp連接配接,占用系統資源,使合法使用者被排斥而不能建立正常的tcp連接配接。以下為一個典型的dos syn攻擊的netflow資料執行個體,該案例中多個僞造的源ip同時向一個目的ip發起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

日常工作中發現,除了遇到dos 以外還有許多攻擊屬于ddos攻擊,隻不過攻擊類别不同,有些為ping death,另一些則為syn flooding。

ddos攻擊基本上都造成這樣一種結果:伺服器無法處理源源不斷如潮水般湧來的請求,進而造成響應遲緩,直至系統資源耗盡而當機。ddos攻擊的共同點是來源廣泛,針對一台主機,大量資料包。

是以檢測icmp攻擊就可以根據下面的條件:在連續的幾個時間段,假設每個時間段為5分鐘,各個時間段内icmp封包大于5000。符合這個條件的,可以認為受到了icmp攻擊。

下面是icmp流的netflow執行個體。

實用教程:使用Netflow分析網絡異常流量

另外,還有一種ddos攻擊是syn flooding,它的特征是tcp報頭中的syn被置位,且有大量的syn特征資料包。netflow輸出格式中提供了flag位,為我們判斷syn攻擊創造了條件。

是以檢測syn flooding的條件是:在連續的幾個時間段,假設每個時間段為5分鐘,産生大量flag=2的資料包,正常連接配接不會産生這麼多flag=2的資料包,是以可以設定門檻值為5000。超過這個數值就認為伺服器受到syn flooding攻擊。如果主機發出flag=2的資料包數量超過1000,則可以認為主機在發起攻擊。以下是syn特征的netflow執行個體。

實用教程:使用Netflow分析網絡異常流量

各種ddos攻擊的特征都是在短時間内産生大量的資料包,是以,即使不知道攻擊封包的特征,也可以在netflow的輸出結果中進行相應的查找,找到符合條件的異常flow。這就為及時發現和防範網絡上的不安全因素提供了有效的手段。

案例6:netflow在網絡驗證方面的應用

假設圖1中的adsl撥号使用者從internet上某ftp伺服器上下載下傳了可疑檔案,在用戶端pc上留有下載下傳日期時間戳資訊,在局端的接入伺服器上也可以看到特定ip位址在相應時間内被配置設定給用戶端pc,通過在isp方面的ani(automatic number identification)日志就能将用戶端的所在家庭電話号碼與上網撥号資訊聯系到一起,與此同時,在isp的路由器上記錄(一般會保留30天左右)着ftp下載下傳/上傳網絡流量(netflow)日志,這個流量至關重要。最後在ftp伺服器上還有完整的下載下傳記錄。

實用教程:使用Netflow分析網絡異常流量

  圖 1 分析下載下傳可疑檔案

由上圖可以看出,從用戶端發起連接配接到ftp伺服器下載下傳分為四個階段,分别是用戶端發送/接受、接入伺服器驗證、路由器轉發及ftp伺服器接受下載下傳,每個階段都有日志記錄資訊包含使用者賬号、登入時間、ip、端口、發送資料包大小及日期及時間戳等。這些日志資訊分别存放在不同的裝置上,即便是某些日志遭到了一定程度破壞(例如篡改ip,丢失了某些日志等)也不會影響全局,是以這些相關資訊,在調查人員進行計算機網絡驗證時就顯得尤為重要,希望引起管理人員重視。

在某些情況下,裝置不支援netflow,怎麼對流量進行檢測呢?對于這樣的環境也有相應的解決方法,那就是使用fprobe。利用fprobe來生成netflow封包,其預設格式為v5版本。最初fprobe是一款在bsd環境下運作的軟體,目前在unix/linux平台上均可運作。它可以将nic接口收到的資料轉化為netflow資料,并發送至netflow分析端。我們可以通過部署這樣一台ossim伺服器,将網絡流量鏡像至ossim伺服器,實作網絡流量分析。ossim伺服器中的netflow分析器,由下列三個工具組成:

fprobe: 從遠端主機發送資料流;

nfsen: netflow的分析圖形前端;

nfdump: netflow采集子產品;

有關ossim結構大家可以先參看本書第14章,這裡介紹netflow分析資料包的過程。首先,在網絡接口接收網絡資料,然後由fprobe程式将收集的資料按照一定規則和格式進行轉換(netflow格式),再發到系統的555端口(檢視/etc/default/fprobe能得知詳情),再由nfsen系統中的nfdump程式将轉換後的資料統一存放在/var/cache/nfdump/flows/目錄下,最後由web前端程式nfsen來讀取,資料通過555端口接收,同時結果會顯示在前台web界面上(在ossim系統中路徑為situational awareness→network→traffic,顯示效果在ossim右側導航欄裡可以檢視),分析netflow過程如圖2所示。

實用教程:使用Netflow分析網絡異常流量

  圖 2 ossim系統分析netflow資料

在ossim4.1系統中查詢 netflow流量如圖13-3所示。

實用教程:使用Netflow分析網絡異常流量

  圖 3 netflow流量源端口top 10

在ossim 4.1系統中由netflow收集的資料放置在/var/cache/nfdump/flows/live/ossim/目錄下,并存儲為二進制檔案格式,以天為機關分别設定目錄,友善檢視。這些資料按照一定的時間組織起來,每5分鐘采集一次資料,同時由nfcapd産生新的檔案,并用目前時間來命名,例如nfcapd.2013053112035包含的資料是從2013年5月31日12小時35分鐘開始的資料。

實用教程:使用Netflow分析網絡異常流量

  圖 4 nfcapd産生的資料

從系統捕獲資料包的過程來看nfdump這一過程至關重要,它由nfcpad、fddump、nfprofile和nfreplay這4個程序組成,功能見表2所示。

表2 nfdump工具組成

實用教程:使用Netflow分析網絡異常流量

  6.分布式環境資料流處理

本節内容是對上述知識點的總結,下面這個實驗在一個模拟的分布式環境中完成,其中有一台混合安裝的ossim usm,兩台sensor,三台接入層交換機和一台核心交換機以及若幹pc組成,為簡化實驗這些裝置均在同一個vlan中,實際生産中應在多個vlan。拓撲如圖5所示。

實用教程:使用Netflow分析網絡異常流量

  圖5 ossim分布式部署

第2章講解了如何添加sensor,并與server進行連接配接,下面接着啟用netflow服務,交換機上netflow也必須同時設定正确,注意nfcapd程序在12000和120001端口進行監聽。各主機ip、uuid及端口如表3所示。

表3 ossim伺服器傳感器配置

實用教程:使用Netflow分析網絡異常流量

  前面已經講過檢視uuid的方法下面依次在終端下輸入如下指令:

實用教程:使用Netflow分析網絡異常流量

所有資料存儲在ossim server端,是以我們到server指令行下輸入以下指令進行驗證:

為了確定在sensora、sensorb和sensor上都能展現其netflow資料要確定nfsen都收到資料,我們在ossim server的終端控制台下,操作以下指令

實用教程:使用Netflow分析網絡異常流量

接着觀察目錄的内容,我們進入目錄564db4303295cb66ae8a8141c00f6233,在該目錄下有若幹pcap格式的檔案,每隔5分鐘生成一個,每個檔案大小在500kb~1000kb(大小并不固定),每天會産生100~200mb的抓封包件。

實用教程:使用Netflow分析網絡異常流量

如果在實驗中發現沒有收到sensor資料包,首先檢查設定是否正确,接下來用tcpdump來抓包分析,具體抓包操作如下圖所示。

實用教程:使用Netflow分析網絡異常流量

  或tcpdump -i eth0 ‘port 12001’ 。

通過nfdump可以實作netflow記錄的過濾、top統計和排序等功能,在ossim通過web ui能輕松的展現給使用者,如圖6所示。

實用教程:使用Netflow分析網絡異常流量

  圖6 netflow多傳感器顯示

作為系統維護人員需要了解背景執行的指令,例如我們進入2015-05-01目錄,對其資料包按端口排序輸入指令nfdump –r nfcapd.201505010315 –s dstport –n 10

實用教程:使用Netflow分析網絡異常流量

  又如

實用教程:使用Netflow分析網絡異常流量

  7.交換機上配置

下面歸納一下實施流量監控的步驟(以cisco 6000系列交換機為例):

1) 在cisco 6509上配置netflow(或其他網絡裝置),并輸出到指定到ossim采集器(ip)的固定udp端口。

2) 采集器軟體為ossim系統的flow-tool工具,該軟體監聽udp端口,接收進入的netflow資料包并存儲為特定格式。

3) 使用nfsen等軟體包中的工具對netflow源檔案進行讀取,轉換成可讀的asicii格式,再用ossim内的perl程式對netflow進行分析和規範格式的操作,并将讀取的netflow資訊存儲入ossim資料庫中。

4) 依據蠕蟲和ddos攻擊等異常封包的流量特征,在分析程式中預設各種觸發條件,定時運作,從中發現滿足這些條件的flow。

5) 将分析結果在web用戶端中展示,或者通過e-mail、短信等接口發送。也可以通過與裝置關聯的方式,采用acl對裝置進行自動配置,等攻擊流消退後再自動取消acl。

除了ossim之外,還有些商業軟體都提供了很好的分析工具,例如solarwinds netflow traffic analysis 和manage engine netflow analyzer這兩款軟體如圖7所示,它們都是不錯的選擇。

實用教程:使用Netflow分析網絡異常流量

  圖7 manage engine netflow analyzer

====================================分割線================================

本文轉自d1net(轉載)

繼續閱讀