2

HCNP Routing&Switching之MAC安全 - Linux-1874

 1 year ago
source link: https://www.cnblogs.com/qiuhom-1874/p/16618201.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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地址表项来转发数据的特性来实行的攻击;

1503305-20220823221730196-1815254852.png

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

  MAC地址表项分类

1503305-20220823223732183-1537093318.png

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

  MAC地址表安全功能

1503305-20220823224441716-414124823.png

  MAC地址表特性参数

1503305-20220823224549408-1082927065.jpg

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

  实验:基于mac的泛洪攻击

1503305-20220823235711045-1933237604.png

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

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

1503305-20220823235859316-1280679852.png

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

1503305-20220824000833693-656560053.png

  使用kali ping pc1和pc2

1503305-20220824001239651-2014098864.png

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

1503305-20220824001039579-343842226.png

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

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

1503305-20220824001424258-1701278935.png

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

  使用kali攻击sw1

1503305-20220824001650621-2058474214.png

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

1503305-20220824002128895-713335113.gif

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

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

  MAC安全特性配置

  1、添加静态mac地址表项

1503305-20220824003041151-1710887366.png

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

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

1503305-20220824003237067-1993573427.png

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

  2、添加黑洞mac地址表项

1503305-20220824003822085-839681454.png

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

1503305-20220824003929611-2042462263.png

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

1503305-20220824004409016-143687188.png
1503305-20220824004502052-1509274603.png

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

  3、配置老化时间

1503305-20220824004802526-1014532029.png

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

  4、禁止mac地址学习功能

1503305-20220824013318026-1591066078.png

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

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

1503305-20220824013933209-725859880.png

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

1503305-20220824014023948-1973269244.png

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

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

1503305-20220824014230520-1467265948.png

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

  查看mac地址表项

1503305-20220824014343396-1349067025.png

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

  抓包查看过程

1503305-20220824014444937-1164808205.png

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

  在pc1上抓包

1503305-20220824014559737-1917923506.png

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

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

1503305-20220824014809298-599478931.png

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

1503305-20220824014846187-1181379717.png
1503305-20220824014920959-1895566771.png

  禁用4口学习mac功能

1503305-20220824015044345-379603059.png

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

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

1503305-20220824015155684-1395050066.png

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

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

1503305-20220824020452585-631959894.png

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

1503305-20220824020552629-1946591790.png

 

1503305-20220824020648153-713857826.png

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

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

1503305-20220824020911450-397889160.png

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

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

1503305-20220824021535513-248093275.gif

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

  6、配置告警

1503305-20220824022248159-1737410595.png

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

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

1503305-20220824022718759-6851797.png

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

  8、配置mac刷新arp功能

1503305-20220824023409881-850774783.png

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

  官方文档示意图

1503305-20220824025130446-2132443012.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK