功能简介

网络基础保护策略 (Network Foundation Protection Policy),简称NFPP,提供交换机防攻击功能。

在网络环境中经常发现一些恶意的攻击,这些攻击会给交换机带来过重的负担,引起交换机CPU利用率过高,导致交换机无法正常运行。这些攻击具体表现在:

拒绝服务攻击可能导致大量消耗交换机内存、表项或者其它资源,使系统无法继续服务。

大量的报文流砸向CPU,占用了整个送CPU的报文的带宽,导致正常的协议流和管理流无法被CPU处理,带来协议震荡或者无法管理,从而导致数据面的转发受影响,并引起整个网络无法正常运行。

大量的报文砸向CPU会消耗大量的CPU资源,使CPU一直处于高负载状态,从而影响管理员对设备进行管理或者设备自身无法运行。

NFPP可以有效地防止系统受这些攻击的影响。在受攻击情况下,保护系统各种服务的正常运行,以及保持较低的CPU负载,从而保障了整个网络的稳定运行。

一、组网需求

NFPP支持对多种报文的攻击检测限速,包括ARP、ICMP、DHCP等;同时还支持用户自己定义报文匹配特征,以及对应的攻击检测限速策略。

二、组网拓扑

三、配置要点

普通用户、攻击者接入交换机。

四、配置步骤

交换机WEB配置:

注:web配置只提供NFPP开关,并采用默认参数,如需要修改请用CLI.

 

【安全/NFPP】-->【NFPP】

默认设备打开ARP防攻击、IP防扫描、ICMP防攻击、DHCPV4防攻击、ND防攻击。

 

交换机CLI配置:

接入交换机配置:

1、配置交换机的防ARP欺骗功能,具体也可以参见DHCP环境防ARP欺骗章节中DHCP Snooping+DAI方案。

Ruijie#configure terminal

Ruijie(config)#vlan 10  

Ruijie(config-vlan)#exit

Ruijie(config)#ip arp inspection vlan 10

Ruijie(config)#ip dhcp snooping

Ruijie(config)#interface gigabitEthernet 0/25

Ruijie(config-if-GigabitEthernet 0/25)#switchport mode trunk

Ruijie(config-if-GigabitEthernet 0/25)#ip dhcp snooping trust

Ruijie(config-if-GigabitEthernet 0/25)#ip arp inspection trust

Ruijie(config-if-GigabitEthernet 0/25)#exit

Ruijie(config)#interface range fastEthernet 0/1-24

Ruijie(config-if-range)#switchport access vlan 10

Ruijie(config-if-range)#end

Ruijie#

 

2、NFPP功能配置:

1)全局NFPP配置

       默认交换机的NFPP功能是开启的,二层交换机参数无需调整,只需将上联口NFPP关闭,同时由于开启了DAI的原因,需要调整放大CPP。

        Ruijie(config)#cpu-protect type arp pps 500 ,如果没有使用DAI,CPP也无需调整。

全局下的NFPP调整参数如下

Ruijie(config-nfpp)#log-buffer entries 1024                                     ------>设置NFPP log缓存的容量为1024条(默认256)

Ruijie(config-nfpp)#log-buffer logs 1 interval 300                          ------>为避免NFPP产生的LOG太多,调整每次打印一条相同log信息的阀值为300秒

Ruijie(config-nfpp)#exit

Ruijie(config)#

 

2)接口NFPP配置

为了防止大量网关发送的正常的相关报文(特别是网关发送的ARP请求或回应报文)被接入交换机误认为是攻击被丢弃,从而导致下联用户无法获取网关的ARP信息而无法上网,需要将上联口的NFPP功能关闭

Ruijie(config)#int g0/25

Ruijie(config-if-GigabitEthernet 0/25)#no nfpp arp-guard enable    ------>关闭接口的ARP-guard功能,关闭该功能后,该接口进入的数据报文不进行NFPP检测

Ruijie(config-if-GigabitEthernet 0/25)#no nfpp dhcp-guard enable ------>关闭接口的dhcp-guard功能,关闭该功能后,该接口进入的数据报文不进行NFPP检测

Ruijie(config-if-GigabitEthernet 0/25)#no nfpp dhcpv6-guard enable   ------>关闭接口的dhcpv6-guard功能,关闭该功能后,该接口进入的数据报文不进行NFPP检测

Ruijie(config-if-GigabitEthernet 0/25)#no nfpp icmp-guard enable       ------>关闭接口的icmp-guard功能,关闭该功能后,该接口进入的数据报文不进行NFPP检测

Ruijie(config-if-GigabitEthernet 0/25)#no nfpp ip-guard  enable           ------>关闭接口的ip-guard功能,关闭该功能后,该接口进入的数据报文不进行NFPP检测

Ruijie(config-if-GigabitEthernet 0/25)#no nfpp nd-guard  enable         ------>关闭接口的nd-guard功能,关闭该功能后,该接口进入的数据报文不进行NFPP检测

Ruijie(config-if-GigabitEthernet 0/25)#exit

Ruijie(config)#

 

核心交换机NFPP配置:

只做下述调整即可:

Ruijie(config)#nfpp

Ruijie(config-nfpp)#arp-guard  attack-threshold   per-port 800       ------>设置每个端口的攻击阀值为800个,超过此值丢弃并打印攻击日志

Ruijie(config-nfpp)#arp-guard  rate-limit per-port 500      ------>每个端口每秒限速500个arp报文,多余的ARP报文将被丢弃(默认限速阀值是100个偏小)

Ruijie(config-nfpp)#log-buffer entries 1024         ------>设置NFPP log缓存的容量为1024条(默认256)

Ruijie(config-nfpp)#log-buffer logs 1 interval 300     ------>调整log打印频率为300S打印1次

Ruijie(config-nfpp)#exit

Ruijie(config)#

 

如果需要开启硬件隔离,为了防止误判,应放大限速及攻击检测的阈值。

注意:

隔离功能通常不建议开启,在汇聚设备上如果用户攻击非常频繁,导致设备CPU90%以上,此事可以考虑进行硬件隔离,并放大当前攻击的检测阈值,防止误判。因为一旦隔离将会导致这些攻击性质的用户无法上网,接入设备上不要开启NFPP硬件隔离。

 

Ruijie(config)#nfpp                 ------>进入NFPP配置模式

Ruijie(config-nfpp)#arp-guard  isolate-period 600                            ------>超过ARP攻击阀值后,对用户进行隔离,设置隔离时间为600秒

Ruijie(config-nfpp)#arp-guard  attack-threshold   per-src-mac 30    ------>设置每个mac的攻击阀值为10个,如果交换机检测每个mac发送的ARP报文大于10个,那么交换机会把该用户放入ARP攻击表,可以对这些用户进行硬件隔离(默认不进行硬件隔离,可以进行配置隔离时间进行隔离,设置隔离时间后会占用硬件表项资源。默认每MAC的攻击阀值是8个)

Ruijie(config-nfpp)#arp-guard  attack-threshold   per-src-ip 30        ------>设置每个IP的攻击阀值为10个,如果交换机检测每个IP发送的ARP报文大于10个,那么交换机会把该用户放入ARP攻击表,可以对这些用户进行硬件隔离(默认不进行硬件隔离,可以进行配置隔离时间进行隔离,设置隔离时间后会占用硬件表项资源。默认每IP的攻击阀值是8个)

Ruijie(config-nfpp)#arp-guard  rate-limit  per-src-mac 20   ------>每个mac每秒限速6个arp报文,多余的ARP报文将被丢弃(默认限速阀值是4个)

Ruijie(config-nfpp)#arp-guard  rate-limit  per-src-ip 20       ------>每个IP每秒限速6个arp报文,多余的ARP报文将被丢弃(默认限速阀值是4个)

Ruijie(config-nfpp)#ip-guard attack-threshold per-src-ip 80            ------>设置IP攻击阀值为40个每IP

Ruijie(config-nfpp)#ip-guard isolate-period 600                               ------>超过IP攻击阀值后,对用户进行隔离,设置隔离时间为600秒

 

 

五、功能验证

1. WEB查看NFPP攻击行为:

【网络/NFPP】-->【NFPP】点击ARP防攻击列表可以查看被监控的主机。

2. CLI查看NFPP攻击行为:

2.1、查看ARP-guard的全局配置情况

2.2、查看ARP-guard的扫描表:

2.3、查看ARP-guard被隔离的用户

2.4、查看放入日志缓冲区的用户

 

常见NFPP相关log信息的说明

1)*Dec 26 13:37:10:%NFPP_ARP_GUARD-4-SCAN: Host<IP=1.1.1.1,MAC=0000.0000.0004,port=Gi4/1,VLAN=1> was detected.(2012-12-26 13:00:04)

a、日志内容最后面括号中的时间是检测到扫描的时间,事件产生的时间,但是日志打印的时间是条目最前面的时间戳;

b、该日志表示的是per-src-mac/per-src-ip检测条件的扫描水线(arp-guard rate-limit )超过阀值,告警,里面包含了MAC地址信息,端口,vlan等;

c、该日志只是一个提醒功能,不会做隔离,在网关设备带机数比较大的情况下,可能会经常报这样的类似log,如果当前运行正常,可不关注;如果影响使用,或者信息比较异常(比如报的ip根本不存在),那么需要考虑可能存在的攻击,欺骗情况

d、show nfpp arp-guard scan/hosts命令来查看具体的超告警水线,超攻击水线的用户记录。

2)*Dec 26 13:46:10:%NFPP_ARP_GUARD-4-SCAN_TABLE_FULL: ARP scan table is full.

a、ARP 扫描表只保存最新的256 条记录。当ARP 扫描表满的时候,会打印日志提醒管理员,针对该日志不需要做任何处理。

b、扫描表只是存储nfpp log的地方,如果表满了那么新的日志就会覆盖旧的日志,仅此而已,该事件对用户使用不会产生任何影响。

c、可以通过clear nfpp log命令来清空专属缓冲区的log,不影响其他日志的存储。

d、可以通过调整NFPP log buffe的缓冲区及调整打印时间值来降低打印频率:

Ruijie(config)#nfpp

Ruijie(config-nfpp)#log-buffer entries 1024                                     ------>设置NFPP log缓存的容量为1024条

Ruijie(config-nfpp)#log-buffer logs 1 interval 300                          ------>为避免NFPP产生的LOG太多,调整每次打印一条相同log信息的阀值为300秒

3)*Dec 26 13:55:10:%NFPP_ARP_GUARD-4-DOS_DETECTED: Host<IP=N/A,MAC=0000.0000.0004,port=Gi4/1,VLAN=1> was detected.(2012-12-26 13:43:04)

a、设备检测到有arp攻击的事件的日志记录,基于per-src-mac的攻击水线达到告警值,设备记录了该用户的MAC,端口,vlan信息。

b、这个信息也只是作为提醒,不会做硬件隔离,但是超过扫描阀值的部分报文会被设备丢弃,已保护cpu。

c、如果检测的信息包含的都是合法的用户,并且经过管理员确认后确认不存在攻击可能性的话,那么需要考虑是否是大用户数的情况,或者是否流量比较大,此时可能需要考虑调整arp-guard里面的各项参数到合理的值。

d、show nfpp arp-guard scan/hosts命令来查看具体的超告警水线,超攻击水线的用户记录。

4)*Dec 26 14:19:10:%NFPP_ARP_GUARD-4-ISOLATED:Host <IP=N/A,MAC=0000.0000.0004,port=Gi4/1,VLAN=1> was isolated.(2012-12-26 14:19:0)

a、管理员配置了硬件隔离功能,该用户将被隔离isolate-period时间,这段时间用户发起的任何报文都直接被硬件丢弃,不送cpu。

b、show nfpp arp-guard hosts命令可以查看被隔离的用户信息,不打*标记的用户表示已经被硬件隔离成功。

5)*Dec 26 14:23:10:%NFPP_ARP_GUARD-4-ISOLATE_FAILED: Failed to isolate host <IP=N/A,MAC=0000.0000.0004,port=Gi4/1,VLAN=1>.(2012-12-26 14:22:50)

a、当硬件隔离失败(原因通常是内存不足或者硬件资源不足)时,打印的日志信息

b、硬件隔离功能开启会消耗slice资源,每个用户占用一条ACE,整机硬件隔离的总数254个,不可调整

6)ip-guard的日志通arp-guard的日志类似,这里不在举例。