一.什么是NBAR?

基于网络的应用程序识别(NBAR)可以对使用动态分配TCP/UDP端口号的应用程序和HTTP流量等进行分类.

 
NBAR 是一种动态能在四到七层寻找协议的技术,它不但能做到普通ACL能做到那样控制静态的、简单的网络应用协议TCP/UDP 的端口号。例如我们熟知的 WEB 应用使用的 TCP 80,也能做到控制一般 ACLs 不能做到动态的端口的那些协议,例如 VoIP 使用的 H.323, SIP 等。在使用NBAR的时候要先启用CEF特性。而且可以使用数据包描述语言模块(PDLM)从路由器的闪存里加载,用于在不使用新的Cisco IOS软件,或重启路由器的情况下对新的协议或应用程序进行识别.

二.NBAR的限制

NBAR不能在以下几种逻辑接口上使用:

1.快速以太网信道.

2.使用了隧道或加密技术的接口.

3.SVI.

4.拨号接口.

5.多链路PPP(MLP).

NBAR的一些限制:

1.不支持多于24个的并发URL,HOST或MINE的匹配类型.

2.不支持超过400字节的URL匹配.

3.不支持非IP流量.

4.不支持组播或其他非CEF的交换模式.

5.不支持被分片的数据包.

6.不支持源自或去往运行NBAR的路由器的IP流量.

三.如何配置NBAR?

配置NBAR的基本步骤:

1.启用CEF特性:

Aiko(config)#ip cef

2.把流量分类,定义class map:

Aiko(config)#class-map [match-all|match-any] {map-name}
Aiko(config-cmap)#match protocol {protocol}

3.设置policy map,选择调用的class-map,以及规则动作:

Aiko(config)#policy-map {policy-name}
Aiko(config-pmap)#class {class-map}
Aiko(config-pmap-c)#{action}

4.把策略应用在接口上:

Aiko(config-if)#service-policy {input|output} {policy-map}

四、检验NBAR配置

1、查看流量分类信息: nimokaka#show class-map [map-name]

2、查看policy map: nimokaka#show policy-map [policy-name]

3、查看接口的policy map 信息: nimokaka#show policy-map interface [interface]

4、显示NBAR所使用的PDLM: nimokaka#show ip nbar pdlm

5、显示NBAR使用的协议到端口号的映射信息:nimokaka#show ip nbar port-map
 
五、NBAR控制BT和eDonkey

1、 加载bittorrent.pdlm 到路由器闪存里

nimokaka(config)#ip nbar pdlm flash://bittorrent.pdlm

2、定义class map,识别BitTorrent程序流量,并将进站的BitTorrent程序流量丢弃

ip cef
!
class-map kaka
match protocol bittorrent
!
policy-map drop-bittorrent
class kaka
drop
!
interface Serial0
ip address 192.168.0.1 255.255.255.0
service-policy input drop-bittorrent

六、NBAR病毒防治

使用NBAR来防止红色代码(Code-Red)和尼姆达(Nimda)蠕虫病毒,配置如下
ip cef
!
class-map match-all DENY-ATTACK
match protocol http url "*.ida*"
match protocol http url "*cmd.exe*"
match protocol http url "*root.exe*"
match protocol http url "*readme.eml*"
!
policy-map nimokaka class DENY-ATTACK drop
interface Serial0
ip address 10.0.0.1 255.255.255.252
service-policy input nimokaka