揭祕Cisco NBAR封殺BT和電驢下載

揭開Cisco NBAR 的神祕面紗:

NBAR (Network-Based Application Recognition) 的意思是網絡應用識別。 NBAR是一種動態能在四層到七層發現協議的技術。它不同於ACL,僅僅依靠端口號進行對應用服務的判斷,更加精準的是可以通過數據包本身的描述進行識別判斷,該數據屬於哪一種服務,可以對使用動態分配TCP/UDP端口號(如P2P下載軟件)的應用程序和HTTP流量等進行分類。

實際上NBAR的應用原理在於對網絡應用層面的監控,可以進行代碼匹配來識別數據報的具體應用,例如FTPWEBBT、電驢等等。即便所應用的服務端口變化,NBAR也可以識別出來具體的服務。NBAR首先可以應用於網絡監控,判斷究竟在你的網內哪種服務佔據着最主要的流量,以便於配合QOS來做流量的修整。

既然這麼好的東東,我們怎麼測試的她的能力了? 請看下文。

採用NBAR就能封殺BT和電驢的流量,爲什麼?關鍵時路由器靠什麼東西,她又能發現當前傳輸的流量中就包含BT的流量,這得依靠一個強大特徵庫文件:PDLM(數據包描述語言模塊),這個特徵庫文件,就好比是殺毒軟件的病毒庫,殺毒軟件能識別某些文件屬於惡意程序,病毒了,關鍵是她的病毒庫--------

PDLM它是NBAR針對於網絡高層應用的主要識別原理,從Cisco IOS 12.0之後引入了NBAR的概念,由於IOS的版本高低不同,較高的IOS已經內嵌支持bittorrenteDonkey兩種協議,如果您的設備目前沒有能力發現BT和電驢的流量,主要是不支持這兩個協議。可以在 CISCO的網站,使用CCO賬號登陸,找到各種網絡應用的PDLM,每個PDLM都是針對於一種服務的,它記載了關於判別一種應用服務的關鍵匹配代碼。

 

作者已經下載完了,需要上傳PDLM模塊到路由器的flash或者nvram

 

拓撲圖:

clip_image002

 

第一步:上傳之前的準備工作

 

norvel-network#dir /all

Directory of flash:/

 

    1  -rw-    15824768          <no date>  3600_12_3(22)(fc2).bin

 

33030140 bytes total (17205308 bytes free)

norvel-network#show flash all

Partition   Size    Used      Free      Bank-Size  State          Copy Mode

  1        32255K  15453K    16802K     8192K      Read/Write     Direct

 

System flash directory:

File  Length   Name/status

        addr      fcksum  ccksum

  1   15824768  3600_12_3(22)(fc2).bin 

        0x40      0x89AC  0x89AC

[15824832 bytes used, 17205308 available, 33030140 total]

32768K bytes of processor board System flash (Read/Write)

 

   Chip    Bank    Code      Size      Name

    1      1       01AD      2048KB    AMD   29F016

    2      1       01AD      2048KB    AMD   29F016

    3      1       01AD      2048KB    AMD   29F016

    4      1       01AD      2048KB    AMD   29F016

    1      2       01AD      2048KB    AMD   29F016

    2      2       01AD      2048KB    AMD   29F016

    3      2       01AD      2048KB    AMD   29F016

    4      2       01AD      2048KB    AMD   29F016

    1      3       01AD      2048KB    AMD   29F016

    2      3       01AD      2048KB    AMD   29F016

    3      3       01AD      2048KB    AMD   29F016

    4      3       01AD      2048KB    AMD   29F016

    1      4       01AD      2048KB    AMD   29F016

    2      4       01AD      2048KB    AMD   29F016

    3      4       01AD      2048KB    AMD   29F016

    4      4       01AD      2048KB    AMD   29F016

norvel-network#copy tftp flash  //採用TFTP協議,複製TFTP件到路由器flash

Address or name of remote host []? 192.168.10.10  //TFTP服務器的IP地址

Source filename []? bittorrent.pdlm //上傳支持BT協議的PDLM,該文件要求要事先放置在TFTP的根目錄下

Destination filename [bittorrent.pdlm]?  //上傳後的目的文件名

Accessing tftp://192.168.10.10/bittorrent.pdlm...

Erase flash: before copying? [confirm]n  //一定要選擇NO,不格式化Flash,否則PDLM是上傳到Flash中了,Flash中的其他的文件都被格式化了

Loading bittorrent.pdlm from 192.168.10.10 (via Ethernet0/3): !

[OK - 3100 bytes]

Verifying checksum...  OK (0x7C83)

3100 bytes copied in 0.332 secs (9337 bytes/sec)

norvel-network#show flash //查看flash確認已經上傳成功

System flash directory:

File  Length   Name/status

  1   15824768  3600_12_3(22)(fc2).bin 

  2   3100     bittorrent.pdlm 

[15827996 bytes used, 17202144 available, 33030140 total]

32768K bytes of processor board System flash (Read/Write)

 

按照上面的相同方法,如果您的設備flash空間已經滿了,無法存放PDLM,你可以按同理

PDLM上傳到NVRAM中,PDLM文件本身都比較小,不用擔心佔用太多的空間

norvel-network#dir nvram:

Directory of nvram:/

 

   25  -rw-        3612                   <no date>  startup-config

   26  ----           5                    <no date>  private-config

    1  -rw-           0                    <no date>  ifIndex-table

    2  ----          12                    <no date>  persistent-data

 

30712 bytes total (24995 bytes free)

 

norvel-network#copy tftp nvram:

Address or name of remote host []? 192.168.10.10

Source filename []? eDonkey.pdlm   

Destination filename [eDonkey.pdlm]?

Accessing tftp://192.168.10.10/eDonkey.pdlm...

Loading eDonkey.pdlm from 192.168.10.10 (via Ethernet0/3): !

[OK - 3492 bytes]

 

3492 bytes copied in 9.784 secs (357 bytes/sec)

 

也可以上傳到NVRAM

norvel-network#dir nvram:

Directory of nvram:/

 

   25  -rw-        3612                   <no date>  startup-config

   26  ----           5                    <no date>  private-config

    1  -rw-           0                    <no date>  ifIndex-table

    2  ----          12                    <no date>  persistent-data

    3  -rw-        3492                  <no date>  eDonkey.pdlm

 

30712 bytes total (20899 bytes free)

 

上傳完畢切記需要保存,保存到閃存中,防止無意間重啓丟棄PDLM

norvel-network#write memory

 

 

第二步:通過IP NBAR命令加載PDLM模塊到內存中,並使用Class-map來對流量進行分類標記,使用Policy-map對分類的流量給定丟棄的策略,並最終應用在連接Internet的接口下

  

//採用ip nbar 命令從flash中加載BT和電驢的模塊,如果IOS已經支持這兩種協議,則無需上傳PDLM,也無需使用此命令

norvel-network(config)#ip nbar pdlm flash:bittorrent.pdlm

norvel-network(config)#ip nbar pdlm flash:eDonkey.pdlm

//使用Class-map對流量進行分類,Class-map的名字爲BT

match-any”匹配上其中一種流量,就執行分類

match-all 匹配所有流量,才分類

norvel-network(config)#class-map match-any BT

//Match 對象很多,可以ACL或者協議等

norvel-network(config-cmap)#match protocol bittorrent

norvel-network(config-cmap)#match protocol edonkey

//流量已經分類,使用Policy-map的目的是針對這些分類的流量給定一個什麼樣的策略。

這裏先定義policy-map 的名字爲Deny-BT 名稱可以是任意字符

norvel-network(config)#policy-map Deny-BT

//Policy-map中關聯Class-map 的名字

norvel-network(config-pmap)#class BT

//policy-map給這些滿足分類流量的策略是丟棄,你可以做做限速,可以讓下載BT,但是速度限制20Kbps

norvel-network(config-pmap-c)#drop

//要使用NBAR必須啓用 Cisco 快速轉發

norvel-network(config)#ip cef

//在接口下要調用Policy-map 的策略

norvel-network(config)#int e0/2

//開啓接口下NBAR發現協議的功能

norvel-network(config-if)#ip nbar protocol-discovery

//把策略應用E0/2的出方向

norvel-network(config-if)#service-policy output  Deny-BT

 

 

第三步:在路由器上檢查配置

        Show class-map

        Show Policy-map

        Show policy-map interface e0/2

norvel-network#sh class-map

 Class Map match-any BT (id 2)

   Match protocol bittorrent

   Match protocol edonkey

 

 Class Map match-any class-default (id 0)

   Match any

 

norvel-network#show policy-map

  Policy Map Deny-BT

    Class BT

      drop

 

norvel-network#show policy-map int e0/2

 Ethernet0/2

 

  Service-policy input: Deny-BT

 

    Class-map: BT (match-any)

      0 packets, 0 bytes

      5 minute offered rate 0 bps, drop rate 0 bps

      Match: protocol bittorrent

        0 packets, 0 bytes

        5 minute rate 0 bps

      Match: protocol edonkey

        0 packets, 0 bytes

        5 minute rate 0 bps

      drop

 

    Class-map: class-default (match-any)

      8133 packets, 7734590 bytes

      5 minute offered rate 182000 bps, drop rate 0 bps

      Match: any

 

  Service-policy output: Deny-BT

 

    Class-map: BT (match-any)

      0 packets, 0 bytes

      5 minute offered rate 0 bps, drop rate 0 bps

      Match: protocol bittorrent

        0 packets, 0 bytes

        5 minute rate 0 bps

      Match: protocol edonkey

        0 packets, 0 bytes

        5 minute rate 0 bps

      drop

 

    Class-map: class-default (match-any)

      13273 packets, 871872 bytes

      5 minute offered rate 31000 bps, drop rate 0 bps

      Match: any

 

第四步: 安裝BT和電驢測試 NBAR的效果,軟件安裝就不多說了,下一步就可以,這些軟件的安裝包中,都捆版了很多廣告軟件,安裝時請謹慎選擇。

 

第五步:找到下載好的BT種子,記好了,一定要是BT種子文件,這是產生的下載流量纔可以被PDLM所識別,如果是HTTP下載,無法觸發Bittorrent的流量

clip_image001

 

clip_image003

 

 

第六步:驗證效果,如果不在E0/2下,調用Policy-map策略,開啓BT下載,可以看到該接口發現了很多BT的流量,BT流量非常瘋狂

         

norvel-network#sh ip nbar protocol-discovery int e0/2

 

 Ethernet0/2

                            Input                    Output                 

   Protocol                 Packet Count             Packet Count           

                            Byte Count               Byte Count             

                            5 minute bit rate (bps)  5 minute bit rate (bps)

   ------------------------ ------------------------ ------------------------

   http                     33963                    24384                  

                            33559299                 6041847                

                            292000                   67000                  

   bittorrent               4326                     7868                   

                            2204807                  3092548                

                            46000                    5500

 

 

 

 第七步接口下調用Policy-map 策略檢查接口Drop包的數量5分鐘內丟棄了10000

 

norvel-network#sh policy-map int e0/2

 Ethernet0/2

  Service-policy output: Deny-BT

 

    Class-map: BT (match-all)

      1290 packets, 150864 bytes

      5 minute offered rate 10000 bps, drop rate 10000 bps

      Match: protocol bittorrent

      drop

 

    Class-map: class-default (match-any)

      27006 packets, 5211833 bytes

      5 minute offered rate 97000 bps, drop rate 0 bps

      Match: any

 

 

第八步:爲了更好的看一下 丟棄的效果,我們暫時把接口下的策略取消掉,來觀察BT的下載速度是否在猛漲

 

norvel-network(config)#policy-map Deny-BT

norvel-network(config-pmap)#class BT

norvel-network(config-pmap-c)#no drop

 

 

關閉丟棄的策略,BT的下載速度開始上漲了,

clip_image005

你可以多觀察幾分鐘,只要你的帶寬夠大,種子資源夠活躍,這“變態下載”速度會越來越快。

第九步:啓用NBAR策略,封殺BT的流量,我們觀察BT下載速度,在一分一秒的降低,幾分鐘之後的0KB/S,而且一直這樣持續。

說明NBAR封殺BT的流量,現象成功了

 

norvel-network(config)#policy-map Deny-BT

norvel-network(config-pmap)#class BT

norvel-network(config-pmap-c)#drop

 

 

 

clip_image007

 

而且下載速度哪裏一直保持的是0KB/S

clip_image009

 

下載的流量經過路由器是全被丟棄了。

norvel-network#sh policy-map int e0/2

 Ethernet0/2

  Service-policy input: Deny-BT

    Class-map: BT (match-all)

      8448 packets, 3672204 bytes

      5 minute offered rate 26000 bps, drop rate 27000 bps

      Match: protocol bittorrent

      drop

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章