APP下载

一种新的ARP协议改进方案

2011-02-20胡清桂

陕西科技大学学报 2011年5期
关键词:局域网IP地址网关

胡清桂

(内江师范学院现代教育技术中心, 四川 内江 641112)

0 前 言

随着Internet应用的不断发展,网络已经成为获取信息的重要手段,也给人们的生活带来了极大的方便.然而近年来出现的ARP欺骗给网络安全造成了巨大威胁, 尤其对局域网的安全管理工作造成了严重的危害.本文通过对ARP协议原理的直观分析,阐明了ARP欺骗过程,提出了新的解决ARP欺骗的具体方案,并对新的方案进行了仿真,仿真结果表明,新的方案在很大程度上可以防范ARP欺骗.

1 ARP欺骗简介

1.1 ARP协议工作原理

ARP全称为Address Resolution protocol,地址解析协议.所谓“地址解析”就是主机在发送数据包前将目标主机IP地址转换成目标主机MAC地址的过程.在每台安装有TCP/IP协议的机器里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的.当某机器A要向主机B发送报文时,会查询本地的ARP缓存表,找到B的IP地址对应的MAC地址后,就会进行数据传输[1].如果未找到,则广播一个ARP请求报文,请求主机B回答其物理地址.网上所有主机包都收到这一ARP请求,但只有主机B向A主机发回一个ARP响应报文, 响应报文中就包含有主机B自己的IP地址和MAC地址,A接收到B的应答后,就会更新本地的ARP缓存表, 接着便用这个MAC地址发送数据[2].

1.2 ARP协议的缺陷

从ARP协议概述中可知,ARP协议是建立在对局域网内所有结点都信任这一基础上的,它高效却不安全[3].它不会检查自己是否发过请求包,也不管对方的应答是否真实,只要收到数据帧的目标MAC是需要自己响应的,它都会接受并更新自己的ARP缓存表.这一缺陷造成局域网内的不安全,为ARP欺骗(即ARP攻击)提供了可能,攻击者可以随意发布虚假的ARP报文欺骗其它主机.

当主机A广播一个ARP请求报文请求主机B回答时, 网上所有主机都收到这一ARP请求,本来只是需要主机B回答ARP响应报文, 但假如主机C不断回答ARP响应报文, 它谎称自己是主机B,并告诉主机A它自己的MAC地址,则A接收到这个应答后,并不知道这是一个虚假的响应报文,它依然会更新本地的ARP缓存表, 接着便用这个MAC地址向主机B发送数据.很明显,主机A原本打算发向主机B的数据结果都发送到了主机C那里,这就是一个简单的ARP欺骗.

1.3 几种主要的ARP欺骗方式和常见防范措施

利用ARP协议本身的缺陷,病毒主机可以对其它主机进行ARP欺骗,其欺骗方式主要有以下几种.

第一,假冒网关的ARP reply包(单播),当某一主机A广播一个ARP报文请求网关回答时,病毒主机假冒网关回答.主机A收到响应报文后,就更新本地缓存表,把病毒主机当作是自己的网关.

第二,假冒网关的ARP request(广播),这种情况下,病毒主机主动发出ARP请求报文,报文内容可以理解为“Hello everyone(为广播的MAC)!我是网关,我的IP是XXX并且我的MAC是YYY”, 其它主机收到广播报文后,就更新本地缓存表,把病毒主机当作是自己的网关.

第三,假冒网内某个节点的ARP reply包(单播),当某一主机A广播一个ARP请求报文请求主机B回答时,病毒主机假冒主机B回答.主机A收到响应报文后,就会把病毒主机当作是主机B.

第四,假冒网内某个节点的ARP request(广播),这种情况下,病毒主机主动发出ARP请求报文,报文内容可以理解为“Hello everyone(为广播的MAC)!我是主机B,我的MAC是YYY”, 其它主机收到广播报文后,就更新本地缓存表,把病毒主机当作是主机B.

当病毒主机不断地向局域网内发送ARP欺骗报文时,会造成整个局域网无法正常通信的局面.如果病毒主机发出的ARP欺骗报文中源IP地址为其它主机IP地址,对方收到ARP欺骗报文后,检查到源IP地址和自己的IP地址相同,windows操作系统就会弹出IP冲突的警告.如果病毒主机不断地发出类似的ARP欺骗报文,就会出现局域网内到处都是IP冲突的局面[4].总之,ARP欺骗已经对局域网的安全构成了严重威胁.

针对ARP欺骗给局域网带来的危害,目前主要有以下几种防范措施.

第一是静态绑定,这是防范ARP欺骗常用的方法之一.这种方法就是在网内把所有主机和网关都做IP和MAC绑定.这种方法的缺点是工作量大,不易操作.比如网络中有数百台甚至上千台主机,每一台都去做静态绑定,工作量太大,比较麻烦.另外,以校园网为例,学生流动量大,电脑经常更换,这种情况做静态绑定就更困难了.

第二是划分安全域,这也是防范ARP欺骗最常用的方法之一[5].ARP攻击是在同一个广播域中进行的,一旦有一台主机受到ARP病毒的感染,就会蔓延到整个广播域.所以,广播域越大,病毒的影响范围就越大.在内网中,可以通过划分VLAN减小广播域,将ARP欺骗的攻击控制在一个小范围内.划分安全域的方法在一定程度上能有效缓解ARP攻击,但缺点是安全域划分太细会使局域网的管理和资源共享不方便,另外划分安全域也需要设备的支持,简单地说,当三层交换设备端口不够时,就无法划分更细的安全域.

第三是在接入交换机启用802.1x协议,针对网关型ARP欺骗病毒, 有的公司研制了一整套产品, 在接入交换机启用802.1x协议, 用户上网必须通过认证, 由此获取用户真实的IP、MAC地址,对用户发出的ARP广播进行分析, 对疑似ARP报文进行拦截, 并对IP地址和MAC地址进行绑定, 这种方案由于需要购买专用的设备及软件, 实施起来比较复杂, 成本较高.

第四是隔离病毒主机,就是将中ARP病毒的主机查找出来,将其隔离网络,用户只有将ARP病毒查杀干净或重装系统后才能重新接入网络.这种方法的缺点是费时费力,以校园网为例,校园局域网一般有上万台主机,对各个有ARP病毒的网段都要查找病毒主机,确实比较烦琐.

综上所述,目前常用的几种防范措施都有其明显的缺点,所以我们还需要寻找更为有效的ARP欺骗防范措施.

2 ARP协议的改进

针对ARP协议本身存在的缺陷,笔者提出了一种新的ARP协议改进方案,如图1、图2所示. 在每台安装有TCP/IP协议的机器里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应.当某机器A要向主机B发送报文时,会查询本地的ARP缓存表,如果找到B的IP地址对应的MAC地址后就会进行数据传输.如果未找到,则广播一个ARP请求报文(携带主机A自身的IP地址IPa和物理地址),请求IP地址为IPb的主机B回答其物理地址.网上所有主机包括B都收到ARP请求,但只有主机B识别自己的IP地址,于是向A主机发回一个ARP响应报文, 响应报文中就包含有主机B自己的IP地址和MAC地址,A接收到B的应答后,并不会马上更新本地的ARP缓存表, 而是首先检查响应报文中的MAC地址会不会和本地缓存表中某一个MAC地址相同.

图1 修改后的ARP协议工作原理

需要说明的是,本地缓存表中如果有MAC地址和响应报文中的MAC地址相同,则它们对应的IP地址肯定是不同的.因为主机A向主机B发送报文前,首先会查询本地的ARP缓存表,如果找到B的IP地址,则会使用相对应的MAC地址直接进行数据传输,而不需要广播ARP请求报文.换句话说,主机A的缓存表中并没有主机B的IP地址才会发送ARP广播报文,而它收到的ARP响应报文是主机B的IP地址,所以它们两者的IP地址一定不同.

如果主机A本地缓存表中某一MAC地址和响应报文中的MAC地址相同,说明有两种可能情况,第一种可能情况是这一MAC地址对应的主机更换了新的IP地址,而缓存表中这一MAC地址对应的是以前使用的旧的IP,另一种可能情况是出现了ARP欺骗.

图2 修改后的ARP协议示意图

不管是哪种情况,如果主机A检查到本地ARP缓存表中有MAC地址和响应报文中的MAC地址相同,就会向这一MAC地址对应的两台主机同时发出ARP确认报文,当主机A仅仅收到主机B的确认回答,而没有收到另一主机的确认回答,它便相信这一响应报文,更新本地的ARP缓存表,接着便用这个MAC地址发送数据.

如果主机A收到主机B的确认回答,然后又收到另一主机的确认回答,说明存在ARP欺骗,因为一个MAC地址只能对应一个IP地址.这种情况下,主机A不会更新本地的ARP缓存表,也不会用这个MAC地址发送数据.

如果主机A没有收到主机B的确认回答,但又收到另一主机的确认回答,也说明存在ARP欺骗,如果主机A没有收到任何主机的确认回答,那么这就说明有可能是网络拥塞,也有可能是主机B在发出ARP响应报文时虚构了IP地址或者虚构MAC地址,导致主机A无法收到任何确认回答.这两种情况下,主机A都不会更新本地的ARP缓存表,也不会用这个MAC地址发送数据.

对于其它形式的ARP欺骗,包括假冒网关的ARP单播和广播、假冒其它主机的ARP广播,按照笔者的思想,如图3所示,一台主机一旦收到ARP包,它首先应检查ARP包中的MAC地址和IP地址在本地缓存表中是否已经存在,这时会出现下面4种情况.

第一,如果ARP包中的MAC地址在本地缓存表中已经存在,但IP在本地缓存表中不存在,说明有可能是ARP欺骗,也有可能是这一MAC对应的机器更换了新的IP.

第二,如果ARP包中的IP在本地缓存表中已经存在,但MAC地址本地缓存表中不存在,说明有可能是ARP欺骗,也有可能是这一用户更换了新的机器,从而出现了新的MAC.

第三,如果ARP包中的IP和MAC地址在本地缓存表中都不存在,说明可能是一个新的用户,使用的是新的机器,当然,也有可能是病毒主机发送ARP包时虚构了并不存在的IP和MAC地址.

第四,如果ARP包中的IP和MAC地址在本地缓存表中都已经存在,而且这一IP和MAC地址在本地缓存表中是相对应的,那么它就可以忽略这个ARP包,如果它们是不对应的,也就是说IP在本地缓存表中有,但它对应另一个MAC,MAC在本地缓存表中也有,而它对应另一个IP,说明有可能是网内的这一个IP在网内另一个机器上使用,也有可能是发送ARP包的主机虚构了网内的其它用户IP和MAC地址.

对于上面出现的4种情况,主机都应当向ARP包中的源主机发送ARP确认包,同时向本地缓存表中已经存在的MAC地址或者IP地址对应的主机发送ARP确认包.如果仅仅收到前者的确认回答,而没有收到后者的确认回答,这种情况下,主机会相信这一ARP包,更新本地的ARP缓存表,其它情况都不会相信这一ARP包,从而不会更新本地的ARP缓存表.

而按照现行的ARP协议,一台主机对网内所有其它主机都是信任的,一旦收到一个ARP包,它都会相信,这是不合理的.

3 使用OPNET软件对改进协议的仿真

OPNET是最常用的网络仿真软件之一,它采用三层建模机制,分别为进程模型、节点模型和网络模型,这种建模方式和协议、设备、网络对应,可以全面反映网络的相关特性.使用OPNET进行网络建模仿真大体上可以分为以下几个步骤:配置网络拓扑(topology)、节点模型和进程的设计、配置业务(traffic)、运行仿真(simulation),最后发布仿真报告(report)[6].

3 1 配置网络结构模型

为了对改进后的ARP协议进行仿真,笔者配置了如下简单的网络结构模型, 4个客户端电脑连接一个交换机,交换机通过路由器连接另一个交换机,另一个交换机上也连接有4个客户端电脑,如图4所示.

3 2 节点模型和进程设计

上面网络结构模型中,客户端电脑节点模型采用OPNET软件现有的名为ethernet_wkstn_adv的节点模型,如图5所示.在这个节点模型中,ARP模块进程采用的是OPNET软件现有的名为ip_arp_v4的进程模型,如图6所示[7].

图3 网络拓扑结构 图4 ethernet_wkstn_adv节点模型

图5 ip_arp_v4进程

为了对改进后的ARP协议进行仿真,笔者对ARP模块对应的ip_arp_v4进程进行了改进,如图7所示.事实上,采用不同的进程来实现不同协议的仿真是OPNET软件最常用的功能.

如图7所示,仿真开始时,本模块相关参数值在init状态中进行初始化工作,之后进入到等待状态.如果某时刻数据分组到达就会触发ARRIVAL条件,这时状态机就会由等待状态进入到InquiryIPMAC状态,仿真程序便会检查ARP包中的MAC地址和IP地址在本地缓存表中是否已经存在,如果存在,状态机就会进入到sendack2状态, 向相应的主机发送确认信息,否则状态机就进入到sendack1状态,只向ARP包中的源主机发送确认信息,然后状态机就会进入waitack状态,如果只收到ARP包中的源主机返回的确认回答,没有收到其它主机返回的确认回答,则更新本地的ARP缓存表,然后返回到等待状态,否则直接返回到等待状态.

图6 新的arp进程 图 7 两种不同协议状况下点对点的排队延迟

3.3 业务量配置和仿真结果

完成网络拓扑结构配置以及节点模型和进程设计后,开始配置业务量和确定统计量.对于配置业务量,本文采用的方法是在traffic选项中再选择Import conversation pairs选项进行相关参数的配置[8].需要说明的是,配置业务量时让一个电脑不断地向整个网络发送ARP欺骗包,然后对比新老两种不同协议状况下点对点的排队延迟(queuing delay).从仿真结果可以看出,采用新的ARP协议时排队延迟时间要低,而采用老的ARP协议时排队延迟时间要高.

4 结束语

本文首先介绍了ARP协议原理,分析了几种主要的ARP欺骗方式,同时介绍了几种相应的防范措施,然后针对ARP欺骗提出了新的ARP协议,并采用OPNET仿真软件对新的协议进行了仿真,仿真结果表明,新的协议对防范ARP欺骗是有效的.

参考文献

[1] 徐 磊,李晓辉,方红雨. 基于OPNET的Ad Hoc网络建模与仿真[J]. 计算机工程, 2009, 35(1): 123-125.

[2] 伍俊洪,杨 洋,李惠杰,等. 网络仿真方法和OPNET仿真技术[J]. 计算机工程, 2004, 30(5): 106-108.

[3] 陈 敏. OPENT网络仿真[M]. 北京: 清华大学出版社, 2004.

[4] 孙飞燕,张朝阳,仇佩亮. HFC接入网络MAC层随机访问机制静态特性及动态稳定性分析[J]. 电路与系统学报, 2003, 8(2): 33-38.

[5] 朱子行,梁 俊,赵 辉. 基于TDMA的临近空间通信网MAC层协议仿真[J]. 电讯技术, 2009, 49(6): 19-22.

[6] 管明祥,郭 庆,李 陆. 基于临近空间通信网络混合业务的MAC协议[J]. 华南理工大学学报(自然科学版), 2008, 36(5): 65-69.

[7] 梁 俊,田 斌,仝海波,等. 一种支持QoS的D-TDMA协议性能分析与仿真[J]. 空军工程大学学报(自然科学版),2010,11(1): 59-63.

[8] 顾韵华,刘素英. 动态口令身份认证机制及其安全性研究[J]. 微计算机信息,2007,23(11): 51-53.

猜你喜欢

局域网IP地址网关
轨道交通车-地通信无线局域网技术应用
铁路远动系统几种组网方式IP地址的申请和设置
基于VPN的机房局域网远程控制系统
IP地址切换器(IPCFG)
基于802.1Q协议的虚拟局域网技术研究与实现
局域网性能的优化
基于SNMP的IP地址管理系统开发与应用
公安网络中IP地址智能管理的研究与思考
LTE Small Cell网关及虚拟网关技术研究
应对气候变化需要打通“网关”