一、ARP 报文限速

如果设备对收到的大量 ARP 报文全部进行处理,可能导致 CPU 负荷过重而无法处理其他业务。因此,在处理之前,设备需要对 ARP 报文进行限速,以保护 CPU 资源。

设备提供了如下几类针对 ARP 报文的限速功能:

1、根据源 MAC 地址或源 IP 地址进行 ARP 报文限速

当设备检测到某一个用户在短时间内发送大量的 ARP 报文,可以针对该用户配置基于源 MAC 地址或源 IP地址的 ARP 报文限速。在单位时间内,如果该用户的 ARP 报文数目超过设定阈值(ARP 报文限速值),则丢弃超出阈值部分的 ARP 报文。

 根据源 MAC 地址进行 ARP 报文限速:

如果指定 MAC 地址,则针对指定源 MAC 地址的 ARP 报文根据限速值进行限速;如果不指定 MAC 地址,则针对每一个源 MAC 地址的 ARP 报文根据限速值进行限速。

 根据源 IP 地址进行 ARP 报文限速:

如果指定 IP 地址,则针对指定源 IP 地址的 ARP 报文根据限速值进行限速;如果不指定 IP 地址,则针对每一个源 IP 地址的 ARP 报文根据限速值进行限速。

2、根据目的 IP 地址进行 ARP 报文限速

当设备需要处理大量目的 IP 地址相同的 ARP 报文时,可以配置基于目的 IP 地址的 ARP 报文限速。设备会对上送 CPU 的 ARP 报文根据目的 IP 地址进行统计,如果在 1 秒内收到的同一个目的 IP 地址的 ARP 报文超过设定阈值(ARP 报文限速值),则丢弃超出阈值部分的 ARP 报文。

3、针对 Super VLAN 的 VLANIF 接口下的 ARP 报文限速

当设备的 VLANIF 接口接收到触发 ARP Miss 消息的 IP 报文(关于 ARP Miss 消息的详细解释请参见 ARPMiss 消息限速)时,或者在设备的 VLANIF 接口上启用 ARP 代理功能之后,设备接收到目的 IP 符合代理条件且该 IP 对应的 ARP 条目不存在的 ARP 请求报文时,都会触发 Super VLAN 的 VLANIF 接口进行 ARP学习。

设备会将 ARP 请求报文在每个 Sub VLAN 下复制,如果该 Super VLAN 下配置了大量 Sub VLAN,那么设备将产生大量的 ARP 请求报文。为了避免 CPU 因复制、发送大量 ARP 请求报文而负担过重,设备支持 Super VLAN 的 VLANIF 接口下的 ARP 报文限速功能,以对该场景下设备发送的 ARP 请求报文进行流量控制。

4、针对全局、 VLAN 和接口的 ARP 报文限速

设备支持在全局、 VLAN 和接口下配置 ARP 报文的限速值和限速时间,有效顺序为接口优先, VLAN 其次,最后为全局。

另外,在接口下还可以指定阻塞 ARP 报文的时间段。如果设备的某个接口在 ARP 报文限速时间内接收到的 ARP 报文数目超过了设定阈值(ARP 报文限速值),则丢弃超出阈值部分的 ARP 报文,并在接下来的一段时间内(即阻塞 ARP 报文时间段)持续丢弃该接口下收到的所有 ARP 报文。

 针对全局的 ARP 报文限速:在设备出现 ARP 攻击时,限制全局处理的 ARP 报文数量。

 针对 VLAN 的 ARP 报文限速:在某个 VLAN 内的所有接口出现 ARP 攻击时,限制处理收到的该 VLAN内的 ARP 报文数量,配置本功能可以保证不影响其他 VLAN 内所有接口的 ARP 学习。

 针对接口的 ARP 报文限速:在某个接口出现 ARP 攻击时,限制处理该接口收到的 ARP 报文数量,配置本功能可以保证不影响其他接口的 ARP 学习。

二、ARP Miss 消息限速

如果网络中有用户向设备发送大量目标 IP 地址不能解析的 IP 报文(即路由表中存在该 IP 报文的目的 IP 对应的路由表项,但设备上没有该路由表项中下一跳对应的 ARP 表项),将导致设备触发大量的 ARP Miss 消息。

这种触发 ARP Miss 消息的 IP 报文(即 ARP Miss 报文)会被上送到主控板进行处理,设备会根据 ARP Miss 消息生成和下发大量临时 ARP 表项并向目的网络发送大量 ARP 请求报文,这样就增加了设备 CPU 的负担,同时严重消耗目的网络的带宽资源。

为了避免这种 IP 报文攻击所带来的危害,设备提供了如下几类针对 ARP Miss 消息的限速功能:

1、根据源 IP 地址进行 ARP Miss 消息限速

当设备检测到某一源 IP 地址的 IP 报文在 1 秒内触发的 ARP Miss 消息数量超过了 ARP Miss 消息限速值,就认为此源 IP 地址存在攻击。

此时如果设备对 ARP Miss 报文的处理方式是 block 方式,设备会丢弃超出限速值部分的 ARP Miss 消息,即丢弃触发这些 ARP Miss 消息的 ARP Miss报文,并下发一条 ACL来丢弃该源 IP 地址的后续所有 ARP Miss报文;如果是 none-block 方式,设备只会通过软件限速的方式丢弃超出限速值部分的 ARP Miss 消息,即丢弃触发这些 ARP Miss 消息的 ARP Miss 报文。

如果指定了 IP 地址,则针对指定源 IP 址的 ARP Miss 消息根据限速值进行限速;如果不指定 IP 地址,则针对每一个 IP 地址的 ARP Miss 消息根据限速值进行限速。

2、针对全局、 VLAN 和接口的 ARP Miss 消息限速

设备支持在全局、 VLAN 和接口下配置 ARP Miss 消息限速,有效顺序为接口优先, VLAN 其次,最后为全局。

针对全局的 ARP Miss 消息限速:在设备出现目标 IP 地址不能解析的 IP 报文攻击时,限制全局处理的ARP Miss 消息数量。

针对 VLAN 的 ARP Miss 消息限速:在某个 VLAN 内的所有接口出现目标 IP 地址不能解析的 IP 报文攻击时,限制处理该 VLAN 内报文触发的 ARP Miss 消息数量,配置本功能可以保证不影响其他 VLAN内所有接口的 IP 报文转发。

针对接口的 ARP Miss 消息限速:在某个接口出现目标 IP 地址不能解析的 IP 报文攻击时,限制处理该接口收到的报文触发的 ARP Miss 消息数量,配置本功能可以保证不影响其他接口的 IP 报文转发。

3、通过设定临时 ARP 表项的老化时间控制 ARP Miss 消息的触发频率

当 IP 报文触发 ARP Miss 消息时,设备会根据 ARP Miss 消息生成临时 ARP 表项,并且向目的网段发送 ARP请求报文。

 在临时 ARP 表项老化时间范围内:设备收到ARP应答报文前,匹配临时ARP表项的IP报文将被丢弃并且不会触发ARP Miss消息。设备收到 ARP 应答报文后,则生成正确的 ARP 表项来替换临时 ARP 表项。

 当老化时间超时后,设备会清除临时 ARP 表项。此时如果设备转发 IP 报文匹配不到对应的 ARP 表项,则会重新触发 ARP Miss 消息并生成临时 ARP 表项,如此循环重复。

当判断设备受到攻击时,可以增大临时 ARP 表项的老化时间,减小设备 ARP Miss 消息的触发频率,从而减小攻击对设备的影响。

三、免费 ARP 报文主动丢弃

免费 ARP 报文是一种特殊的 ARP 报文,该报文中携带的源 IP 地址和目地 IP 地址都是本机 IP 地址,源 MAC 地址是本机 MAC 地址,目的 MAC 地址是广播地址。

当有新的用户主机接入网络时,该用户主机会以广播的方式发送免费 ARP 报文,来确认广播域中有无其他设备与自己的 IP 地址冲突;

当用户主机改变了硬件地址时,为了能够在其他所有用户主机的 ARP 表项老化之前通告其硬件地址已经发生改变,该用户主机也会发送免费 ARP 报文。

由于发送免费 ARP 报文的用户主机并不需要经过身份验证,任何一个用户主机都可以发送免费 ARP 报文,这样就引入了两个问题:

 如果网络中出现大量的免费 ARP 报文,设备会因为处理这些报文而导致 CPU 负荷过重,从而不能正常处理合法的 ARP 报文。

 如果设备处理的免费 ARP 报文是攻击者伪造的,会造成设备错误地更新 ARP 表项,导致合法用户的通信流量发生中断。

参考以上问题描述,在确认攻击来自免费 ARP 报文之后,可以在网关设备上使能免费 ARP 报文主动丢弃功能,使网关设备直接丢弃免费 ARP 报文。

注意: 当有主机更新了硬件地址并重新接入网络(如主机关机后更换了接口卡并重新启动,或双机热备份系统中主用设备发生故障,备用设备接管)时,如果设备开启了免费 ARP 报文主动丢弃功能,可能会导致其他网络设备因无法正常更新相应的 ARP 表项而无法与该主机建立正常通信。

四、ARP 表项严格学习

如果大量用户在同一时间段内向设备发送大量 ARP 报文,或者攻击者伪造正常用户的 ARP 报文发送给设备,则会造成下面的危害:

 设备因处理大量 ARP 报文而导致 CPU 负荷过重,同时设备学习大量的 ARP 报文可能导致设备 ARP 表项资源被无效的 ARP 条目耗尽,造成合法用户的 ARP 报文不能继续生成 ARP 条目,进而导致用户无法正常通信。

 伪造的 ARP 报文将错误地更新设备的 ARP 表项,导致用户无法正常通信。

为避免上述危害,可以在网关设备上部署 ARP 表项严格学习功能。

ARP 表项严格学习是指只有本设备主动发送的 ARP 请求报文的应答报文才能触发本设备学习 ARP,其他设备主动向本设备发送的 ARP 报文不能触发本设备学习 ARP,这样,可以拒绝大部分的 ARP 报文攻击。

ARP 表项严格学习

如图所示。通常情况下,当 UserA 向 Gateway 发送 ARP 请求报文后, Gateway 会向 UserA 回应 ARP 应答报文,并且添加或更新 UserA 对应的 ARP 表项。当 Gateway 配置 ARP 表项严格学习功能以后:

 对于 Gateway 收到 UserA 发送来的 ARP 请求报文, Gateway 不添加也不更新 UserA 对应的 ARP 表项。如果该请求报文请求的是 Gateway 的 MAC 地址,那么 Gateway 会向 UserA 回应 ARP 应答报文。

 如果 Gateway 向 UserB 发送 ARP 请求报文,待收到与该请求对应的 ARP 应答报文后, Gateway 会添加或更新 UserB 对应的 ARP 表项。

五、ARP 表项限制

ARP 表项限制功能应用在网关设备上,可以限制设备的某个接口学习动态 ARP 表项的数目。默认状态下,接口可以学习的动态 ARP 表项数目规格与全局的 ARP 表项规格保持一致。

当部署完 ARP 表项限制功能后,如果指定接口下的动态 ARP 表项达到了允许学习的最大数目,将不再允许该接口继续学习动态 ARP 表项,以保证当一个接口所接入的某一用户主机发起 ARP 攻击时不会导致整个设备的 ARP 表资源都被耗尽。

六、ARP 表项固化

如图所示, Attacker 仿冒 UserA 向 Gateway 发送伪造的 ARP 报文,导致 Gateway 的 ARP 表中记录了错误的UserA 地址映射关系,造成 UserA 接收不到正常的数据报文。

为了防御这种欺骗网关攻击,可以在网关设备上部署 ARP 表项固化功能。网关设备在第一次学习到 ARP 以后,不再允许用户更新此 ARP 表项或只能更新此 ARP 表项的部分信息,或者通过发送单播 ARP 请求报文的方式对更新 ARP 条目的报文进行合法性确认。

设备提供的三种 ARP 表项固化模式,如表所示。

七、动态 ARP 检测

网络中针对 ARP 的攻击层出不穷,中间人攻击是常见的 ARP 欺骗攻击方式之一。

中间人攻击

如图所示,是中间人攻击的一个场景。攻击者主动向 UserA 发送伪造 UserB 的 ARP 报文,导致 UserA 的 ARP表中记录了错误的 UserB 地址映射关系,攻击者可以轻易获取到 UserA 原本要发往 UserB 的数据;同样,攻击者也可以轻易获取到 UserB 原本要发往 UserA 的数据。这样, UserA 与 UserB 间的信息安全无法得到保障。

为了防御中间人攻击,可以在 Switch 上部署动态 ARP 检测功能。

动态 ARP 检测 DAI(Dynamic ARP Inspection)是利用 DHCP Snooping 绑定表来防御中间人攻击的。当设备收到ARP 报文时,将此 ARP 报文对应的源 IP、源 MAC、 VLAN 以及接口信息和 DHCP Snooping 绑定表的信息进行比较,如果信息匹配,说明发送该 ARP 报文的用户是合法用户,允许此用户的 ARP 报文通过,否则就认为是攻击,丢弃该 ARP 报文。

说明: 动态 ARP 检测功能仅适用于 DHCP Snooping 场景。设备使能 DHCP Snooping 功能后,当 DHCP 用户上线时,设备会自动生成 DHCP Snooping 绑定表;对于静态配置 IP 地址的用户,设备不会生成 DHCP Snooping 绑定表,所以需要手动添加静态 DHCP Snooping 绑定表。

当 Switch 上部署动态 ARP 检测功能后,如果攻击者连接到 Switch 并试图发送伪造的 ARP 报文, Switch 会根据DHCP Snooping 绑定表检测到这种攻击行为,对该 ARP 报文进行丢弃处理。如果 Switch 上同时使能了动态 ARP检测丢弃报文告警功能,则当 ARP 报文因不匹配 DHCP Snooping 绑定表而被丢弃的数量超过了告警阈值时,Switch 会发出告警通知管理员。

八、ARP 防网关冲突

如图所示,用户主机直接接入网关, Attacker 将伪造网关的 ARP 报文发送给 UserA 和 UserB,使 UserA 和 UserB误以为攻击者即为网关。UserA 和 UserB 的 ARP 表中会记录错误的网关地址映射关系,这样就会把发往网关的流量均发送给了攻击者,攻击者可轻易窃听到 UserA 和 UserB 发送的数据内容。

ARP 网关冲突

为了防范攻击者仿冒网关,可以在网关设备上使能 ARP 防网关冲突功能。当设备收到的 ARP 报文存在下列情况之一:  ARP 报文的源 IP 地址与报文入接口对应的 VLANIF 接口的 IP 地址相同  ARP 报文的源 IP 地址是入接口的虚拟 IP 地址,但 ARP 报文源 MAC 地址不是 VRRP 虚 MAC

说明: 一个 VRRP 备份组,被当作一个共享局域网内主机的缺省网关,即虚拟交换机。一个虚拟交换机拥有一个VRRP 虚 MAC, VRRP 虚 MAC 根据虚拟交换机 ID 生成,格式为:00-00-5E-00-01-{VRID}(VRRP)。当虚拟交换机回应 ARP 请求时,使用的是 VRRP 虚 MAC 地址,而不是接口的真实 MAC 地址。

设备就认为该 ARP 报文是与网关地址冲突的 ARP 报文,设备将生成 ARP 防攻击表项,并在后续一段时间内丢弃该接口收到的同 VLAN 以及同源 MAC 地址的 ARP 报文,这样可以防止与网关地址冲突的 ARP 报文在 VLAN内广播。

此时,还可以在设备上使能发送免费 ARP 报文功能,通过广播发送正确的免费 ARP 报文到所有用户,迅速将已经被攻击的用户记录的错误网关地址映射关系修改正确。

九、发送免费 ARP 报文

如图所示, Attacker 仿冒网关向 UserA 发送了伪造的 ARP 报文,导致 UserA 的 ARP 表中记录了错误的网关地址映射关系,从而正常的数据不能被网关接收。

仿冒网关攻击

为了避免上述危害,可以在网关设备上部署发送免费 ARP 报文功能,定期更新用户的 ARP 表项,使得用户 ARP表项中记录的是正确的网关 MAC 地址。

设备支持在全局或 VLANIF 接口下配置发送免费 ARP 报文功能,当全局和 VLANIF 接口下都使能了发送免费ARP 功能时, VLANIF 接口下的配置优先生效。

十、ARP 报文内 MAC 地址一致性检查

ARP 报文内 MAC 地址一致性检查功能主要应用于网关设备上,可以防御以太网数据帧首部中的源/目的 MAC 地址和 ARP 报文中的源/目的 MAC 地址不同的 ARP 攻击。 部署本功能后,网关设备在进行 ARP 学习前将对 ARP 报文进行检查。如果以太网数据帧首部中的源/目的 MAC地址和 ARP 报文中的源/目的 MAC 地址不同,则认为是攻击报文,将其丢弃;否则,继续进行 ARP 学习。

十一、ARP 报文合法性检查 ARP 报文合法性检查功能可以部署在接入设备或网关设备上,用来对 MAC 地址和 IP 地址不合法的报文进行过滤。设备支持以下三种可以任意组合的检查。

 源MAC地址检查:设备会检查ARP报文中的源MAC地址和以太网数据帧首部中的源MAC地址是否一致,一致则认为合法,否则丢弃报文;

 目的MAC地址检查:设备会检查ARP应答报文中的目的MAC地址是否和以太网数据帧首部中的目的 MAC地址一致,一致则认为合法,否则丢弃报文;

 IP 地址检查:设备会检查 ARP 报文中的源 IP 和目的 IP 地址,全 0、全 1、或者组播 IP 地址都是不合法的,需要丢弃。对于 ARP 应答报文,源 IP 和目的 IP 地址都进行检查;对于 ARP 请求报文,只检查源 IP 地址。

十二、DHCP 触发 ARP 学习

在 DHCP 用户场景下,当 DHCP 用户数目很多时,设备进行大规模 ARP 表项的学习和老化会对设备性能和网络环境形成冲击。

为了避免此问题, 可以在网关设备上部署 DHCP 触发 ARP 学习功能。当 DHCP 服务器给用户分配了 IP 地址,网关设备会根据 VLANIF 接口上收到的 DHCP ACK 报文直接生成该用户的 ARP 表项。该功能生效的前提是使能DHCP Snooping 功能。

网关设备上还可同时部署动态 ARP 检测功能,防止 DHCP 用户的 ARP 表项被伪造的 ARP 报文恶意修改。

十三、VPLS 网络中 ARP 代理

在 VPLS 网络中,为了防止 PW(Pseudo Wire)侧的伪造 ARP 报文被广播到 AC(Attachment Circuit)侧形成 ARP欺骗攻击,可以在 PE 设备上部署 VPLS 网络中的 ARP 代理功能,以及 VPLS 网络中的 DHCP Snooping 功能。

部署上述功能后, PW 侧的 ARP 报文将会被上送到主控板进行处理:

 如果是 ARP 请求报文,并且报文的目的 IP 地址在 DHCP Snooping绑定表中存在,则设备根据 DHCP Snooping绑定表组装 ARP 应答报文直接回应 PW 侧的请求方。

 如果不是 ARP 请求报文,或者 ARP 请求报文的目的 IP 地址不在 DHCP Snooping 绑定表中,则报文被正常转发。