隨著(zhù)網(wǎng)絡(luò )應用的蓬勃發(fā)展,很多學(xué)校網(wǎng)絡(luò )帶寬大幅增加,而網(wǎng)絡(luò )使用的效能卻沒(méi)有成正比的提升。要做到有效的網(wǎng)絡(luò )管理,就需要通過(guò)網(wǎng)絡(luò )監控機制搜集相關(guān)信息,主動(dòng)找出問(wèn)題點(diǎn)并加以解決。 NetFlow 就是一種提供網(wǎng)絡(luò )流量相關(guān)信息的協(xié)議,網(wǎng)管人員通過(guò) NetFlow 可以快速有效地掌握所管轄網(wǎng)絡(luò )的狀態(tài)。接下來(lái)我們會(huì )依序介紹 NetFlow 與之前網(wǎng)絡(luò )管理機制的差異及其運作機制,最后介紹目前 NetFlow 的相關(guān)應用。
NetFlow的由來(lái)
傳統上的網(wǎng)絡(luò )管理者通常是通過(guò) SNMP (Simple Network Management Protocol) 協(xié)議的工具從支持SNMP的網(wǎng)絡(luò )設施搜集網(wǎng)絡(luò )流量數據,雖然通過(guò)這種方式取得信息不會(huì )造成處理上過(guò)重的負擔,但是 SNMP 提供的只是粗糙、簡(jiǎn)略的資料。這些信息只能讓管理者發(fā)現問(wèn)題,卻無(wú)法進(jìn)一步解決問(wèn)題。
那么有沒(méi)有另外一種能提供更詳細網(wǎng)絡(luò )信息的技術(shù)呢?網(wǎng)絡(luò )探針 (sniffer) 或是類(lèi)似的監聽(tīng)工具開(kāi)始被部署在網(wǎng)絡(luò )設備上,用來(lái)捕捉流過(guò)的數據包并將數據包加以翻譯,找出數據包頭中字段的相關(guān)信息,并進(jìn)一步分析其內容以取得更詳細的信息。
雖然通過(guò)數據包監聽(tīng)工具可以取得更詳細的網(wǎng)絡(luò )信息,但監聽(tīng)工具通常專(zhuān)注在單一網(wǎng)絡(luò )數據包的內容,所以網(wǎng)絡(luò )管理者很難從監聽(tīng)工具所提供的信息來(lái)掌握整體網(wǎng)絡(luò )的狀態(tài)。此外,分析數據包非常耗費時(shí)間,而且數據包監聽(tīng)所儲存并需要分析的數據量非常龐大,對于資源和人員的消耗是驚人的,這種方式顯然不適合高校環(huán)境下的網(wǎng)絡(luò )管理。
NetFlow 便是在這種情況下應運而生并成為網(wǎng)管人員熱門(mén)工具的,越來(lái)越多的學(xué)校在通過(guò)這一工具了解網(wǎng)絡(luò )使用情形。NetFlow 不僅能提供更詳細的網(wǎng)絡(luò )信息,而且其分析方式避免了網(wǎng)絡(luò )頻寬及運算資源過(guò)重的負擔。
NetFlow 運作機制
NetFlow 是由 Cisco 公司的 Darren Kerr 和 Barry Bruins 在 1996 年開(kāi)發(fā)的一套網(wǎng)絡(luò )流量監測技術(shù),目前已內建在大部分 Cisco 路由器上, Juniper、Ex-treme、港灣網(wǎng)絡(luò )等網(wǎng)絡(luò )設備供貨商也支持 NetFlow 技術(shù),它已逐漸成為大家都能接受的標準?!?/span>
NetFlow 本身是一套網(wǎng)絡(luò )流量統計協(xié)議,其主要原理是根據網(wǎng)絡(luò )數據包傳輸時(shí),連續相鄰的數據包通常是往相同目的地 IP 地址傳送的特性,配合 cache 快取機制,當網(wǎng)絡(luò )管理者開(kāi)啟路由器或交換機接口的 NetFlow 功能時(shí),設備會(huì )在接收數據包時(shí)分析其數據包的標頭部分來(lái)取得流量資料,并將所接到的數據包流量信息匯整成一筆一筆的Flow,在 NetFlow 協(xié)議中 Flow 是被定義為兩端點(diǎn)間單一方向連續的數據流,這意味著(zhù)每一個(gè)網(wǎng)絡(luò )的連接都會(huì )被分別紀錄成兩筆 Flow 數據,其中一筆記錄從客戶(hù)端連到服務(wù)器端,另外隨著(zhù)一筆紀錄從服務(wù)器端連回到客戶(hù)端的信息。
網(wǎng)絡(luò )設備通過(guò)以下字段來(lái)區分每一筆 Flow:來(lái)源 IP 地址(source IP address)、來(lái)源端口號(source port number)、目的 IP 位址(destination IP address)、目的端口號(destination port number)、協(xié)議種類(lèi)(protocol type)、服務(wù)種類(lèi)(type of service)及路由器輸入接口(router input interface),任何時(shí)間當設備接收到新的數據包時(shí),會(huì )檢視這七個(gè)字段來(lái)判斷這個(gè)數據包是否屬于任何已記錄的 Flow,有的話(huà)則將新收集到的數據包的相關(guān)流量信息整合到對應的 Flow 記錄中,如果找不到數據包對應的 Flow 記錄,便產(chǎn)生一個(gè)新的 Flow 記錄來(lái)儲存相關(guān)的流量信息。由于設備內高速緩存的空間有限,無(wú)法無(wú)限制地容納持續增加的 Flow 紀錄,所以 NetFlow 協(xié)議也定義了終結 Flow記錄的機制,來(lái)維持網(wǎng)絡(luò )設備中儲存 Flow 信息的空間。
只要下面三種情況任何一個(gè)成立,路由器就會(huì )通過(guò) UDP 數據包將終止的 Flow 紀錄匯出到使用者事先指定的 NetFlow 數據收集設備上:當數據包內字段 flag 顯示傳輸協(xié)議中傳輸完成的訊息如 TCP FIN 時(shí);流量停止超過(guò) 15 秒;流量持續傳送,每 30 分鐘會(huì )自動(dòng)終止。
雖然大部分的網(wǎng)絡(luò )硬件供貨商都支持NetFlow,但NetFlow版本有很多,其中 NetFlow Version 5 是常見(jiàn)的 Netflow 數據格式,包含以下幾個(gè)字段:Source IP Address (源主機 IP 地址)、Destination IP Address (目的主機 IP 位址)、Source TCP/UDP Port (源主機所使用的端口號)、Destination TCP/UDP Port (目的主機所使用的端口號)、Next Hop Address (下一個(gè)端點(diǎn)的地址)、Source AS Number (來(lái)源主機所屬的 AS 編號)、Destination AS number (目的主機所屬的 AS 編號)、Source Prefix Mask (來(lái)源主機所屬網(wǎng)域的子網(wǎng)掩碼)、Destination Prefix Mask (目的主機所屬網(wǎng)絡(luò )的子網(wǎng)掩碼)、Protocol (使用的通訊協(xié)議)、TCP Flag (數據包控制標記)、Type of Service (QoS需求參數)、Start sysUpTime (起始時(shí)間)、End sysUpTime (終止時(shí)間)、Input ifIndex (信息流流入接口編號)、Output ifindex (信息流流出接口編號)、Packet Count (數據包數量)、Byte Count (Byte數量)。
支持 NetFlow 功能的網(wǎng)絡(luò )設備將其所收集到的 Flow 信息以 UDP 數據包送往預先設置好的流量接收主機,配合 NetFlow 相關(guān)收集軟件,將這些原始流量資料作適當的處理、儲存以提供后續的相關(guān)應用。
NetFlow在網(wǎng)絡(luò )安全上的相關(guān)應用
NetFlow 的紀錄能夠提供足夠的信息來(lái)協(xié)助網(wǎng)絡(luò )管理者掌握所管轄網(wǎng)絡(luò )中的網(wǎng)絡(luò )異常事件,而且由于 NetFlow 不需要對數據包內容進(jìn)行分析,大大減輕了網(wǎng)絡(luò )設備運算處理的負擔,所以很適合用來(lái)分析高速、忙碌的網(wǎng)絡(luò )環(huán)境。
由于 NetFlow 數據來(lái)源是網(wǎng)絡(luò )中的三層數據轉發(fā)設備,所以通過(guò)從三層設備所搜集到的 NetFlow 信息可以協(xié)助掌握整體網(wǎng)絡(luò )的情況,而且通過(guò)適當地分析 NetFlow 信息,可以協(xié)助管理者在蠕蟲(chóng)爆發(fā)或不正常網(wǎng)絡(luò )行為的初期快速分析出網(wǎng)絡(luò )中存在的問(wèn)題。接下來(lái)我們進(jìn)一步介紹如何利用 NetFlow中所包含的信息來(lái)偵測異常的行為。
一般來(lái)說(shuō),網(wǎng)絡(luò )攻擊行為會(huì )存在著(zhù)某些可供辨識的特征,我們可以通過(guò)這些特征來(lái)與所獲得的 NetFlow 數據進(jìn)行對比,進(jìn)而找出可能的異常行為。我們可以通過(guò)分析 NetFlow 數據中目的主機所使用端口號字段,來(lái)過(guò)濾 NetFlow資料找出相對應的攻擊;另外我們也可以利用不合邏輯的來(lái)源或目的 IP 地址來(lái)找出異常;此外,因特網(wǎng)地址指派機構 (Internet Assigned Numbers Authority , IANA)將下列三段 IP 地址保留給私有網(wǎng)絡(luò )使用
某些異常行為可能會(huì )連到某個(gè)或某些特定地址。比如在 2001 年造成嚴重網(wǎng)絡(luò )擁塞的Code Red 蠕蟲(chóng),我們分析所收集到的 NetFlow 資料便可發(fā)現,此蠕蟲(chóng)的攻擊行為有一個(gè)特性,每筆 Flow 的 destination TCP/UDP port 字段值會(huì )等于 80,Packet Count 字段值等于 3,Byte Count 字段值等于 144bytes,網(wǎng)絡(luò )管理者可以撰寫(xiě)程序分析所搜集的NetFlow數據,找出具備此特征的 Flow 數據,便可找出管轄網(wǎng)絡(luò )內有可能感染 Code Red蠕蟲(chóng)的主機,并強行將該主機下線(xiàn)或封鎖物理端口以降低蠕蟲(chóng)造成的危害。利用已收集到攻擊的特征與NetFlow 信息中的相關(guān)字段進(jìn)行比對找出可能的攻擊,可以在造成網(wǎng)絡(luò )嚴重傷害之前,采取相應措施來(lái)降低形成嚴重問(wèn)題的可能性。
從傳輸層的角度進(jìn)行分析
我們可以通過(guò) NetFlow 數據找出網(wǎng)絡(luò )中建立 session 數目最多的主機,因為如果一臺主機對特定主機產(chǎn)生不正常的大量連接,這可能代表著(zhù)新的蠕蟲(chóng)、阻斷服務(wù)攻擊、網(wǎng)絡(luò )掃描等的可能性,因為一個(gè)正常的主機對外連接會(huì )有一定正常的頻率,如果正常的主機感染了蠕蟲(chóng),就可能會(huì )開(kāi)始產(chǎn)生異常的網(wǎng)絡(luò )行為,開(kāi)始產(chǎn)生對外大量的連接需求來(lái)找尋下一個(gè)感染的對象,因此我們可以從感染蠕蟲(chóng)的主機的 NetFlow 信息中發(fā)現到大量的對外連接需求,同樣的原理,如果所管轄網(wǎng)絡(luò )中的使用者從網(wǎng)絡(luò )上下載阻斷服務(wù)攻擊之工具程序企圖對外發(fā)動(dòng)攻擊時(shí),或是使用者利用 Nmap 之類(lèi)的掃瞄工具掃瞄特定網(wǎng)址,以找出目標主機所可能存在弱點(diǎn)或是漏洞時(shí),我們都可以從 NetFlow 數據中發(fā)現從網(wǎng)域中某個(gè)特定地址送出的大量 session。
除了偵測網(wǎng)絡(luò )攻擊外,我們也可以通過(guò)分析 session 的方式找出網(wǎng)絡(luò )濫用的行為,例如分析 NetFlow 數據中目的主機所使用端口號的信息,通過(guò)分析對外 25 port 連接的相關(guān)信息,若某一臺主機對外 25 port 連接的數目在某個(gè)特定時(shí)間內超出正常值過(guò)多,我們便可合理懷疑這臺主機被利用來(lái)散發(fā)廣告信或通過(guò) e-mail感染蠕蟲(chóng),同樣原理我們也可以應用來(lái)分析像 emule 等 peer-to-peer 檔案分享軟件常用之 TCP 4662 / UDP 4672 port,找出網(wǎng)絡(luò )濫用的行為,并進(jìn)行適當處置以降低其所造成的傷害。
利用 TCP 的控制過(guò)濾出可疑的 Flow
但對于一些大型網(wǎng)絡(luò ),攻擊的相關(guān) NetFlow 信息可能會(huì )被其它正常的 NetFlow 信息所稀釋?zhuān)绺腥静《镜某跗诨蚴侵斏鞯暮诳?,可能?huì )利用正常的流量來(lái)掩護其異常行為。另外,當我們遇到新的攻擊手法或是病毒時(shí),可能無(wú)法在第一時(shí)間掌握其 Flow 特征,也無(wú)法通過(guò)特征比對的方式找出異常流量。為了更快速有效地偵測出異常的流量,我們試著(zhù)對 TCP 的控制標志進(jìn)行分析,希望縮小需要進(jìn)一步分析的 NetFlow 數據量,以及早發(fā)現異常流量。對蠕蟲(chóng)而言,由于其在網(wǎng)絡(luò )中通過(guò)感染大量主機進(jìn)行自我復制的本質(zhì),蠕蟲(chóng)會(huì )在很短的時(shí)間內盡全力探測可能的感染目標,而且大部分的蠕蟲(chóng)都是通過(guò) TCP 協(xié)議來(lái)傳輸散布,所以我們可以從 TCP 的控制標志中發(fā)現到一些蛛絲馬跡,作為我們縮小可疑名單的根據。
以正常的 TCP 連接建立過(guò)程而言,客戶(hù)端會(huì )先送出一個(gè) SYN 數據包給目的端主機,接著(zhù)目的端主機會(huì )響應一個(gè) SYN/ACK 數據包,客戶(hù)端在接收到這樣的數據包后,再送回給目的端主機 ACK 數據包完成連接,但并不是每一次都能順利建立連接,由于 NetFlow 會(huì )將每個(gè) session中所有傳輸時(shí)的 TCP 控制標志全部?jì)Υ嬖跀祿刂茦酥?span lang="EN-US"> (TCP Flag) 這個(gè)字段中,因此我們可以通過(guò)這個(gè)字段中的信息來(lái)協(xié)助我們推測特定主機聯(lián)機的特性。
若某個(gè) Flow 正常地建立 TCP 連接后,其數據包控制(TCP Flag) 字段會(huì )記錄的包含 ACK、SYN、FIN 等控制標志,但是如果蠕蟲(chóng)進(jìn)行感染的動(dòng)作時(shí),由于隨機選取的主機并不一定存在,或是即使存在但目標主機沒(méi)有開(kāi)放蠕蟲(chóng)所要感染的 TCP port,在這種情況下,NetFlow 信息中由受感染主機對外聯(lián)機所產(chǎn)生的 Flow 數據包控制標志(TCP Flag) 字段會(huì )只存在 SYN 這個(gè)TCP 控制標志,根據這種特性網(wǎng)絡(luò )管理者可以先將其 NetFlow 數據中數據包控制標志 (TCP Flag)字段只有存在 SYN 控制標志的 Flow 數據過(guò)濾出來(lái),通過(guò)這種方式我們可以把大部分正常的流量排除,這時(shí)候我們要從可疑的數據中找出真正異常流量的難度就會(huì )降低許多,能快速找出問(wèn)題,也可以避免運算資源無(wú)謂的浪費。
利用ICMP的訊息協(xié)助過(guò)濾出可疑的Flow
某些蠕蟲(chóng)或網(wǎng)絡(luò )攻擊也會(huì )利用 ICMP 來(lái)進(jìn)行,我們可以從 NetFlow數據中過(guò)濾出有異常行為的主機,首先找出通訊協(xié)議 (protocol) 字段值為 1 的 Flow,代表所使用的通訊協(xié)議為 ICMP,再根據目的主機之端口號 (destination TCP/UDP port)字段值分析出所代表的 ICMP 訊息,例如目的主機之端口號 (destination TCP/UDP port)字段值為 2048,轉化成八進(jìn)位為 800,第一位代表位數字代表的是 ICMP 的類(lèi)型,后
由于目前網(wǎng)絡(luò )帶寬增長(cháng)非常迅速,僅僅在核心層部署NetFlow可能會(huì )導致設備性能下降。目前港灣網(wǎng)絡(luò )可以在匯聚層的FlexHammer 5210系列、核心層的BigHammer 6800系列提供相應的NetFlow功能,通過(guò)核心和匯聚層的NetFlow分布式部署,可以在確保網(wǎng)絡(luò )性能的前提下提供完善的病毒和網(wǎng)絡(luò )異??刂茩C制,從而協(xié)助網(wǎng)絡(luò )管理者完成網(wǎng)絡(luò )的維護工作,為各個(gè)高校網(wǎng)絡(luò )中心降低管理壓力。
聯(lián)系客服