一.什么是NBAR?
   NBAR=Network-based Application Recognition
基于网络的应用程序识别(NBAR)可以对使用动态分配TCP/UDP端口号的应用程序和HTTP流量等进行分类.在使用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}

3.定义NBAR要匹配的协议:

Aiko(config-cmap)#match protocol {protocol}

4.设置policy map:

Aiko(config)#policy-map {policy-name}

5.调用class map:

Aiko(config-pmap)#class {class-map}

6.设置策略:

Aiko(config-pmap-c)#{action}

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

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

四.用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 Aiko

class DENY-ATTACK

drop

!

interface Serial0

ip address 10.0.0.1 255.255.255.252

service-policy input Aiko