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

mac 查看端口_黑客克星养成记 系列二:MAC-Flooding原理及解决方案相关推荐

  1. mac 查看端口_如何重置mac上的系统管理控制器smc教程

    虽然mac是一款十分高端的个人笔记本电脑,但是mac也会有出现故障的时候,比如风扇高速转动.键盘背光灯行为有些异常异常等等,那极有可能是你的系统管理控制器smc出现了问题,所以今天小编就来科普大家如何 ...

  2. mac 查看端口_交换机端口对应的mac地址与IP地址

    1.MAC地址表 通俗的讲,没太交换机都有一个MAC地址表,该表记录了交换机每个端口与终端设备的MAC地址的映射关系,交换机的工作原理就是跟据MAC表中的端口与主机地址的映射关系来选择目的端口,进行二 ...

  3. mac查看端口占用程序

    mac查看端口占用程序: linux的命令方式在mac上不管用: ps -ef | grep 5000 换成这个,ok了,正常kill lsof -i tcp:5000

  4. Windows、Linux及Mac查看端口和杀死进程

    本文介绍如何在Windows.Linux及Mac下查看端口和杀死进程. Windows下查看端口和杀死进程 查看占用端口号的进程号:netstat –ano | findstr "指定端口号 ...

  5. mac 查看端口占用情况 停掉端口

    1.查看端口被哪个程序占用 sudo lsof -i tcp:port 如: lsof -i tcp:8080 #查看8080端口是否被占用或者sudo lsof -i tcp:8080 2.看到进程 ...

  6. mac查看端口占用情况及释放端口

    ** 在Mac上进行开发时,可能会遇到端口被占用错误信息,怎么解决呢?这时可以通过「终端」应用,使用命令 lsof -i tcp:port (port替换成端口号,比如8080)可以查看该端口被什么程 ...

  7. linux mq查看端口_通过rabbitmq的web监控mcollective的状态

    通过rabbitmq的web监控mcollective的状态 1.开启插件[root@linuxmaster modules]# rabbitmq-plugins enable rabbitmq_ma ...

  8. Mac查看端口占用情况

    终端命令的方式查看端口情况 1.查看端口被哪个程序占用 sudo lsof -i tcp:port 如: sudo lsof -i tcp:8082 2.看到进程的PID,可以将进程杀死. sudo ...

  9. Mac 查看端口占用情况及杀死进程

    在开发中经常会遇到端口占用问题,例如下面,npm start 报的错误: 1. 查看端口占用情况命令 lsof -i tcp:8080 输出结果: 字段说明: 字段名 说明 COMMAND 进程名称 ...

最新文章

  1. CodeGen CreateFile实用程序
  2. 面试官问: 如何保证 MQ消息是有序的?
  3. 1分钟、2束光,3D打印出一座“柏林地标”,精度高于发丝 | Nature
  4. python爬虫(四)_urllib2:handle处理器和自定义opener
  5. hdu1316 大数
  6. 普211标准三维EE零基础转CS申
  7. 虚拟化(8)_Docker容器
  8. matlab 归一化_MATLAB主成分PCA人脸识别深度解析(一)
  9. 最简单的视音频播放示例6:OpenGL播放YUV420P(通过Texture,使用Shader)
  10. js替换和全部替换字符串标点
  11. 远程教育英语和计算机难吗,网络教育英语统考难么?
  12. 近600个教学学习资料链接(zz)
  13. 产品化机器学习的一些思考
  14. 串口console乱码_串口打印机不能打印或打印乱码
  15. 蘑菇书 第一章绪论 习题
  16. Rancher配置域名证书
  17. 08运行程序常见错误
  18. Illustrator绘制时尚的圣诞老人插画教程
  19. 1299: 【二分查找】找球号
  20. 消除WORD中的域连接

热门文章

  1. Webix 1.5发布:一个强大的JavaScript UI组件库
  2. 动易SiteFactory CMS自动采集器 V2.0
  3. pandas打乱行次序
  4. matlab中cell的使用
  5. Windows批量添加防火墙例外端口
  6. 2019牛客暑期多校训练营(第五场)G-subsequence 1
  7. Practical Vim 第一章 第二章
  8. Docker最全教程——从理论到实战(一)
  9. Linux centos下项目环境搭建及版本部署
  10. 计算MySQL的内存峰值公式