目錄
文章目錄
Netflow(網絡數據流檢測協議)
隨着軟件系統升級以及漏洞修補方案的成熟,直接入侵主機進行破壞的病毒攻擊方式逐漸減少,繼而轉為惡意消耗有限的網絡資源,造成網絡阻塞,以此破壞系統對外提供服務的能力。針對此類攻擊,業界提出了通過檢測網絡數據流(Flow)的方法來判斷網絡異常和攻擊,借助實時的檢測網絡數據流信息,通過與歷史記錄模式匹配(判斷是否正常)、或者與異常模式匹配(判斷是否被攻擊),讓網絡管理人員可以實時查看全網的狀態,檢測網絡性能可能出現的瓶頸,並進行自動處理或告警顯示,以保證網絡高效、可靠地運轉。
Netflow 技術最早於 1996 年由思科公司的 Darren Kerr 和 Barry Bruins 發明,並於同年 5 月注冊為美國專利。Netflow 技術首先被用於網絡設備對數據交換進行加速,並可實現對高速轉發的 IP 數據流進行測量和統計。經過多年的技術演進,Netflow 原來用於數據交換加速的功能已經逐步由網絡設備中的專用 ASIC 芯片替代,而對流經網絡設備的 IP 數據流進行測量和統計的功能依舊保留着,並成為了當今互聯網領域公認的最主要的 IP/MPLS 流量分析、統計和計費行業標准。Netflow 技術能對 IP/MPLS 網絡的通信流量進行詳細的行為模式分析和計量,並提供網絡運行的詳細統計數據。
Netflow 系統包括三個主要部分:探測器(Exporter),采集器(Collector),分析報告系統(Analysis)。
- Exporter:用於監聽網絡數據
- Collector:用於收集從 Exporter 輸出的網絡數據
- Analysis:用於分析從 Collector 收集到的網絡數據,並產生報告
經分析由 Netflow 收集到的信息,網絡管理人員可以知道報文的來源、目的地、網絡服務類型,以及造成網絡擁塞的原因。也許它不能像 tcpdump 那樣提供網絡流量的完整記錄,但是當匯集起來時,它更加易於管理和易讀。
從路由器和交換機輸出的 NetFlow 網絡數據由過期的數據流及詳細的流量統計數據組成。其中,這些數據流包含報文的來源和目的地相關的 IP 地址,以及端到端會話使用的 Protocol 和 Port;而流量統計數據包含了數據流時戳、源 IP 地址和目的 IP 地址、源端口號和目的端口號、輸入接口號和輸出接口號、下一跳 IP 地址、信息流中的總字節數、信息流中的數據包數量、信息流中的第一個和最后一個數據包時戳 源 AS 和目的 AS,及前置掩碼、數據包序號等。
目前,最新的 Netflow V9 是一種全新的靈活且可擴展的 Netflow 數據輸出格式,采用基於模板(Template)的統計數據輸出。方便添加需要輸出的數據域和支持多種新功能,如:Multicase Netflow、MPLS Aware Netflow、BGP Next Hop V9、Netflow for IPv6 等。
在 2003 年,Netflow V9 還被 IETF 組織從 5 個候選方案中確定為 IPFIX(IP Flow Information Export,IP 數據流信息輸出)標准。
IPFIX(網絡流量監測)
基於流的技術被越來越廣泛地應用於網絡領域,它在設置 QoS 策略、部署應用和進行容量規划上都有着巨大的價值。但是,網絡管理員卻缺少一種輸出數據流的標准格式。IPFIX(IP Flow Information Export,IP 數據流信息輸出)就是為了滿足這一需求,由 IETF 公布的用於網絡中的流信息測量的標准協議。
IPFIX 定義的格式以 Cisco Netflow V9 數據輸出格式作為基礎,標准化了 IP 數據流的統計、輸出標准。是一種針對數據流特征分析、基於模板的格式輸出的協議,因此具有很強的可擴展性,因此如果流量監控的要求發生改變,網絡管理員也可通過修改相應配置來實現,不必升級網絡設備軟件或管理工具。網絡管理員得以容易地提取和查看存儲在這些網絡設備中的重要流量統計信息。
為了較完整的輸出數據,IPFIX 缺省使用網絡設備的七個關鍵域來表示每股網絡流量:
- 源 IP 地址
- 目的IP 地址
- TCP/UDP 源端口
- TCP/UDP 目的端口
- 三層協議類型
- 服務類型(Type-of-service)字節
- 輸入邏輯接口
如果不同的 IP 報文中所有的七個關鍵域都匹配,那么這些 IP 報文都將被視為屬於同一股流量。通過記錄網絡中這些流量的特征,如流量持續時間、流量中報文平均長度等, 我們可以了解到當前網絡的應用情況,並根據這些信息對網絡進行優化,安全檢測,流量計費。
IPFIX 組網架構
綜上,IPFIX 基於 Flow 的概念,一個 Flow 指:來自相同的子接口,具有相同的源和目的 IP 地址,協議類型,相同的源和目的協議端口號,以及相同 ToS 的報文,通常為 5 元組。IPFIX 會記錄這個流的統計信息,包括:時間戳,報文數,總的字節數。IPFIX 主要包括三個設備 Exporter、Collector、Analyzer,三個設備之間的關系如下:
- Export 對網絡流進行分析處理,提取符合條件的流統計信息,並將統計信息輸出 Collector。
- Collector 負責解析 Export 的數據報文,把統計數據收集到數據庫中,可供 Analyser 進行解析。
- Analyser 從 Collector 中提取統計數據,進行后續處理,為各種業務提供依據,以圖形界面的形式顯示出來。
IPFIX 應用場景
Usage-based Accounting(基於使用流量的計費)
在網絡運營商中的流量計費一般只是簡單的基於每用戶的上傳、下載流量。由於 IPFIX 可以精確到目的 IP、協議端口等字段,今后的流量計費就可以基於應用服務的特點來分段收費。當然,協議中也說明了,IPFIX 的報文統計是 “采樣” 的,在許多應用場合(如骨干層),數據流統計並不是越精細越好,出於網絡設備的性能考慮,采樣率不能過小,因此並不需要提供完全精確可靠的流量計費。但在網絡運營商級別,計費單位一般都是百兆以上,IPFIX 的采樣精度能滿足相關需求。
Traffic Profiling、Traffic Engineering(流量概圖、流量工程)
IPFIX Exporter 的記錄輸出,IPFIX Collector 可以以各種圖表形式輸出非常豐富的流量記錄信息,這就是 Traffic Profiling 的概念。
然而,只是信息的記錄,還無法利用 IPFIX 的強大功能,IETF 同時推出了 Traffic Engineering 的概念:在實際運營網絡中,經常規划了負載均衡和冗余備份,但各種協議一般都是按網絡規划時預定的路線、或協議原理進行調整。而如果采用 IPFIX 監控網絡中的流量,發現某段時間某些數據流較大,可以匯報給網絡管理員進行流量調整,以分配、調整更多的網絡帶寬供給相關應用服務使用,減少負載不均的情況發生。甚至於,可以更智能把路由調整、帶寬分配、安全策略等設置規則直接綁定到 IPFIX Collector 上的操作上,自動完成網絡流量調整。
Attack/Intrusion Detection(攻擊/入侵檢測)
IPFIX 可以根據流量特點,進行網絡攻擊的檢測。例如:典型的 IP 掃描、端口掃描、DDOS攻擊。而采樣標准的 IPFIX 協議,還可以像一般主機端病毒防護一樣,采用 “特征庫” 升級來阻止最新的網絡攻擊。
QoS Monitoring(網絡服務質量的監控)
典型的 QoS 參數有:
- 丟包情況:loss [RFC2680]
- 單向延時:one-way delay [RFC2679]
- 往返延時:round-trip delay [RFC2681]
- 延時變化:delay variation [RFC3393]
以往的技術很難實時地監控上述信息,而通過 IPFIX 的各種自定義字段、監控時間間隔就可以很容易的監控各種報文的上述數值。
Flowalyzer Netflow & sFlow Tool Set(Netflow 模擬工具)
goflow(Netflow/IPFIX Collector)
- CentOS7
- Golang1.12.5
安裝:
go get github.com/cloudflare/goflow/cmd/goflow
cd ~/go/src/github.com/cloudflare/goflow/cmd/goflow
go install
檢查:
goflow -h
運行:
goflow -kafka=false -nf -nf.addr 192.168.1.8 -nf.port 5678
結果:
Type:IPFIX
TimeReceived:1584370187
SequenceNum:2823
SamplingRate:0
SamplerAddress:172.16.1.107
TimeFlowStart:0
TimeFlowEnd:0
Bytes:64
Packets:1
SrcAddr:1.1.1.16
DstAddr:1.1.1.19
Etype:2048 Proto:17
SrcPort:4242
DstPort:80
InIf:3
OutIf:5
SrcMac:00:00:00:00:00:00
DstMac:00:00:00:00:00:00
SrcVlan:0
DstVlan:0
VlanId:0
IngressVrfID:0
EgressVrfID:0
IPTos:1
ForwardingStatus:0
IPTTL:0
TCPFlags:0
IcmpType:0
IcmpCode:0
IPv6FlowLabel:0
FragmentId:0
FragmentOffset:0
BiFlowDirection:0
SrcAS:2
DstAS:3
NextHop:0.0.0.0
NextHopAS:0
SrcNet:32
DstNet:31
HasEncap:false
SrcAddrEncap:<nil>
DstAddrEncap:<nil>
ProtoEncap:0
EtypeEncap:0
IPTosEncap:0
IPTTLEncap:0
IPv6FlowLabelEncap:0
FragmentIdEncap:0
FragmentOffsetEncap:0
HasMPLS:false
MPLSCount:0
MPLS1TTL:0
MPLS1Label:0
MPLS2TTL:0,
MPLS2Label: 0,
MPLS3TTL:0
MPLS3Label:0
MPLSLastTTL:0
MPLSLastLabel:0
HasPPP:false
PPPAddressControl:0
cflowd
CAIDA(Cooperative Association for Internet Data Analysis,互聯網數據分析合作協會)發布了一款免費軟件,使互聯網服務提供商(ISP)能夠更有效地監控流量操作,為其網絡進行容量規划,並分析數據流量趨勢,這就是 cflowd v2.0。
cflowd 是為了收集和分析思科路由器的流量輸出數據而開發的。收集、分析、統計數據流量是 ISP 設計以及運營網絡的基礎,cflowd 和相關的 CAIDA 工具集提供了網絡工程師設計網絡連接、記帳、故障排除和跟蹤攻擊和安全漏洞所需的統計信息。
cflowd 支持 Netflow/IPFIX 協議。TCP 客戶端程序 cfdcollect 可以用於收集數據並將其轉換為 ART++ 格式,ART++ 是 C++ 的類庫。除了新的表格格式,cflowd 2.0 還可以顯示 packets 和 bits/s,以及 byte 計數器。同時,用戶可以使用不同的方式存儲流信息和查看數據。
cflowd 具有四大組件:
- cflowdmux:這個程序充當一個或多個 Cisco 路由器的流數據接收器。它將原始數據包寫入共享內存,並允許客戶端訪問原始流數據。包含了一個示例客戶機(flowwatch)。
- cflowd:從原始流(由 cflowdmux 收集)獲取數據,並創建流量數據的表格摘要(如:矩陣、網絡矩陣、端口矩陣、接口矩陣、nexthop 表和協議表)。它還充當 cfdcollect 的表格數據服務器。
- cfdcollect:這是一個從 cflowd 收集數據的中央數據庫。它用於定期存檔表格數據,為每種表格數據類型生成時間序列數據。存檔的數據可以用 ART++ 進行處理。
- utilities:包含一些實用程序,可用於檢查運行 cflowd 的主機上的數據。