为了不影响学校局域网内其他计算机的正常上网,文本实验只在一个计算机室的子网192.168.10.64/26内进行。该子网处于双核心VRRP局域网中,经过汇聚层的双链路上联到双核心层。核心1和核心2的实网关分别为192.168.10.124和192.168.10.125。子网内各计算机的默认网关均设为VRRP的虚拟网关192.168.10.126,其中 vrid=12D=0CH。按虚拟网关的组成结构00-00-5E-00-01-XX,得出该虚拟网关的MAC地址为00-00-5E-00-01-0C。
在该子网的计算机上常ping外网某域名,比如“ping www.baidu.com -t”,在没有假冒网关的计算机存在前都是连通的。现用MAC地址为EC-6C-9F-9B-11-D5的PC1模拟假冒网关,简单点就是把PC1的IP地址修改为虚拟网关的IP地址192.168.10.126,其“默认网关”栏会自动更改为空格。这虽然与ARP欺骗有所区别,但也是好奇心比较强的学生常用的、简单的、不用ARP欺骗攻击软件的一个有效的捣乱方法。假冒网关开始后,稍等片刻就能观察到其他计算机断开了网络连接,假冒网关开始奏效。
图1 终端计算机ARP表
以下分别在终端计算机和接入交换机上进行一系列的防范和解除防范操作,观察网络通断的正反效果。
在终端计算机的ARP表中,网关的MAC地址默认是动态的。静态网关法就是使终端计算机ARP表中的MAC地址成为静态地址,即保证其始终是正确的网关MAC地址而不会被假冒者的MAC地址所替代。在Windows 7以前的版本中,使网关成为静态的命令是“ARP -s inet_addr eth_addr”。 而 netsh(Network Shell)是Windows 7系统提供的功能强大的网络配置命令,代替上述命令的是“netsh interface ipv4 add neighbors idx ip mac”。
第一步:查看网关的IP地址、物理地址和类型
在终端计算机上执行arp -a命令,结果如图1所示。
由于还没有执行使网关MAC地址改变状态的命令,所以“类型”项为“动态”;由于现已经存在了假冒网关的计算机,所以网关192.168.10.126对应的MAC地址已经不是正确的MAC地址 00-00-5E-00-01-0C,而是假冒者的MAC地址EC-6C-9F-9B-11-D5了。
第二步:查看网卡IDX号
执行命令“netsh inter face ipv4 show interface”查看网卡的IDX号,显示结果如图2所示。
虽然此时假冒已经存在,网络已经断开,但“状态”信息仍然显示为“connected”。
第三步:静态网关
执行命令“netsh inter face ipv4 add neighbors 14 192.168.10.126 00-00-5E-00-01-0C”使网关的MAC地址成为静态,使网关的IP地址与MAC地址成为一一对应关系,这样就不会因为子网中存在假冒者而改变其真实的MAC地址。
第四步:再次查看计算机的网络状态和连通性
在终端计算机上再次执行arp -a命令,结果如图3所示。
这时观察到“ping www.baidu.com -t”没有丢包现象,网络连通了。
第五步:故障重现
执行命令“netsh inter face ipv4 delete neigh bors 14”删除ARP表中的静态网关,网络就又被断开了。
小结:哪台计算机进行了上述静态网关操作,哪台计算机就能连接到网络,否则网络为断开状态。
图2 网卡的IDX号
图3 正确的ARP表
“静态网关法”是在每一台终端计算机上进行的ARP表操作,而“IP-MAC核对法”是在接入交换机上的操作,其步骤如下。
第一步:捆绑所有计算机的IP地址和MAC地址
在接入交换机的全局配置模式中执行命令“userbind static ip-address 192.168.10.X mac-address HHHH-HHHH-HHHH”,把所有终端计算机的IP地址和MAC地址进行捆绑。
第二步:地址核对(Check)
在终端计算机对应的交换机端口执行命令“arp anti-attack check userbind enable”,对进出数据包中的IP地址和MAC地址进行核对(Check),与已经存在的静态(Static)捆绑(Bind)不一致的数据包全部丢弃。
第三步:故障重现
解除非假冒者的捆绑,不影响网络的通断性;解除假冒者的捆绑,则所有子网内的计算机断开了连接。
小结:由于在实际情况下,不能预先知道谁将要假冒网关,所以需要对所有的IP-MAC进行捆绑。
子网内有假冒网关的计算机存在时,其它计算机就会获取到假冒者的MAC地址做为网关的MAC地址。在接入交换机上进行端口隔离使它们之间不能互相通信,则就不能获取到假冒者的MAC地址了。
第一步:端口隔离
进入端口组,执行命令“Port-isolate enable”。与假冒者相互隔离后,被隔离者的网络就连通了,没有和假冒者隔离的计算机仍然不能连通网络。
第二步:解除端口隔离
解除端口隔离的命令是“Undo port-isolate enable”,解除了哪台计算机对应交换机端口与假冒者的隔离,则哪台计算机就不能连通网络了。
小结:端口隔离效果虽然明显,但端口隔离后各计算机之间不能共享资源。
在VRRP网络中,假冒者假冒的是VRRP的虚拟网关,并没有假冒实网关。所以,只要把计算机的“默认网关”更改为核心交换机1的实网关 192.168.10.124,或者核心交换机2的实网关192.168.10.125,则可以避开假冒者的目的。
第一步:修改计算机的“默认网关”为实网关;
第二步:检查网络的通断情况,修改为实网关后的计算机能连通网络。
小结:虽然这样对防范假冒网关是有效的,但是双核心VRRP冗余就失去了意义,相当于是单核心了,但是在有假冒网关存在时也不失是一个临时应急的办法。
在接入交换机、汇聚交换机和核心交换机上配置防范ARP攻击的相关命令。比如,配置防ARP欺骗攻击、配置防ARP泛洪攻击、配置ARP防网关冲突、配置ARP报文内MAC地址一致性检查等均没有明显效果。
对于假冒网关防范的有效方法有:静态网关法、IPMAC核对法、实网关法、端口隔离法。交换机操作手册上介绍的有关防范ARP欺骗的所有方法均无明显效果。