解决方案
 
HOME > 解决方案 > ARP欺骗、ARP攻击分析及解决办法
 

ARP欺骗、ARP攻击分析及解决办法

    ARP,即“地址解析协议”,用来将IP地址解析成MAC地址。众所周知,互联网中是通过IP地址进行数据传输的,但是到了局域网后,用户计算机与交换机之间的数据包是通过MAC地址进行传输的。所以,ARP协议对于网络的通讯是至关重要的。

    ARP的工作流程是:
    1.当A机器准备向B机器发送数据时,A机器首先在本机的ARP缓存中查找有没有B机器的MAC地址,如果有,直接发送数据包。
    2.如果没有B机器的MAC地址,则A机器向所有机器发送一个ARP广播包,意思为“B机器的MAC地址是什么?”。
    3.当其他机器收到该数据包后会静悄悄的丢弃,B机器收到该数据包后会向A机器发送一个ARP回包,意思为“我是B机器,MAC地址是XXXXXX”。
    4.A机器收到B机器的ARP回包后在自己机器中缓存下B机器的MAC地址,同时向B机器发送数据包。

    从上不难看出,在第3步时,如果不法机器(比如C机器)向A机器发送了伪造的ARP回包,告诉A机器,B机器的MAC地址是自己(C机器)或者是一个不存在的MAC地址,会造成什么情况呢?
    如果回复的是自己的MAC地址,则A向B发送的所有数据包都会发送给了C机器,同时C机器再把数据包转发给B机器,就完成了数据包的欺骗过程,实际上A机器就被监听了。而这种监听可以发生在交换环境下,根据不需要使用HUB。
    如果回复的是一个不存在的MAC地址,则A机器永远不能把数据包发送给B,而如果B机器是网关,则A机器就没有办法上网了,因为数据包永远到不了B机器。这种手段目前是一些低级网络管理软件阻止用户上网的主要办法,比如:网络执法官、网络剪刀手等等。当然,它们同时也向交换机、路由器发送ARP欺骗包,进行双向的ARP欺骗,以防止用户在自己机器上进行IP与MAC的静态绑定。目前破坏局域网通讯的ARP病毒也是使用这种手段。

    分析了ARP工作流程及攻击原理后,不难看出,问题的关键是MAC地址被伪造了。那么能不能不让伪造?答案是肯定的。解决的第一种方法是进行IP、MAC的静态双向绑定。
    操作系统默认对IP与MAC是动态绑定的,也就是一段时间后需要重新发送ARP,以寻找对应IP地址的MAC地址。解决ARP问题的第一步是在客户机上进行IP地址与MAC地址的静态绑定。绑定的命令是:
    arp -s 想绑定的IP地址 对应的MAC地址,比如:arp -s 192.168.0.1 00-1f-21-0c-36-48
这样之后,向192.168.0.1机器发送数据包就不需要再查找MAC地址了。有了这样的绑定后并不能解决问题,如果在192.168.0.1机器上对应客户机的MAC地址被欺骗了,数据包虽然能够发送给192.168.0.1机器,但是从这台机器没有办法返回数据包,所以,必须还要在192.168.0.1机器上做同样的绑定。

    通过以上办法就基本可以解决ARP欺骗与ARP攻击了。说起来比较容易,但并不是所有的环境都可以用这种办法,比如:宾馆、酒店基本都是流动用户,需要帮助每个新来的客人进行设置,同时也需要在网关中重新绑定新来的客户机,工作量非常之大,是任何网络管理员承受不了的。另外,用户机器虽然比较固定,但是网关没有MAC地址静态绑定功能,也没有办法实现。

    利用《亿特网络认证计费系统》还提供了其它两种解决方法:
    1.采用PPPOE拨号
    《亿特网络认证计费系统》内置了PPPOE拨号服务器,在采用PPPOE拨号时,网卡中可以不用设置TCP/IP协议,这样不仅仅可以防止ARP欺骗与攻击,同时也避免了烦人的IP地址冲突提示。同时,PPPOE拨号后,客户机与网关通讯时不需要解析MAC地址,因此,就不存在ARP欺骗问题了。值得一提的是,《亿特网络认证计费系统》提供的PPPOE拨号服务能够跨VLAN进行PPPOE拨号,这是一般PPPOE服务器没有办法支持的。它们只能限制一个VLAN或不划分VLAN的情况下进行PPPOE拨号,只适合小范围的使用。
    2.采用VLAN隔离每一个客户机
    由于ARP包没有办法穿透不同的VLAN,因此,可以将每个交换机端口划分成一个单独的VLAN,这样任何一台机器就没有办法向其他机器发送ARP欺骗包,同时任何机器也没有办法接受ARP数据包,就避免了ARP的欺骗。当然,正常网络环境下这样做是很麻烦的,因为客户机要能与其他机器通讯,必须要设置VLAN的网关,这就要求VLAN必须设置IP地址,初始工作量很大,并且IP地址浪费会较多。采用《亿特网络认证计费系统》后,启用VLAN支持功能,每个VLAN不需要设置IP,并且每台机器可以使用任意的IP地址,都能通过《亿特网络认证计费系统》上网。由于VLAN号可以有4096个数字,足够一般的单位使用了。

    虽然我们会在道德上谴责那些利用ARP进行恶意攻击的人,但是有效的管理手段才是更重要的。因为,这本来就是一场技术之战。