ARP类攻击,经常令网络莫名其妙的奇慢、上不了网,甚至导致设备或整个网络瘫痪,而且很难找到真正的元凶。抓包故障排除时,经常发现大量源IP地址或者MAC地址根本不是本网络的广播包或帧,或者发现网关的MAC地址被非法地修改了,甚至出现源或目的IP、MAC地址全为0的包。这一切都是因为ARP协议本身没有一个安全认证机制,给恶意攻击者留下了可乘之机。
ARP安全方面的隐患就是两个:一是利用非法、无效的伪造源/目的IP地址或源MAC地址发送大量ARP报文,至于设备或服务器无力承受而最终出现网络速度非常慢,或者中断,这就是通常所说的ARP泛洪攻击或者ARP DoS攻击;二是利用伪造的IP地址或者MAC地址非法修改网关或者网络中其他主机的ARP表项,造成用户无法上网,或者网络中无法正确访问这些主机,这些就是通常所说的ARP网关或主机欺骗攻击。
ARP安全概述
ARP(AddressResolution Protocol,地址解析协议)是将IP地址解析为以太网MAC地址(或称物理地址)的协议。ARP协议简单、易用,但是也因为其没有任何安全认证机制而容易被攻击者利用。
ARP安全是针对ARP攻击的一种安全特性。它通过一系列对ARP表项学习和ARP报文处理的限制、检查等措施来保证网络设备的安全性。ARP安全特性不仅能够防范针对ARP协议的攻击,还可以防范网段扫描攻击等基于ARP协议的攻击。常见的ARP攻击方式主要包括以下两种:
(1)ARP泛洪攻击,也叫DoS(Denial of Service,拒绝服务)攻击,主要采用以下两种攻击方式。
①攻击者通过伪造大量源IP地址变化的ARP报文(以广播方式发送),使得设备ARP映射表缓存资源被无效的ARP表项耗尽(因为设备在接收到ARP报文后会提取报文中的源IP地址和源MAC地址,如果设备上没有对应的ARP映射表项就会生成新的ARP映射表项),造成合法用户的ARP报文不能继续生成ARP表项,最终导致正常用户的通信被中断。
②攻击者利用工具扫描本网段主机或者进行跨网段扫描时,会向设备发送大量目的IP地址不能解析的IP报文,导致设备触发大量ARP Miss(ARP表项丢失)消息,生成并下发大量临时ARP表项,然后还会广播大量ARP请求报文以对目的IP地址进行解析,从而造成CPU负荷过重,直到瘫痪。
(2)ARP欺骗攻击,是指攻击者通过发送伪造的ARP报文(可以是伪造的免费ARP报文,也可以是伪造的ARP请求报文或ARP应答报文),非法修改设备或网络内其他用户主机的ARP表项,造成用户或网络的报文通信异常。
涉及到ARP协议:
字段 | 长度(bit) | 含义 |
Ethernet Address of destination | 48比特 | 目的以太网地址。发送ARP请求时,为广播的MAC地址,0xFF.FF.FF.FF.FF.FF。 |
Ethernet Address of sender | 48比特 | 源以太网地址。 |
Frame Type | 16比特 | 表示后面数据的类型。对于ARP请求或应答来说,该字段的值为0x0806。 |
Hardware Type | 16比特 | 表示硬件地址的类型。对于以太网,该类型的值为“1”。 |
Protocol Type | 16比特 | 表示发送方要映射的协议地址类型。对于IP地址,该值为0x0800。 |
Hardware Length | 8比特 | 表示硬件地址的长度,单位是字节。对于ARP请求或应答来说,该值为6。 |
Protocol Length | 8比特 | 表示协议地址的长度,单位是字节。对于ARP请求或应答来说,该值为4。 |
OP | 16比特 | 操作类型:
|
Ethernet Address of sender | 48比特 | 发送方以太网地址。这个字段和ARP报文首部的源以太网地址字段是重复信息。 |
IP Address of sender | 32比特 | 发送方的IP地址。 |
Ethernet Address of destination | 48比特 | 接收方的以太网地址。发送ARP请求时,该处填充值为0x00.00.00.00.00.00。 |
IP Address of destination | 32比特 | 接收方的IP地址。 |
抓包说明:
从上面的两张图中,能够得出,所有的设备都是通过arp报文的发送者MAC和IP来解析的
配置防ARP泛洪攻击
ARP泛洪攻击的基本思想就是发送大量的ARP报文,这样一方面可以使设备中用于缓存ARP表的内存资源被无效ARP表项耗尽,另一方面可能会使设备的CPU负荷过重造成用户无法正常通信。攻击者可能用来进行ARP泛洪攻击的报文包括ARP请求/应答报文、ARP Miss消息、免费ARP报文。
一、配置基于源MAC地址的ARP报文限速
设备处理大量源MAC地址相对固定的ARP报文会造成CPU繁忙,并且如果ARP报文的源IP地址同时不断变化,还会导致设备的ARP表资源被耗尽。为了避免此问题,可以配置设备根据源MAC地址进行ARP报文限速。设备会对上送CPU的ARP报文根据源MAC地址进行统计,如果在1s内收到的同一个源MAC地址的ARP报文超过设定阈值(ARP报文限速值),设备则丢弃超出阈值部分的ARP报文。
二、配置基于源IP地址ARP报文限速
针对源IP地址相对固定的ARP报文,会造成CPU繁忙,影响到正常业务的处理。为了避免此问题,可以配置设备根据源IP地址进行ARP报文限速。设备会对上送CPU的ARP报文根据源IP地址进行统计,如果在1s内收到的同一源IP地址的ARP报文超过设定阈值,则丢弃超出阈值部分的ARP报文。
三、配置基于全局、VLAN或者接口的ARP报文限速
在ARP泛洪攻击的报文中,如果源MAC地址,或者源IP地址都不是相对固定的情况下,可以在全局、VLAN或接口下配置针对所有ARP报文的限速和限速时间。在ARP报文限速时间内,如果收到的所有ARP报文数目超过ARP报文限速值,设备会丢弃超出限速值的ARP报文。
(1)全局的ARP报文限速:在设备出现ARP攻击时,需要限制全局处理的ARP报文数量(是指设备各个接口上接收到的ARP报文的总数)。
(2)VLAN的ARP报文限速:在某个VLAN内的所有接口出现ARP攻击时,可以仅限制处理收到的该VLAN内的ARP报文数量,配置本功能可以保证不影响其他VLAN内所有接口的ARP学习。
(3)接口的ARP报文限速:在某个接口出现ARP攻击时,可以仅限制处理该接口(可以是各种以太网接口,也可以是Eth-Trunk接口,还可以是端口组)收到的ARP报文数量,配置本功能可以保证不影响其他接口的ARP学习。
当同时在全局、VLAN或接口下配置ARP报文的限速值和限速时间,设备会先按照接口进行限速,再按照VLAN进行限速,最后按照全局进行限速。当设备丢弃的ARP报文数量较多时,如果希望设备能够以告警的方式提醒网络管理员,则还可以使能ARP报文限速丢弃告警功能。当丢弃的ARP报文数超过告警阈值时,设备将产生告警。
四、配置ARP Miss消息源抑制
当设备检测到某一源IP地址的IP报文在1s内触发的ARP Miss消息数量超过了限速值,就认为此源IP地址存在攻击。这时,设备对ARP Miss报文的缺省处理方式是block方式,即设备会丢弃超出限速值部分的ARP Miss消息,也就是丢弃触发这些ARP Miss消息的ARP Miss报文,并下发一条ACL来丢弃该源IP地址的后续所有ARP Miss报文;如果是none-block方式,设备只会丢弃超出限速值部分的ARP Miss消息,因此,该方式对CPU的负担减轻效果有限。可根据实际情况调整ARP Miss消息的限速值并合理配置ARP Miss报文处理方式。
五、配置全局、VLAN和接口的ARP Miss消息限速
如果网络中有用户向设备发送大量目的IP地址不能解析的IP报文(即路由表中存在该IP报文的目的IP地址对应的路由表项,但设备上没有该路由表项中下一跳对应的ARP表项),将导致设备触发大量的ARP Miss消息。这种触发ARP Miss消息的IP报文会被上送到主控板进行处理,设备会根据ARP Miss消息生成和下发大量临时ARP表项并向目的网络发送大量ARP请求报文,这样就增加了设备CPU的负担,同时严重消耗目的网络的带宽资源。
为了避免这种IP报文攻击所带来的危害,可以配置以下ARP Miss消息限速功能:
(1)全局的ARP Miss消息限速:在设备出现目的IP地址不能解析的IP报文攻击时,可限制全局处理的ARP Miss消息数量。
(2)VLAN的ARP Miss消息限速:在某个VLAN内的所有接口出现目的IP地址不能解析的IP报文攻击时,可仅限制处理该VLAN内报文触发的ARPMiss消息数量,配置本功能可以保证不影响其他VLAN内所有接口的IP报文转发。
(3)接口的ARP Miss消息限速:在某个接口出现目的IP地址不能解析的IP报文攻击时,可仅限制处理该接口收到的报文触发的ARP Miss消息数量,配置本功能可以保证不影响其他接口的IP报文转发。
当同时在全局、VLAN或接口下配置ARPMiss消息限速时,设备会先按照接口进行限速,再按照VLAN进行限速,最后按照全局进行限速。当设备忽略的ARP Miss消息数量较多时,如果希望设备能够以告警的方式提醒网络管理员,则可以配置ARP Miss消息限速丢弃告警功能。当设备忽略处理的ARP Miss消息个数超过告警阈值时,设备将产生告警。
六、配置临时ARP表项的老化时间
为了控制设备根据ARP Miss消息生成大量临时的ARP表项,可以通过配置临时ARP表项的老化时间来控制ARPMiss消息的触发频率。这样,在送ARP Miss消息时,在老化时间超时前如果设备没有收到对应的ARP应答报文,则匹配对应临时ARP表项的IP报文将被丢弃,并且不会再触发新的ARP Miss消息;而在设备收到对应的ARP应答报文后,会生成正确的ARP表项来替换临时ARP表项。
但仅配置老化时间还不够,因为在对应临时ARP表项的老化时间超时后,设备虽然会清除该临时ARP表项,但此时如果设备转发IP报文再次匹配不到对应的ARP表项时,则又会重新触发ARP Miss消息并生成临时ARP表项,如此循环重复。这时可调大对应IP报文的临时ARP表项的老化时间,以减少设备的ARP Miss消息的触发频率,从而减小攻击对设备的影响。
临时ARP表项的老化时间是在具体的VLANIF接口视图下配置的,以配置对应VLAN接口所在IP网段的临时ARP表项的老化时间。
七、配置ARP表项严格学习
如果大量用户在同一时间内向设备发送大量ARP报文,或者攻击者伪造正常用户的ARP报文发送给设备,则会造成如下危害:
(1)设备因处理大量ARP报文而导致CPU负荷过重,同时设备学习大量的ARP报文可能导致设备ARP表项资源被无效的ARP表项耗尽,造成合法用户的ARP报文不能继续生成ARP表项,导致用户无法正常通信。
(2)伪造的ARP报文将错误地更新设备ARP表项,导致合法用户无法正常通信。
可以在网关设备上配置ARP表项严格学习功能。配置该功能后,只有本设备主动发送的ARP请求报文的应答报文才能触发本设备学习ARP,其他设备主动向本设备发送的ARP报文不能触发本设备学习ARP,这样,可以拒绝大部分的ARP报文攻击。
ARP表项严格学习功能可在全局和VLANIF接口视图下进行配置。如果全局使能该功能,则设备的所有接口均进行ARP表项严格学习;如果VLANIF接口下使能该功能,则只有该接口进行ARP表项严格学习。当同时在全局和VLANIF接口视图下进行配置时,VLANIF接口下配置的优先级高于全局配置的优先级。
八、配置基于接口的ARP表项限制
为了防止当一个接口(可以是二层物理接口、Eth-Trunk接口、VLANIF接口、三层物理子接口和端口组)所接入的某一用户主机发起ARP攻击时导致整个设备的ARP表项资源被耗尽,可以在指定接口下配置接口能够学习到的最大动态ARP表项数目。当指定接口下的动态ARP表项达到允许学习的最大数目后,将不允许新增动态ARP表项。
九、配置免费ARP报文主动丢弃
由于发送免费ARP报文的用户主机并不需要经过身份验证,任何一个用户主机都可以发送免费ARP报文,这样就引入了两个问题:
(1)如果网络中出现大量的免费ARP报文,设备会因为处理这些报文而导致CPU负荷过重,从而不能正常处理合法的ARP报文。
(2)如果设备处理的免费ARP报文是攻击者伪造的,会造成设备错误地更新ARP表项,导致合法用户的通信流量发生中断。
为了解决以上问题,在确认攻击来自免费ARP报文之后,可以在网关设备上使能免费ARP报文主动丢弃功能,使网关设备直接丢弃所收到的免费ARP报文。
丢弃免费ARP报文功能可以在全局和VLANIF接口下使能。全局使能该功能,则设备的所有接口都丢弃收到的免费ARP报文。VLANIF接口下使能该功能,则只有该接口丢弃收到的免费ARP报文。一般在用户侧的VLANIF接口下配置免费ARP报文主动丢弃功能。
配置防ARP欺骗攻击
ARP表项攻击、网关攻击、中间人攻击是ARP欺骗攻击的主要应用场景。下表列出了针对不同ARP欺骗攻击类型所提供的不同解决方案,以增强网络抗击ARP欺骗攻击的能力。在这些配置防ARP欺骗攻击安全特性中,各项配置均是并列关系,无严格配置顺序,也并不是要求配置所有的ARP安全特性方案,用户可根据需要选择配置一种或多种方案。
一、配置ARP表项固化
为了防止ARP地址欺骗攻击,可以配置ARP表项固化功能,使欺骗类ARP报文不能修改原来ARP表项。以下3种ARP表项固化模式适用于不同的应用场景,且是互斥关系:
(1)fixed-mac方式:这种固化模式是以报文中源MAC地址与ARP表中现有对应IP地址的表项中的MAC地址是否匹配为审查的关键依据。当这两个MAC地址不匹配时,则直接丢弃该ARP报文;如果这两个MAC地址是匹配的,但是报文中的接口或VLAN信息与ARP表中对应表项不匹配时,则可以更新对应ARP表项中的接口和VLAN信息。这种模式适用于静态配置IP地址,但网络存在冗余链路(这样可以改变出接口和VLAN)的情况。当链路切换时,ARP表项中的接口信息可以快速改变。
(2)fixed-all方式:这种固化模式时仅当ARP报文对应的MAC地址、接口、VLAN信息和ARP表中对应表项的信息完全匹配时,设备才可以更新ARP表项的其他内容。这种模式匹配最严格,适用于静态配置IP地址,网络没有冗余(这样不可以改变出接口和VLAN),且同一IP地址用户不会从不同接口接入的情况。
(3)send-ack方式:这种模式是当设备收到一个涉及MAC地址、VLAN、接口修改的ARP报文时,不会立即更新ARP表项,而是先向待更新的ARP表项现有MAC地址对应的用户发送一个单播的ARP请求报文,再根据用户的确认结果决定是否更新ARP表项中的MAC地址、VLAN和接口信息。此方式适用于动态分配IP地址,有冗余链路的网络。
可在全局和VLANIF接口下配置ARP表项固化功能,全局配置该功能后,缺省设备上所有接口的ARP表项固化功能均已使能。当全局和VLANIF接口下同时配置了该功能,VLANIF接口下的配置优先生效。
二、配置动态ARP检测
为了防御中间人攻击,避免合法用户的数据被中间人窃取,可以使能动态ARP检测功能,仅适用于启用了DHCP Snooping的场景。这样,设备会将ARP报文中的源IP、源MAC、接口、VLAN信息和DHCP Snooping中的绑定表(或者手动添加静态绑定表)信息进行比较,如果匹配,说明发送该ARP报文的用户是合法用户,允许此用户的ARP报文通过,否则就认为是攻击,丢弃该ARP报文。
设备使能DHCP Snooping功能后,当DHCP用户上线时设备会自动生成DHCP Snooping绑定表;对于静态配置IP地址的用户,设备不会生成DHCP Snooping绑定表,所以需要手动添加静态绑定表。可用user-bind static { ip-address start-ip [ to end-ip]&<1-10> | mac-address mac-address}*[ interface interface-type interface-number] [vlan vlan-id [ce-vlan ve-vlan-id]]命令配置IP地址、MAC地址、接口和内/外层VLAN的静态用户绑定表项。
如果希望仅匹配绑定表中某一项或某两项内容的特殊ARP报文也能够通过,则可以配置对ARP报文进行绑定表匹配检测时只检查某一项或某两项内容。如果希望设备在丢弃的不匹配绑定表的ARP报文数量较多时能够以告警的方式提醒网络管理员,则还可以使能动态ARP检测丢弃报文告警功能。这样,当丢弃的ARP报文数超过告警阈值时,设备将产生告警。
可在接口(包括物理接口、Eth-Trunk接口、VLANIF接口和端口组)视图或VLAN视图下配置动态ARP检测功能。在接口视图下使能时,则对该接口收到的所有ARP报文进行绑定表匹配检查;在VLAN视图下使能时,则对加入该VLAN的接口收到的属于该VLAN的ARP报文进行绑定表匹配检查。
当同时在VLAN和加入该VLAN的接口下配置了动态ARP检测功能时,设备会先按接口下配置的检查选项对ARP报文进行绑定表匹配检查,如果ARP报文检查通过,设备再根据VLAN下配置的检查选项进行检查。
由于动态ARP检测丢弃报文告警功能针对的是接口下DAI功能丢弃的ARP报文数告警统计,因此建议不要同时在VLAN视图下配置命令arp anti-attack check user-bind enable以及在加入该VLAN的接口视图下配置命令arpanti-attack check user-bind alarm enable,避免VLAN下的DAI功能可能造成实际丢包数目和接口DAI告警统计值之间的偏差。
三、配置ARP防网关冲突
如果攻击者仿冒网关,在局域网内部发送源IP地址是网关IP地址的ARP报文,就会导致局域网内其他用户主机的ARP表记录错误的网关地址映射关系。这样其他用户主机就会把发往网关的流量均发送给了攻击者,攻击者可轻易窃听到它们发送的数据内容,并且最终会造成这些用户主机无法访问网络。这就是最常见的一种ARP攻击类型——网关欺骗ARP攻击。
为了防范攻击者仿冒网关,当用户主机直接接入网关时(这是先决条件,其他情形不适用),可在网关设备上使能ARP防网关冲突攻击功能。这样,当网关设备收到的ARP报文存在下列情况之一时,设备就会认为该ARP报文是与网关地址冲突的ARP报文,生成ARP防攻击表项,并在后续一段时间内丢弃该接口收到的相同VLAN和相同源MAC地址的ARP报文,以防止与网关地址冲突的ARP报文在VLAN内广播。
(1)ARP报文的源IP地址与报文入接口对应的VLANIF接口的IP地址(就是网关IP地址)相同。
(2)ARP报文的源IP地址是入接口的VRRP虚拟IP地址,但ARP报文源MAC地址不是VRRP虚拟MAC地址。
配置ARP防网关冲突的方法很简答,仅需在系统视图下执行arp anti-attack gateway-duplicate enable即可。缺省情况下,没有使能ARP防网关冲突功能。
这种方法不是很适用,因为它只适用于用户主机直接与网关连接的情形,仅在网关上进行了ARP报文检查。在其他情形下,其他非网关设备照样不会对这类报文进行检查。
四、配置发送ARP免费报文
如果有攻击者向其他用户发送仿冒网关的ARP报文,会导致其他用户的ARP表中记录错误的网关地址映射关系,从而造成其他用户的正常数据不能被网关接收。此时可以在网关设备上配置发送免费ARP报文的功能,用来定期更新合法用户的ARP表项,使得合法用户ARP表项中记录的是正确的网关地址映射关系。
可在网关设备上全局或VLANIF接口下配置发送免费ARP报文功能。全局配置该功能后,则缺省设备上所有接口的发送ARP免费报文功能均已使能。当全局和VLANIF接口下同时配置了该功能时,VLANIF接口下的配置优先生效。
五、配置ARP报文内MAC地址一致性检查
ARP报文内MAC地址一致性检查功能主要应用于网关设备上,可以防御以太网数据帧首部中的源/目的MAC地址和ARP报文数据区中的源/目的MAC地址不同的ARP攻击。配置该功能后,网关设备在进行ARP表项学习前将对ARP报文进行检查。如果以太网数据帧首部中的源/目的MAC地址和ARP报文数据区中的源/目的MAC地址不同,则认为是攻击报文,将其丢弃;否则,继续进行ARP学习。
本项ARP安全特性,只能在物理接口或者Eth-Trunk接口下配置,不支持在VLANIF接口和物理子接口上配置。当VLANIF接口收到ARP报文时,ARP报文内MAC地址一致性检查遵循成员接口下的检查规则;当物理子接口收到ARP报文时,ARP报文内MAC地址一致性检查遵循主接口下的检查规则。
六、配置ARP报文合法性检查
为了防止非法ARP报文攻击,可以在接入设备或网关设备上配置ARP报文合法性检查功能,用来对MAC地址和IP地址不合法的ARP报文进行过滤。设备提供以下三种可以任意组合的检查项配置:
(1)IP地址检查:设备会检查ARP报文中的源IP和目的IP地址,全0、全1或者组播IP地址都是不合法的,需要丢弃。对于ARP应答报文,源IP和目的IP地址都进行检查;对于ARP请求报文,只检查源IP地址。
(2)源MAC地址检查:设备会检查ARP报文中的源MAC地址和以太网数据帧首部中的源MAC地址是否一致,一致则认为合法,否则丢弃报文。
(3)目的MAC地址检查:设备会检查ARP应答报文中的目的MAC地址是否和以太网数据帧首部中的目的MAC地址一致,一致则认为合法,否则丢弃报文。
其实后面两项MAC地址的检查与上面的ARP报文内MAC地址一致性检查方法是一样的。但是,通常ARP报文中源MAC地址和以太网数据帧首部中的源MAC地址不一致的ARP报文,以及目的MAC地址和以太网数据帧首部中的目的MAC地址不一致的ARP应答报文均是ARP协议允许的ARP报文。因此,只有在网络管理员发现攻击产生后,通过报文头获取方式定位、确定了是由于对应项不一致的ARP报文导致的攻击,才能指定ARP报文合法性,检查时需要检查源MAC地址和目的MAC地址。
ARP报文合法性检查的配置方法,仅需在系统视图下配置arp anti-attack packet-check { ip | dst-mac | sender-mac}*命令,使能ARP报文合法性检查功能,并指定ARP报文合法性检查项。
(1)IP:可多选项,对应“IP地址检查”方式,指定在进行ARP报文合法性检查时检查IP地址。
(2)dst-mac:可多选项,对应“目的MAC地址检查”方式,指定在进行ARP报文合法性检查时检查目的MAC地址。
(3)sender-mac:可多选项,对应“源MAC地址检查”方式,指定在进行ARP保温合法性检查时检查源MAC地址。
七、配置DHCP触发ARP学习
在DHCP用户场景下,当DHCP用户数目很多时,设备进行大规模ARP表项的学习和老化会对设备性能和网络环境形成冲击。为了避免此问题,可以在网关设备上使能DHCP触发ARP学习功能。当DHCP服务器给用户分配了IP地址,网关设备会根据VLANIF接口上收到的DHCP ACK(确认)报文直接生成该用户的ARP表项。但DHCP触发ARP学习功能生效的前提是已在网关设备上通过dhcp Snooping enable命令使能了DHCP Snooping功能。
在VRRP和DHCP Relay组合场景下,VRRP主备设备上都不能在配置命令dhcp Snooping enable和arp Learning dhcp-trigger。网关设备上还可同时部署动态ARP检测功能,防止DHCP用户的ARP表项被伪造的ARP报文恶意修改。
DHCP触发ARP学习的配置方法,就是在对应的VLANIF接口视图下执行arp learning dhcp-trigger命令使能DHCP触发ARP学习功能。
ARP安全配置管理
(1)display arp anti-attack configuration { arp-rate-limit | arpmiss-rate-limit|arp-speed-limit | arpmiss-speed-limit |entry-check | gateway-duplicate |log-trap-timer | packet-check | all }:查看ARP防攻击配置。
(2)display arp-limit [interface interface-type interface-number] [vlan vlan-id]:查看接口可以学习到的动态ARP表项数目的最大值。
(3)display arp learning strict:查看全局和所有VLANIF接口上的ARP表项严格学习情况。
(4)display arpanti-attack configuration check user-bind interface interface-typeinterface-number:查看接口下ARP报文检查相关的配置。
(5)disp arpanti-attack gateway-duplicate item:查看ARP防网关冲突攻击表项。
使用以下display任意视图命令维护ARP安全包括监控ARP运行情况。
(1)display arp packet statistics:查看ARP处理的报文统计数据。
(2)display arp anti-attack statistics check user-bind interface interface-typeinterface-number:查看接口下进行ARP报文绑定表匹配检查的ARP报文丢弃计数。
(3)display arp anti-attack packet-check statistics:查看ARP报文合法性检查过程中被过滤的非法ARP报文统计数据。
(4)display arp anti-attack arpmiss-record-info [ip-address]:查看ARP Miss消息限速触发时的相关信息。
使用reset用户视图命令清除ARP报文统计信息、清除ARP报文丢弃计数以及配置对潜在的ARP攻击行为发送日志和告警。
(1)reset arppacket statistics:清除ARP报文的统计信息。
(2)reset arpanti-attack statistics check user-bind interface interface-typeinterface-number:清除由于不匹配绑定表而丢弃的ARP报文计数。
(3)reset arpanti-attack statistics rate-limit:清除由于ARP报文超过速率限制阈值而被丢弃的计数。
配置示例
一、ARP安全综合功能配置示例
如上拓扑,Switch作为网关通过GE1/0/3接口连接一台服务器,通过GE1/0/1和GE1/0/2接口分别连接VLAN10和VLAN20下的用户。网络中存在以下ARP威胁,现希望能够防止这些ARP攻击行为,为用户提供更安全的网络环境和更稳定的网络服务。
(1)攻击者向Switch发送伪造的ARP报文和伪造的免费ARP报文进行ARP欺骗攻击,恶意修改Switch上的ARP表项,造成其他用户无法正常接收数据报文。
(2)攻击者发出大量目的IP地址不可达的IP报文进行ARP泛洪攻击,造成Switch的CPU负荷过重。
(3)用户User1构造大量源IP地址变化、MAC地址固定的ARP报文进行ARP泛洪攻击,造成Switch的ARP表资源被耗尽以及CPU进行繁忙,影响正常业务的处理。
(4)用户User3构造大量源IP地址固定的ARP报文进行ARP泛洪攻击,造成Switch的CPU进程繁忙,影响到正常业务的处理。
1、基本配置思路分析
针对这样的环境,首先要分析网络中存在哪些ARP方面的安全隐患,然后有针对性的给出可用解决方案选择对应的解决方案。
(1)配置ARP表项严格学习功能和ARP表项固化功能,实现防止伪造的ARP报文错误的更新Switch的ARP表项;配置免费ARP报文主动丢弃功能,实现防止伪造的免费ARP报文错误地更新设备ARP表项。
(2)配置根据源IP地址进行ARP Miss消息限速,实现防止用户侧存在攻击者发出大量目的IP地址不可达的IP报文触发大量ARP Miss消息,形成ARP泛洪攻击。同时需要保证Switch可以正常处理服务器发出的大量此类报文,避免因丢弃服务器发出的大量此类报文而造成网络无法正常通信。
(3)配置基于接口的ARP表项限制以及根据源MAC地址进行ARP限速,实现防止User1发送的大量源IP地址变化MAC地址固定的ARP报文形成的ARP泛洪攻击,避免Switch的ARP表资源被耗尽,避免CPU进程繁忙。
(4)配置根据源IP地址进行ARP限速,实现防止User3发送的大量源IP地址固定的ARP报文形成的ARP泛洪攻击,避免Switch的CPU进程繁忙。
2、具体配置步骤
<Huawei>system-view
[Huawei]vlan batch 10 20 30
[Huawei]interface gigabitethernet 1/0/1
[Huawei-GigabitEthernet1/0/1]port link-type trunk
[Huawei-GigabitEthernet1/0/1]port trunk allow-pass vlan 10
[Huawei-GigabitEthernet1/0/1]quit
[Huawei]interface gigabitethernet 1/0/2
[Huawei-GigabitEthernet1/0/2]port link-type trunk
[Huawei-GigabitEthernet1/0/2]port trunk allow-pass vlan 20
[Huawei-GigabitEthernet1/0/2]quit
[Huawei]interface gigabitethernet 1/0/3
[Huawei-GigabitEthernet1/0/3]port link-type trunk
[Huawei-GigabitEthernet1/0/3]port trunk allow-pass vlan 30
[Huawei-GigabitEthernet1/0/3]quit
(2)创建接口VLANIF10、VLANIF20、VLANIF30,并按图中标注配置各VLANIF接口的IP地址。
[Huawei]interface vlanif 10
[Huawei-Vlanif10]ip address 8.8.8.4 24
[Huawei-Vlanif10]quit
[Huawei]interface vlanif 20
[Huawei-Vlanif20]ip address 9.9.9.4 24
[Huawei-Vlanif20]quit
[Huawei]interface vlanif 30
[Huawei-Vlanif30]ip address10.10.10.3 24
[Huawei-Vlanif30]quit
(3)配置ARP表项严格学习功能,使网关设备只对自己主动发送的ARP请求报文的应答报文触发本学习ARP表项,其他设备主动向网关设备发送的ARP报文不能触发本学习ARP表项。防止从伪造的ARP报文中学习ARP表项。
[Huawei]arp learning strict
(4)配置ARP表项固化模式为fixed-mac方式。使网关设备对收到的ARP报文中的MAC地址与ARP表中对应表项的MAC地址进行匹配检查,直接丢弃MAC地址不匹配的ARP报文。
[Huawei]arp anti-attack entry-checkfixed-mac enable
(5)配置免费ARP报文主动丢弃功能。使网关设备直接丢弃免费ARP报文。
[Huawei]arp anti-attack gratuitous-arp drop
(6)配置根据源IP地址进行ARP Miss消息限速,对Server(IP地址为10.10.10.2)的ARP Miss消息进行限速,允许Switch每秒最多处理该IP地址触发的40个ARP Miss消息;对于其他用户,允许Switch每秒最多处理同一个源IP地址触发的20个ARP Miss消息。
[Huawei]arp-miss speed-limit source-ipmaximum 20
[Huawei]arp-miss speed-limit source-ip10.10.10.2 maximum 40
(7)配置基于接口的ARP表项限制,使GE1/0/1接口最多可以学习到20个动态ARP表项。
[Huawei]interface gigabitethernet1/0/1
[Huawei-GigabitEthernet1/0/1]arp-limit vlan10 maximum 20
[Huawei-GigabitEthernet1/0/1]quit
(8)配置根据源MAC地址进行ARP限速,对用户User1(MAC地址为1-1-1)进行ARP报文限速,每秒最多只允许10个该MAC地址的ARP报文通过。
[Huawei]arp speed-limit source-mac 1-1-1maximum 10
(9)配置根据源IP地址进行ARP限速,对用户User3(IP地址为9.9.9.2)进行ARP报文限速,每秒最多只允许10个该IP地址的ARP报文通过。
[Huawei]arp speed-limit source-ip 9.9.9.2 maximum 10
配置后,通过display arplearning strict查看全局已经配置ARP表项严格学习功能;通过display arp packet statistics查看ARP处理的报文统计数据。
二、防止ARP中间人攻击配置示例
如上拓扑,SwitchA通过GE2/0/1接口连接DHCPServer,通过GE1/0/1和GE1/0/2接口分别连接DHCP客户端UserA和UserB,通过GE1/0/3接口连接静态配置IP地址的用户UserC。SwitchA的GE1/0/1、GE1/0/2、GE1/0/3、GE2/0/1接口都属于VLAN10。现希望能够防止ARP中间人攻击,避免合法用户的数据被中间人窃取,同时希望能够了解当前ARP中间人攻击的频率和范围。
1、基本配置思路分析
可以采取以下方法来预防ARP中间人攻击。
(1)使能动态ARP检测功能,使SwitchA对收到的ARP报文对应的源IP地址、源MAC地址、VLAN以及接口信息进行DHCPSnooping绑定表匹配检查,防止ARP中间人攻击。
(2)使能动态ARP检测丢弃报文告警功能,使SwitchA开始统计丢弃的不匹配DHCPSnooping绑定表的ARP报文数量,并在丢弃数量超过告警阈值时能以告警的方式提醒管理员,这样可以使管理员根据告警信息以及报文丢弃计数来了解当前ARP中间人攻击的频率和范围。
(3)配置DHCPSnooping功能,并为UserC配置静态绑定表(对于采用DHCP自动分配IP地址的UserA和UserB,在设备使能DHCPSnooping功能后,当他们上线时设备会自动生成DHCP Snooping绑定表),使动态ARP检测功能生效。
2、具体配置步骤
(1)创建VLAN10,并将GE1、GE1/0/2、GE1/0/3、GE2/0/1接口加入VLAN10中。
<Huawei>system-view
[Huawei]sysname SwitchA
[SwitchA]vlan batch 10
[SwitchA]interface gigabitethernet1/0/1
[SwitchA-GigabitEthernet1/0/1]portlink-type access
[SwitchA-GigabitEthernet1/0/1]port defaultvlan 10
[SwitchA-GigabitEthernet1/0/1]quit
[SwitchA]interface gigabitethernet1/0/2
[SwitchA-GigabitEthernet1/0/2]portlink-type access
[SwitchA-GigabitEthernet1/0/2]port defaultvlan 10
[SwitchA-GigabitEthernet1/0/2]quit
[SwitchA]interface gigabitethernet1/0/3
[SwitchA-GigabitEthernet1/0/3]portlink-type access
[SwitchA-GigabitEthernet1/0/3]port defaultvlan 10
[SwitchA-GigabitEthernet1/0/3]quit
[SwitchA]interface gigabitethernet2/0/1
[SwitchA-GigabitEthernet2/0/1]portlink-type trunk
[SwitchA-GigabitEthernet2/0/1]port trunkallow-pass vlan 10
[SwitchA-GigabitEthernet2/0/1]quit
(2)使能动态ARP检测功能和动态ARP检测丢弃报文告警功能。在用户侧的GE1/0/1、GE1/0/2、GE1/0/3接口下使能动态ARP检测功能和动态ARP检测丢弃报文告警功能。以GE1/0/1为例。
[SwitchA]interface gigabitethernet1/0/1
[SwitchA-GigabitEthernet1/0/1]arp anti-attack check user-bind enable
[SwitchA-GigabitEthernet1/0/1]arp anti-attack check user-bind alarm enable
[SwitchA-GigabitEthernet1/0/1]quit
(3)配置DHCPSnooping功能
[SwitchA]dhcp enable
[SwitchA]dhcp Snooping enable #--全局使能DHCPSnooping功能
[SwitchA]vlan 10
[SwitchA-vlan10]dhcp Snooping enable #--在VLAN10内使能DHCPSnooping功能,这就会为VLAN10中的动态IP地址用户UserA和UserB自动生成绑定表
[SwitchA-vlan10]quit
[SwitchA]interface gigabitethernet2/0/1
[SwitchA-GigabitEthernet2/0/1]dhcp Snooping trusted #--配置接口GE2/0/1为DHCP Snooping信任接口,所有接口缺省均为非信任端口
[SwitchA-GigabitEthernet2/0/1]quit
[SwitchA]user-bind static ip-address 10.0.0.2 mac-address 0001-0001-0001 interface Gigabitethernet 1/0/3 vlan 10 #--在信任接口GE2/0/1上为采用静态IP地址分配的UserC用户配置静态绑定表