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