龙空技术网

黑客克星养成记 系列二:MAC-Flooding原理及解决方案

安静的音乐小屋 365

前言:

如今朋友们对“macapachesession”可能比较关怀,你们都需要知道一些“macapachesession”的相关文章。那么小编同时在网上搜集了一些对于“macapachesession””的相关知识,希望兄弟们能喜欢,同学们快快来学习一下吧!

MAC-flooding攻击在当前的信息安全领域是较为常见的黑客攻击手段,通过简单黑客工具的使用,黑客们可以轻松实现盗取局域网中用户访问网页输入的用户名和密码信息,这是何等的可怕呀!

下面我们从几个方面详细讲述mac-flooding的原理以及如何实现对于此类攻击的防范:

一、什么是mac-flooding攻击

MAC Flooding可以称之AC洪泛现象。其中Flooding是一种快速散布网络连接设备(如交换机)更新信息到整个大型网络的每一个节点的一种方法。交换机中也存放着一个缓存表。同主机中的ARP缓存表相同的是,它也起到记录网络设备MAC地址与IP地址的对应关系的功能。但是交换机中的缓存表的大小是固定的,这就导致了ARP欺骗的另一种隐患:由于交换机可以主动学习客户端的MAC地址,并建立和维护这个缓存表,当某人利用欺骗攻击连续大量的制造欺骗MAC地址,缓存表就会被迅速填满,同时更新信息以洪泛方式发送到所有的接口,也就代表TRUNKING(所谓 TRUNKING是用来在不同的交换机之间进行连接,以保证在跨越多个交换机上建立的同一个VLAN 的成员能够相互通讯)的流量也会发给所有的接口和邻近的交换机,会导致其他交换机的缓存表溢出,造成交换机负载过大,网络缓慢和丢包甚至瘫痪。所以说MAC Flooding是一种比较危险的攻击,严重会使整个网络不能正常通信。

二、mac-flooding攻击原理

在cisco模拟器下建立如下图所示的网络拓扑结构:

分别为pc0配置ip地址为192.168.1.1,pc1为192.168.1.2,pc2为192.168.1.3;

用指令查看pc0和pc1主机内的ARP 地址缓存表(在cmd窗体下输入arp -a指令)

pc1主机arp缓存表

pc0主机arp缓存表

可以看到此时初始化状态下的两台主机的arp缓存表均为空,因为此时没有进行任何的数据交换;

再次查看此时交换机内部的mac地址缓存表:(在交换机CLI特权模式下输入show mac-address-table指令)

交换机mac地址缓存表

可以看到此时的交换机内部的mac地址缓存表也是空的,因为交换机此时处于初始状态,还没有记录任何端口数据的交换;

此时,我们利用pc0执行对pc1的ping指令操作:

ping操作

可以看到此时的网络是连通的;

再次查看交换机内部的mac地址缓存表:

mac地址缓存表

此时的交换机内部已经记录了两条关于pc0和pc1的mac地址以及端口的记录;

查看pc0和pc1主机内部的arp地址缓存表:

pc0 arp缓存表

pc1 arp缓存表

可看出pc2的主机内部没有缓存相应的地址表项,交换机中也没有关于pc2的任何端口信息;

到此,我们可以通过简单实验掌握交换机mac地址缓存表的工作原理;

有了上述实验的基础之后,我们需要掌握如下几个知识点:

1.交换机内部的mac地址缓存表空间是有限的,条目大约在几千条;

2.经过交换机的数据包,交换机会自动记录其数据包所包含的mac地址信息以及对应的端口信息,如缓存表所示;

3.数据包在交换机内部转发,根据mac地址缓存表判定,如果目的地址已经在mac地址缓存表之中存在,则直接采用单播的方式转发出去;

4.一旦交换机内部的mac地址条目满了,则经过交换机的任何数据包不再缓存在mac地址表中,目的地址如不再缓存表中,将采用广播的方式转发出去。

由此我们终于看出端倪,黑客们也就是采用了工具不断地向交换机发送mac地址条目,从而起到占满交换机mac地址表地目的;缓存表一旦满了,之后地数据包都是以广播方式转发出去,黑客此时只要在计算机使用类似wireshark工具(数据包捕获软件,后期会讲),就可以轻松截获用户发送往外界地数据包。

三、如何对抗mac-flooding攻击

我们可以在交换机内部启用一个名为port-security地端口安全策略,将交换机地端口与mac地址进行绑定,从而限制端口可以接收的地址条目的数量。

下面进行实验演示:

Switch>enaSwitch#conf tEnter configuration commands, one per line. End with CNTL/Z.Switch(config)#int f0/1Switch(config-if)#shutdownSwitch(config-if)#switchport mode access设置端口安全之前要将端口设置为access模式Switch(config-if)#switchport port-securitySwitch(config-if)#no shutdownSwitch(config)#int f0/1Switch(config-if)#switchport port-security maximum 2设置f0/1端口最大绑定mac地址条目为两条Switch(config-if)#switchport port-security mac-address 0005.5E3B.151DSwitch(config-if)#switchport port-security mac-address 00E0.8F10.7B08分别绑定pc0和pc1的mac地址Switch(config-if)#exitSwitch#show port-security address查看交换机端口的绑定情况

此时如果我们把pc1和pc2都通过集线器连接到交换机的f0/1口:

可以看到此时的pc2连线已经断开了,由此实现了端口安全的设置,阻止了外来未授权设备的接入。

补充:

端口安全的设定同样可以采取自动的方式获取设备。

Switch#enaSwitch#conf tEnter configuration commands, one per line. End with CNTL/Z.Switch(config)#int f0/1Switch(config-if)#switchport port-security maximum 2Switch(config-if)#switchport port-security mac-address sticky配置为自动获取接入设备Switch(config-if)#exitSwitch(config)#int f0/1Switch(config-if)#switchport port-security violation shutdown配置特殊情况处理模式为端口关闭Switch(config-if)#no shutdown

标签: #macapachesession