• HCNP Routing&Switching之MAC安全


      前文我们了解了GRE over IPSec 相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16601491.html;今天我们来聊一聊mac安全相关话题;

      先来回顾下二层交换机的工作原理

      我知道对于一台二层交换机来说,它的核心功能就是根据mac地址来转发数据;之所以能够根据mac地址来转发数据,是因为交换机的工作原理;交换机收到一个帧就会记录对应的帧的源mac和对应接口做对应;这样一来,当交换机收到对应目标mac的帧的时候,它就知道该把这个帧从那个接口转发出去;如果交换机收到的目标mac帧,在对应mac地址表里没有,此时交换机就会把对应数据包进行泛洪,如果在某一个接口收到了对应包的回复,此时它就会把对应接口和对应接口回复的源mac记录到mac地址表中;简单讲就是根据mac地址表来转发数据,如果没有就泛洪;

      基于MAC的攻击

      基于mac的攻击,通常手段有两种,一种是泛洪,一种是欺骗;所谓泛洪就是指攻击者在短时间内伪造很多mac地址帧,直接把交换机的mac地址表给写满;这样做最直接的后果就是,正常的数据包,交换机里没有对应mac,它不知道怎么转发,这个时候它就会泛洪,一泛洪,对应攻击者就能抓到数据包,从而获取数据;所谓欺骗是指攻击者恶意发送arp广播,告诉交换机,网关是我(通常就是欺骗网关,当然中间人攻击,也是类似的过程,两边欺骗);交换机收到攻击者的arp广播,它肯定会记录对应mac地址和接口,同时因为是arp广播,交换机上的其他pc收到对应的包,就会在本地记录对应mac和ip地址;从而在pc和网关通信时,会封装对应的mac地址,将数据发送给攻击者;这样一来攻击者就能够通过抓包等手段获取用户的数据;总之不管是mac泛洪攻击还是欺骗攻击,都是利用交换机的工作原理,通过mac地址表项来转发数据的特性来实行的攻击;

      提示:上图为mac泛洪攻击的示意图;攻击者伪造很多mac地址,发送给交换机,以此来占用交换机mac地址表;使得正常的mac地址表项被覆盖;正常的mac地址表项被覆盖,正常用户通信时,交换机就会把对应数据包进行泛洪,使得用户数据被攻击者抓取;

      MAC地址表项分类

      提示:常见的就这三种表项,动态,静态和黑洞;动态表项是指交换机通过对帧内的源mac进行学习而来,有老化时间;静态和黑洞都是管理员手动配置的,都不会老化;黑洞表项是指收到对应mac地址的帧都会被丢弃,不管是源mac还是目标mac,交换机只要收到对应有黑洞表项的mac就会主动丢弃;

      MAC地址表安全功能

      MAC地址表特性参数

      提示:默认交换机不做任何配置,动态学习mac的功能是开启的,老化时间为5分钟,端口的mac地址的优先级都是0;如果开启了端口安全,默认端口安全mac地址学习限制数量为1,即只能学习到一个mac,多的学习不到;端口安全的保护动作为restrict,即转发合法流量和发送告警;mac地址飘逸表项老化时间为5分钟,丢弃全0非法mac地址,以及收到全0非法mac地址报警功能都是关闭的;mac刷新arp功能也是关闭的;

      实验:基于mac的泛洪攻击

      实验环境说明:如上实验拓扑,我们使用云来桥接本地lo接口,另一端开一个kali来模拟攻击者

      没有攻击,对应交换机mac地址表

      提示:正常情况下,如果交换机没有收到帧,对应是mac地址表是空的才对,上面的mac地址是我们本地lo接口的mac,这是我们使用云桥接lo接口,默认lo接口会每隔一段时间发送一个ssdp包来发现局域网里的设备,所以我们在交换机上能够看到对应lo接口的mac地址;如下抓包

      使用kali ping pc1和pc2

      在交换机上查看mac地址表项

      提示:可以看到对应的mac和接口一一对应;正是因为这个mac表项,对应交换机就能正常的将数据包转发到对应接口发送出去;

      查看交换机mac地址表项汇总

      提示:这里是模拟器bug,它的统计数据显示不出来;从上图可以看到该交换机最大容纳32768条mac地址和接口对应的记录,一旦超过这个记录就会覆盖最老的记录(覆盖只针对动态学习到的mac,静态是覆盖不了的);

      使用kali攻击sw1

      提示:使用macof工具来伪装mac地址,该工具能在一瞬间伪造大量mac地址帧,然后从网卡发送出去;-i选项是用来指定从那个网卡发送;

      提示:可以看到我们只把macof工具开来不到5秒,对应交换机就收到了大量的mac地址帧,瞬间交换机的mac地址表也多了许多mac地址条目;

      以上就是mac泛洪攻击的现象,我们总结一下,出现mac泛洪攻击时,查看交换机的mac地址表项就会发现,在某一个接口下会存在大量的mac地址条目,很显然这不正常;

      MAC安全特性配置

      1、添加静态mac地址表项

      提示:添加静态mac时,我们需要写清楚对应mac 对应的接口和vlan即可;

      验证:查看静态mac是否添加成功?

      提示:可以看到对应mac地址表里就多了一条我们刚才添加的记录;汇总里也统计出有一条静态条目;

      2、添加黑洞mac地址表项

      验证:用kali ping pc2的地址,看看是否能够ping通呢?

      提示:可以看到现在kali就不能正常ping通pc2,原因是kali拿不到pc2的mac,因为pc2的mac是一个黑洞mac,对应pc2收到kali的arp请求,在发送自己的mac时,交换机会丢弃对应pc2发送到任何包;

      提示:第二张截图是在pc2上抓取的,可以看到pc2的确回复了kali的arp请求,但是kali却没有收到,原因就是交换机丢弃了pc2的包,因为pc2发送的包,源mac被设置成黑洞mac了;

      3、配置老化时间

      提示:默认mac地址表项的老化时间为300秒;

      4、禁止mac地址学习功能

      提示:以上命令可以在vlan模式和接口模式下使用,在接口模式下使用作用范围为当前接口,在vlan模式下使用作用范围是对应vlan;该命令后面还有两个参数,一个是forward,一个是discard;默认是不写后面的动作就是forward,表示转发;即对应端口或vlan所有接口,只是关闭动态学习mac的功能,但收到arp回复包进行转发;discard则表示根据目标mac地址,如果目标mac地址在mac地址表项存在,则转发,如果目标mac地址不存在mac地址表则丢弃;

      实验:把g0/0/4接口的学习mac功能关闭,并配置默认动作为discard

      查看mac地址表,看看对应g0/0/4口是否学习到mac?

      提示:可以看到现在mac表,对应g0/0/4口没有学习到任何mac;

      用pc1 ping pc3,看看对应接口是否会学习到mac?通信是否会通呢 ?

      提示:可以看到对应pc1pingpc3并没有ping通;

      查看mac地址表项

      提示:可以看到4口也没有学习到mac;

      抓包查看过程

      提示:在pc3上抓包,可以看到对应pc3收到pc1的arp广播,并做了回复;

      在pc1上抓包

      提示:在pc1上抓包,对应pc3的arp回复包并没有收到,说明g0/0/4口丢弃了arp回复包,导致pc1拿不到pc3的mac,也就无法正常通信;

      删除g0/0/4的禁止动态学习mac地址,先让g0/0/4学习到mac,然后再禁用学习功能呢

      pc3发包,让交换机学习到mac

      禁用4口学习mac功能

      提示:可以看到现在4口已经学习到mac;

      现在pc1 ping pc3 看看是否能通?

      提示:可以看到现在pc1pingpc3是能够正常ping通的,这是因为交换机的mac地址表项里对应通信的目标mac,对应数据包会转发,如果没有则丢弃;当然,如果mac地址表老化,对应条目被删除,那么通信也无法正常进行;

      把动作改为forward,看看对应接口是否能够学习到mac呢?通信是否正常呢?

      pc1 ping pc3看看g0/0/4是否学习到mac?对应通信是否能够正常通行呢?

     

      提示:可以看到通信是可以正常通讯,但是对应接口是不能够学习到mac条目的;

      5、限制端口学习mac地址的数量

      提示:该命令可以在接口模式和vlan模式下使用,在接口模式下作用范围当前接口,在vlan模式下作用范围是对应vlan;

      验证:用macof工具攻击,看看对应3口是否只能学习到10条mac地址条目呢?

      提示:可以看到对应交换机的终端在报警,对应3口也只能学习到10条mac地址条目;这里需要注意,这个学习到的mac是先学满10条,后面的就不学习了,并不是重复覆盖;

      6、配置告警

      提示:开启或关闭报警,必须配置前边的最大学习限制才可以,否则它会提示Error: Failed to change the configurations of the action or alarm because the MAC-limit rule does not exist.;

      7、开启丢弃全0非法mac地址报文的功能

      提示:以上两条命令在全局模式下使用;第一条作用是开启因收到全0非法mac报警;第二条表示开启丢弃全0非法mac;

      8、配置mac刷新arp功能

      提示:arp表是ip地址和mac地址以及出接口的对应表,mac地址表是mac地址和出接口的对应表;两者老化时间不一样,就导致当mac地址表是g0/0/1接口更新到g0/0/2口,对应arp里的信息还在g0/0/1口,这会导致通信中断;为了避免这样的问题,上述命令就表示当mac表项发生变化,通知arp表项对应条目更新,从而避免通信中断的问题;

      官方文档示意图

  • 相关阅读:
    【物联网】浅谈单片机中的看门狗
    FCN的图像分割 语义分割 技术研究,基于pytorch
    ElementPlus Switch 开关基础使用
    MySQL增删改查进阶 — 表的设计
    猿创征文 | 【国产数据库实战】使用docker部署PolarDB-X云原生分布式开源数据库
    (24)语义分割--BiSeNetV1 和 BiSeNetV2
    透过现象看本质,如何针对用户做好需求分析
    若依(RuoYi)SpringBoot框架密码加密传输(前后分离板)
    港科夜闻|香港科技大学校长叶玉如教授,新加坡国立大学曾运雄博士:发现阿尔茨海默病新疗法...
    【无标题】
  • 原文地址:https://www.cnblogs.com/qiuhom-1874/p/16618201.html