在局域网内防止ARP欺骗的方法

对于ARP欺骗,提出几点加强安全防范的措施 。环境是主机或者网关是基于Linux/BSD的 。
一、理论前提
本着“不冤枉好人,不放过一个坏人的原则”,先说说我的一些想法和理论依据 。首先,大家肯定发送ARP欺骗包肯定是一个恶毒的程序自动发送的,正常的TCP/IP网络是不会有这样的错误包发送的 。
这就假设,假如犯罪嫌疑人没有启动这个破坏程序的时候,网络环境是正常的,或者说网络的ARP环境是正常的,假如我们能在犯罪嫌疑人启动这个犯罪程序的第一时间,一开始就发现了他的犯罪活动,那么就是人赃俱在,不可抵赖了,因为刚才提到,前面网络正常的时候证据是可信和可依靠的 。好,接下来我们谈论如何在第一时间发现他的犯罪活动 。
ARP欺骗的原理如下:
假设这样一个网络,一个Hub接了3台机器
HostA HostB HostC 其中
A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA
B的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB
C的地址为:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC
正常情况下 C:arp -a
Interface: 192.168.10.1 on Interface 0x1000003
Internet Address Physical Address Type
192.168.10.3 CC-CC-CC-CC-CC-CC dynamic
现在假设HostB开始了罪恶的ARP欺骗:
B 向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是DD-DD-DD- DD-DD-DD(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了) 。当A接收到B伪造的ARP应答,就会更新本地的ARP 缓存(A可不知道被伪造了) 。而且A不知道其实是从B发送过来的,A这里只有192.168.10.3(C的IP地址)和无效的DD-DD-DD-DD- DD-DD mac地址,没有和犯罪分子B相关的证据,哈哈,这样犯罪分子岂不乐死了 。
现在A机器的ARP缓存更新了:
C:>arp -a
Interface: 192.168.10.1 on Interface 0x1000003
Internet Address Physical Address Type
192.168.10.3 DD-DD-DD-DD-DD-DD dynamic
这可不是小事 。局域网的网络流通可不是根据IP地址进行,而是按照MAC地址进行传输 。现在192.168.10.3的MAC地址在A上被改变成一个本不存在的MAC地址 。现在A开始Ping 192.168.10.3,网卡递交的MAC地址是DD-DD-DD-DD-DD-DD,结果是什么呢?网络不通,A根本不能Ping通C!
所以,局域网中一台机器,反复向其他机器,非凡是向网关,发送这样无效假冒的ARP应答信息包,NND,严重的网络堵塞就开始了!网吧治理员的噩梦开始了 。我的目标和任务,就是第一时间,抓住他 。
不过从刚才的表述似乎犯罪分子完美的利用了以太网的缺陷,掩盖了自己的罪行 。但其实,以上方法也有留下了蛛丝马迹 。尽管,ARP数据包没有留下HostB的地址,但是,承载这个ARP包的ethernet帧却包含了HostB的源地址 。
而且,正常情况下ethernet数据帧中,帧头中的MAC源地址/目标地址应该和帧数据包中ARP信息配对,这样的ARP包才算是正确的 。假如不正确,肯定是假冒的包,可以提醒!但假如匹配的话,也不一定代表正确,说不定伪造者也考虑到了这一步,而伪造出符合格式要求,但内容假冒的ARP数据包 。
不过这样也没关系,只要网关这里拥有本网段所有MAC地址的网卡数据库,假如和Mac数据库中数据不匹配也是假冒的ARP数据包 。也能提醒犯罪分子动手了 。
二、防范措施
1. 建立DHCP服务器(建议建在网关上,因为DHCP不占用多少cpu,而且ARP欺骗攻击一般总是先攻击网关,我们就是要让他先攻击网关,因为网关这里有监控程序的,网关地址建议选择192.168.10.2,把192.168.10.1留空,假如犯罪程序愚蠢的话让他去攻击空地址吧),另外所有客户机的 IP地址及其相关主机信息,只能由网关这里取得,网关这里开通DHCP服务,但是要给每个网卡,绑定固定唯一IP地址 。

推荐阅读