在https://virtualtips.info/?p=316文章中提到过“MAC地址更改”和“伪传输”安全策略。作用范围和“混杂模式”是一样的。
这两个策略分别是做什么的呢?
先了解一些基本概念。
一个物理网卡的ROM中存储着它的MAC地址,不可更改,叫做“初始MAC地址”。
而在操作系统中,比如Windows,该网卡也有个MAC地址,叫做“有效MAC地址”,它是可以通过网卡属性或者注册表修改的。
在默认情况下,初始MAC地址和有效MAC地址是相同的,除非用户修改,修改后,通过物理网卡发送到网络上的帧,源MAC地址就是修改后的“有效MAC地址”,不同于固化的“初始MAC地址”。
虚拟网卡也有类似概念,固化的“初始MAC地址”就是在虚拟机VMX文件中的MAC地址,(ESXi管理员可以修改它,但对虚拟机系统来说,它是固化不可修改的)。而虚拟机系统中的网卡MAC地址,就是“有效MAC地址”,同样可以修改。这些MAC地址,vSphere/ESXi自然都是知道的。
MAC地址更改
ESXi知晓虚拟机的“初始MAC地址”和“有效MAC地址”,当两者不同时,需要执行相应的安全策略:
拒绝:此VM修改了MAC地址,它是想冒充别的VM吗?我把它的端口禁用掉。
允许:我知道VM修改了MAC地址,并启用它的端口。
此时,执行策略的是虚拟交换机,虽然我们说禁用了端口,但其实虚拟机OS本身是不知道的,因为并非在物理层或链路层断开网卡,而是丢弃了发给这个虚拟机OS的帧。
伪传输
MAC地址更改是修改“有效MAC地址”,此时通过此网卡向外传输的帧的源MAC地址也随着“有效MAC地址”修改了。还有些恶意软件,它不修改“有效MAC地址”,直接修改向外传输的帧的源MAC地址。伪传输这个策略检查的就是源MAC是否和“有效MAC地址”一致。
拒绝:当恶意软件修改了源MAC地址(伪造传输),该虚拟机的虚拟网卡就会删除该帧。但会允许没伪造的帧传输出去。
允许:随便什么源MAC,随便发。
此时,执行策略的是虚拟网卡。
两个策略的区别:
MAC地址更改比较的是“有效MAC地址”和“初始MAC地址”,方向是入站(从外界向虚拟机网卡传输的帧),而伪传输比较的是“源MAC”和“有效MAC地址”,方向是出站(从虚拟机网卡向外界发送的帧)。前者是断开入站的端口,后者是过滤出站的伪传输帧。
这两个安全策略可以通过类似“网络执法官”之类的应用配合ARP和PING命令来验证。
参考文档: