APP下载

让交换机免疫ARP攻击

2016-11-26

网络安全和信息化 2016年2期
关键词:表项IP地址视图

笔者在工作中,经常碰到有用户反映IP地址冲突、上网时断时续、上网速度时快时慢等问题。通过解决问题,发现主要原因是部分用户感染了ARP病毒,给交换机造成了巨大负担,导致交换机无法正常工作,虽然查杀了ARP病毒后,问题得到了解决,却已经造成其他用户较长时间无法正常办公。只有对症下药,发挥交换机自身防护功能,让交换机免疫ARP攻击,才能最小程度地减小影响,本文从ARP工作原理入手,分析ARP攻击类型及原理,交换机防范ARP攻击技术,并以华为交换机为例,通过具体配置方法实现交换机对ARP攻击免疫。

ARP工作原理

图1 同一网段HOSTA与HOSTB通信

图2 其他终端收到HOSTA请求报文

ARP(Address Resolution Protocol),地址解析协议,其基本功能就是知道目标设备的IP地址,查询目标设备的MAC地址。在TCP/IP网络环境下,每个终端或三层设备正常均有一个IP地址,这是标识终端或三层设备的逻辑地址,位于三层,为了正常通信须知道终端或三层设备的二层地址即MAC地址,这样就存在将IP地址解析为MAC地址的问题,而这个“翻译官”就是ARP协议。ARP地址解析过程由ARP请求和ARP应答两个过程完成。

ARP请求过程

如图1所示,HOSTA和HOSTB在同一网段,HOSTA要 和HOSTB通信,HOSTA首先查看自己的ARP缓存表,查看表中是否有HOSTB的IP和MAC地址相应的ARP表项,如果存在,则HOSTA直接利用ARP表中HOSTB的MAC地址,对IP数据包进行封装,并将数据包发送给HOSTB,如果HOSTA在ARP表中找不到HOSTB对应的MAC地址,则先缓存该报文数据,然后以广播方式发送一个ARP请求报文(即ARP Request报文)。ARP请求报文中的发送端IP地址和发送端MAC地址为HOSTA的IP地址和MAC地址,目标IP地址为HOSTB的IP地址,目标MAC地址为全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有终端都可以接收到该请求,HOSTB发现ARP请求报文中的IP地址是自己的IP地址,就会对该ARP请求报文予以回应。

ARP响应过程

如图2所示,网络中的其他终端在收到HOSTA的请求报文后,会将ARP请求报文中的HOSTA的IP地址和MAC地址存入自己的ARP缓存表中,同时将请求报文中的IP地址跟自己的IP地址进行对比,当IP地址不同时,则直接丢弃该报文。HOSTB接收到该ARP请求报文后,发现报文中的IP地址与自己的IP地址相同,会以单播方式发送ARP响应报文(即ARP Reply报文)给HOSTA,HOSTA收到ARP响应报文后,将HOSTB的MAC地址加入到自己的ARP缓存表中。

ARP老化机制

如果每次终端通信前都要广播发送一个ARP请求报文的话,网络中所有终端都必须接收和处理这个ARP请求报文,会极大地增加网络负担。为解决这个问题,每个终端都维护着一个高速缓存,在这个高速缓存中,存放着获得的IP地址到MAC地址的映射关系,每次通信时,各终端都会在各自的高速缓存中查找目标IP地址所对应的MAC地址,如果ARP缓存中有对应的MAC地址,终端就不会再发送ARP请求报文,如果ARP缓存中没有对应的MAC地址时,终端才会发送广播的ARP请求报文。当然,这个映射关系不可能永远保持不变或一直存在,在每个网络设备或终端的高速缓存中都设有一个动态ARP表项老化超时定时器(不同的网络设备或操作系统中这个老化时间不同,在Windows 2010、Windows 7等环境中,该值是2分钟,在思科网络设备中,该值一般是5分钟,在华为网络设备中,该值一般是20分钟。在操作系统中,可以通过修改注册表修改该值,在网络设备中可使用相关命令修改该值),当时间达到动态ARP表项的老化超时时间,网络设备或终端会进行老化探测,如果探测失败,则删除该映射表项,否则,保留该表项。

ARP表项老化之前,接口会发送ARP老化探测报文,这个老化探测报文可以是单播报文,也可以是广播报文。缺省情况下,接口以广播模式发送ARP老化探测报文,在华为网络设备中,默认探测次数为3次,除原有的老化时间探测,交换机会在1/2时间点和3/4时间点发送探测报文,这两个探测时间点的探测次数都为3次且不能修改,在这两个时间点,如果接收到响应报文则老化时间初始化,未接收到则会在达到老化时间后,每隔5s发送一个探测报文,如果3次没有收到应答消息则删除该表项。

动态ARP和静态ARP

动态ARP表项由ARP协议通过ARP报文自动生成和维护,可被老化、被静态ARP表项覆盖和被更新,当到达老化时间、接口不工作时会删除相应的动态ARP表项。静态ARP一般由管理人员手动配置IP地址和MAC的映射关系,不可被老化、更新。

ARP攻击类型

ARP协议工作原理简单,网络应用简单便捷,是网络通信的根本协议,但ARP协议缺乏有效的安全机制,也就给攻击者提供了机会。ARP攻击按攻击方式分为ARP泛洪攻击和ARP欺骗攻击。

1.ARP泛洪攻击

终端在转发IP报文时,如果高速缓存中没有对应的ARP表项,需要发送ARP请求,攻击者利用这一点,发送大量IP地址不可达报文,侵占网络设备和用户终端的ARP缓存资源,导致资源耗尽,大量的ARP请求报文还会造成网络带宽阻塞,从而使正常用户业务受到影响,严重时导致设备重启和网络瘫痪。如图3所示,ARP泛洪攻击可细分为拒绝服务攻击、缓存溢出攻击和扫描攻击3种。

拒绝服务攻击流程如下:攻击者发送大量伪造的ARP请求、应答报文报文,造成网络设备资源长期忙于ARP报文处理,影响其他业务处理,正常用户请求ARP或者其他业务报文被阻塞,从而导致业务中断。

缓存溢出攻击流程如下:攻击者向网络设备发送大量伪造的ARP请求报文或免费ARP报文,超出网络设备ARP高速缓存空间,ARP缓存表溢出,无法缓存正常的ARP表项,从而导致业务流量中断。

扫描攻击流程如下:攻击者扫描本网段终端或其他网段时,网络设备在发送回应报文前,会查找ARP表项,如果目的MAC地址不存在,网络设备会向上层发送消息,要求上层发送ARP请求报文到其他网段以获得目的端的MAC地址。大量的扫描报文会导致大量的消息,导致网络设备资源浪费,影响对其他业务的处理,从而阻碍正常报文转发,正常用户请求ARP或者其他业务报文被阻塞,从而导致业务中断。

图3 ARP泛洪攻击类型

图4 仿冒用户终端流程

图5 仿冒网关流程

2.ARP欺骗攻击

ARP协议规定终端或网络设备在收到ARP响应包时,如果有此项映射信息则进行刷新时,若无此项映射信息,则进行记录。攻击者利用这个特点,发送大量伪造的IP地址和MAC地址映射ARP请求报文,恶意修改网关或网络内其他终端的ARP表项,造成用户或网络的报文转发异常。ARP欺骗攻击可细分为仿冒用户终端、仿冒网关2种。

仿冒用户终端流程如图4所示:三层网关发送ARP广播请求,询问用户A的地址,用户A发送ARP回应报文,三层网关会在ARP缓存中建立用户A的ARP映射表项,攻击者发出仿冒用户A的ARP回应报文,报文中的MAC地址可以攻击MAC地址,也可以是网络中其他用户地址甚至是不存在的地址。三层网关中的用户A合法的ARP映射表项被修改为仿冒的ARP映射表项。这种正常发送给用户A的数据包会转发给攻击者,使用其他用户地址,则流量被转发到其他用户,如果仿冒的是不存在的地址,则流量会在网络中被阻断。

仿冒网关流程如图5所示:用户A广播ARP请求,询问网关的MAC地址,网关回应自己的MAC地址。用户A终端建立合法网关的ARP表项,用户B发出仿冒的网关ARP表项,可以是自己的MAC地址,也可以是网络中其他用户地址甚至是不存在的地址。用户A终端合法网关的ARP表项被修改为仿冒的ARP表项,用户A的流量转发到用户B,如果仿冒的是其他用户的地址,则流量被转发到其他用户,如果仿冒的是不存在的地址,则流量在网络中被阻断。

定位ARP攻击源和故障排除

定位ARP攻击源时,需先排除链路、环路或路由问题,网络受到了ARP攻击时,用户终端会出现时断时续、上网速度时快时慢、业务中断或无法上网,Ping网关和其他用户终端时延变长、丢包率高或不通等现象,交换机会出现CPU占用率较高、外连设备掉线、设备主备状态震荡、设备端口指示灯闪烁速度快等现象,可以在网络中抓出大量ARP垃圾数据包,利用交换机定位ARP攻击接口和排除ARP故障流程图如图6所示,通过对接口ARP报文的统计数量可以快速找到攻击源所在的交换机端口。

交换机防范ARP攻击技术

针对不同的ARP攻击技术,交换机采取不同的防范技术。

1.防范ARP泛洪攻击技术

目前交换机针对ARP泛洪攻击的方法主要以抑制攻击源的ARP包为主,一般在交换机设置一个防ARP攻击阈值,当设定时间段内交换机接收到的ARP报文超过阈值时,交换机会对该MAC进行限制或直接对所在交换机端口进行阻断,阻断时间内对该MAC地址或端口所发的ARP包不进行任何处理,直接丢弃,以保证网络通畅。

图6 利用交换机定位ARP攻击接口和排除ARP故障流程图

交换机防范的具体常用措施有:一是针对源MAC地址、源IP地址、全局、VLAN和接口进行ARP报文限速报文限速。网络中一旦有ARP攻击,就会产生大量ARP包,会增加交换机CPU负荷,为了防止这种情况出现,可以在交换机上配置ARP报文速率抑制,配置后,交换机会对接到的ARP报文进行数量统计,如果在规定时间内,接收到的ARP报文数量超出了配置的阈值,交换机不会处理超出部分的ARP报文,将交换机处理的ARP报文数量限制在一个合理的范围内,可以有效减轻交换机CPU的处理压力;二是针对源IP地址、全局、VLAN和接口进行ARP Miss报文限速。如果交换机收到大量目标IP地址不能解析的IP报文时,会触发交换机发送大量的ARP Miss报文,也会给交换机CPU造成很大负荷,同时严重消耗目的网络的带宽资源,对ARP Miss报文进行限速也是非常必要的,同限制ARP报文一样,在规定时间内,如果ARP Miss报文的数量超过了配置的阈值,交换机则不会处理超出部分的ARP Miss消息;三是修改ARP表项的老化时间。当触发交换ARP Miss报文时,会生成临时ARP表项,同时向目标终端发送ARP请求报文,寻求目标终端的ARP响应报文,以确认目标终端是否存在,交换机在收到ARP应答报文前,在临时ARP表项老化时间内,交换机将不会处理收到的ARP无效报文且不会触发ARP Miss报文,只有在收到ARP应答报文后,才会将正确的ARP表项来更新临时ARP表项。当超过配置的老化时间,仍未收到ARP应答报文,交换机就会清除临时ARP表项,所以,可以通过修改交换机表项的老化时间来控制ARP Miss报文的触发时间,适当调大可以有效减少ARP Miss报文数量;四是针对接口的ARP表项进行限制。一个交换机可以缓存的ARP数量有限,哪怕遭到一个或几个用户终端的攻击都会造成整个交换机的ARP缓存溢出,从而造成整个网络瘫痪,故对这一个或几个用户终端端口的ARP表项数量进行限制是非常必要的,这样,当指定接口下的动态ARP表项达到配置的最大数量后,将不允许增加新的ARP表项。

2.防范ARP欺骗攻击技术

防范ARP欺骗攻击有很多方法,比较常用的方法有两种:一是交换机正常关闭ARP学习功能,同时对正常用户的IP地址和MAC地址进行绑定,这样,交换机就不会自动刷新ARP表,只要是同IP地址和MAC绑定表不一致的报文都会被丢弃;二是交换机发送免费报文,免费ARP报文就是广播正确的ARP信息,使得收到此报文的终端强制学习,以防止被欺骗,还可以有效防止局域网内IP地址冲突。

交换机防范的具体常用措施有:一是使用静态ARP和禁止接口学习ARP表项。在用户终端比较少的情况下或对网络中比较重要的用户终端和网络设备时,为防止ARP攻击,可以采取静态ARP,即手动配置IP地址和MAC地址之间的映射关系,在这种情况下,可以禁止接口学习ARP表项,交换机将不会处理新的ARP表项,可以保护重要用户和网络设备;二是动态ARP检测(DAI:Dynamic ARP Inspection)。ARP攻击的主要目的之一就是窃取合法用户的数据,为防止这种攻击,一般在交换机上使能动态ARP检测DAI功能,交换机会将ARP报文对应的源IP、源MAC、接口、VLAN信息和缓存表中的信息进行比较,如果信息相匹配,则该用户为合法用户,否则就被认定为攻击,丢弃该ARP报文;三是发送ARP免费报文。这主要针对仿冒网关的ARP攻击,避免其他用户终端ARP表中记录错误的网关地址映射,造成其他用户终端的正常数据不能被网关接收,在交换机上配置发送免费ARP报文的功能,用来定时更新合法用户的ARP表项,使得合法用户ARP表项中记录的是正确的网关地址映射关系;四是ARP报文内MAC地址一致性检查。主要对要学习的ARP报文进行一致性检查,是交换机对收到的用户终端ARP报文和收到的该用户的正常数据报文进行比对,如果以正常数据报文首部中的源/目的MAC地址和ARP报文中的源/目的MAC地址不同,则认为是攻击报文,将其丢弃不予处理,否则,则对ARP报文进行学习;五是ARP报文合法性检查。为防止非法ARP报文攻击,交换机对ARP报文中的MAC地址和IP地址进行分析,对认为不合法的ARP报文进行过滤,一般对ARP应答报文的源IP地址和目的IP地址进行合法性检查,对ARP请求报文的源IP地址进行合法性检查,一般认为ARP报文中的源IP和目的IP地址,全0、全1或者组播IP地址不正常时视为不合法ARP报文。对ARP报文中的源MAC地址和正常数据报的源MAC地址进行比对,一致则为合法,不一致则为不合法。对ARP应答报文中的目的MAC地址是否和以太网数据报文目的MAC地址进行比对,一致则认为合法,不一致则为不合法;六是ARP表项严格学习。这主要是针对仿冒用户的ARP攻击,为避免攻击者假冒正常用户向交换机发送ARP请求报文,交换机可使其具有严格表项学习功能,配置该功能后,交换机将不处理任何来自用户终端的ARP请求报文,只有在交换机向用户终端发送ARP请求报文,接收到用户终端的ARP响应报文才触发交换机学习ARP;七是配置DHCP触发ARP学习。在一般局域网环境下,交换机除正常的数据交换功能外,还具备DHCP功能,当DHCP用户数目较多时,交换机会处理巨量的ARP表项,对交换机性能和网络带宽造成巨大负荷,为了避免此问题,可在交换机上使其具有DHCP触发ARP学习功能,当DHCP服务器给用户分配了IP地址,网关设备会根据VLANIF接口上收到的DHCP ACK报文直接生成该用户的ARP表项,较大程度地减少了ARP报文的交互。

交换机免疫ARP攻击配置方法

以华为交换机为例,所有初始配置界面均为系统视图,在用户视图执行命令systemview,可进入系统视图,配置中H-H-H为MAC地址,X.X.X.X为IP地址,Y为子网掩码,***为设定数值,N/A为接口,[ ]中为可选项,{ }为必选项,|为多选项。

1.配置交换机免疫ARP泛洪攻击

(1)配置ARP报文限速,可根据MAC地址、源IP地址、针对全局、VLAN和接口进行限速。

根据MAC地址进行限速,配置方法如下:执行命令arp speed-limit source-mac H-H-H maximum***,配置根据源MAC地址进行ARP报文限速的限速值。

根据源IP地址进行限速,配置方法如下:执行命令arp speed-limit source-ip X.X.X.X maximum***,配置对指定IP地址用户的ARP报文进行限速的限速值,正常取值范围0-16384。

针对全局、VLAN和接口进行限速,配置方法如下:执行命令arp anti-attack ratelimit enable,使能 ARP 报文限速功能,需进入VLAN和接口模式。执行命令arp antiattack rate-limit packet***[interval interval-value|block-timer***],配置ARP报文的限速值、限速时间,以及当某个接口的ARP报文超过限速值时,在后续一段时间内持续丢弃该接口下收到的所有ARP报文的功能(即开启黑洞模式)。

(2)配置ARP Miss消息限速,可以根据源IP地址进行配置。

根据源IP地址进行限速,配置方法如下:执行命令arp-miss speed-limit source-ip X.X.X.X mask Y maximum *** [ noneblock|block timer *** ]。

针对全局、VLAN和接口进行限速,配置方法如下:执行命令arp-miss anti-attack rate-limit enable,使能 ARP Miss消息限速功能,在VLAN和接口模式下需进入相应接口。

执行命令arp-miss antiattack rate-limit packet *** [interval ***],配置 ARP Miss消息的限速值和限速时间。

执行命令arp-miss antiattack rate-limit alarm threshold ***,配置ARP Miss消息限速丢弃告警阈值。

(3)配置临时ARP表项的老化时间,其配置方法如下。

执行命令interface interface-type N/A,进入接口视图。

执行命令arp-fake expire-time***,配 置 临 时ARP表项的老化时间。

(4)配置ARP表项严格学习,可在全局或接口模式下进行配置。

全局使能,配置方法如下:执行命令arp learning strict,配置全局ARP表项严格学习功能。

接口使能,配置方法如下:执行命令interface interfacetype N/A,进入接口视图,支持的接口类型包括VLANIF接口、三层以太网接口和以太网子接口。

执行命令arp learning strict{force-enable|forcedisable|trust},配置接口的ARP表项严格学习功能。

(5)配置基于接口的ARP表项限制,可以基于二层以太网接口、三层接口和以太网子接口进行配置,配置方法如下。

执行命令interface interface-type N/A,进 入接口视图。执行命令arplimit vlan vlan-id1[to vlanid2] maximum***,配置基于二层以太网接口的ARP表项限制。(执行命令arp-limit maximum ***,配置基于三层接口或以太网子接口ARP表项限制)。

(6)配置禁止接口学习ARP表项,配置方法如下。

执行命令interface vlanif N/A,进入VLANIF接口视图。执行命令arp learning disable,禁止接口学习动态ARP表项。

2.配置交换机免疫ARP欺骗攻击

(1)配置ARP表项固化,可以在全局或接口使能该功能。

在全局使能配置方法如下:执行命令arp anti-attack entry-check{fixed-mac|fixed-all|send-ack}enable。

在接口使能配置方法如下:执行命令interface vlanif N/A,进入VLANIF接口视图。执行命令arp antiattack entry-check{fixedmac|fixed-all|send-ack}enable。

(2)配置动态ARP检测,交换机使能该功能的配置方法如下。

执行命令interface interface-type N/A,进入接口视图。执行命令vlan vlanid,进入VLAN视图。在接口视图或VLAN视图中执行命令arp anti-attack check user-bind enable,使能动态ARP检测功能。在接口视图下执行命令arp anti-attack check user-bind alarm threshold***,配置动态ARP检测丢弃报文告警阈值。

(3)配置ARP防网关冲突,交换机使能该功能的配置方法如下。

执行命令arp anti-attack gateway-duplicate enable,使能ARP防网关冲突功能。

(4)配置发送ARP免费报文,交换机使能该功能的配置方法如下。

执行命令arp gratuitousarp send enable,使能发送免费ARP报文的功能。执行命令arp gratuitous-arp send interval***,配置发送免费ARP报文的时间间隔。

(5)配置ARP报文内MAC地址一致性检查,交换机使能该功能的配置方法如下。

执行命令interface interface-type N/A,进入接口视图。执行命令arp validate{ sourcemac|destination-mac },使能ARP报文内MAC地址一致性检查功能。

(6)配置ARP报文合法性检查,交换机使能该功能的配置方法如下。

执行命令arp anti-attack packet-check{ip|dst-mac|sender-mac},使能ARP 报文合法性检查功能,并指定ARP报文合法性检查项。

(7)配置ARP表项严格学习,可以全局、接口使能该功能。

全局使能配置方法如下:执行命令arp learning strict,配置全局ARP表项严格学习功能。在接口使能配置方法如下:执行命令interface interface-type N/A,进 入接口视图。执行命令arp learning strict{force-enable|force-disable|trust},配置接口的ARP表项严格学习功能。

(8)配置DHCP触发ARP学习,交换机使能该功能的配置方法如下。

执行命令interface vlanif N/A,进入VLANIF接口视图。

执行命令arp learning dhcp-trigger,使能 DHCP 触发ARP学习功能。

猜你喜欢

表项IP地址视图
一种改进的TCAM路由表项管理算法及实现
基于ARMA模型预测的交换机流表更新算法
铁路远动系统几种组网方式IP地址的申请和设置
IP地址切换器(IPCFG)
5.3 视图与投影
视图
SDN数据中心网络基于流表项转换的流表调度优化
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
基于SNMP的IP地址管理系统开发与应用