2023年12月15日发(作者:)
交换网络中的MAC地址欺骗
1 MAC地址欺骗
目前很多网络都使用Hub进行连接的,众所周知,数据包经过Hub传输到其他网段时,Hub只是简单地把数据包复制到其他端口。因此,对于利用Hub组成的网络来说,没有安全而言,数据包很容易被用户拦截分析并实施网络攻击(MAC地址欺骗、IP地址欺骗及更高层面的信息骗取等)。为了防止这种数据包的无限扩散,人们越来越倾向于运用交换机来构建网络,交换机具有MAC地址学习功能,能够通过VLAN等技术将用户之间相互隔离,从而保证一定的网络安全性。
交换机队于某个目的MAC地址明确的单址包不会像Hub那样将该单址包简单复制到其他端口上,而是只发到起对应的特定的端口上。如同一般的计算机需要维持一张ARP高速缓冲表一样,每台交换机里面也需要维持一张MAC地址(有时是MAC地址和VLAN)与端口映射关系的缓冲表,称为地址表,正是依靠这张表,交换机才能将数据包发到对应端口。
地址表一般是交换机通过学习构造出来的。学习过程如下:
(1) 交换机取出每个数据包的源MAC地址,通过算法找到相应的位置,如果是新地址,则创建地址表项,填写相应的端口信息、生命周期时间等;
(2) 如果此地址已经存在,并且对应端口号也相同,则刷新生命周期时间;
(3) 如果此地址已经存在,但对应端口号不同,一般会改写端口号,刷新生命周期时间;
(4) 如果某个地址项在生命周期时间内没有被刷新,则将被老化删除。
如同ARP缓冲表存在地址欺骗的问题,交换机里的这种MAC地址表也存在地址欺骗问题。在实际应用中,人们已经发现早期设计的许多交换机都存在这个问题,以Cisco2912交换机为例,阐明一下如何进行MAC地址欺骗。
如图所示,两个用户PcA和PcB分别连接Cisco2912的portA和portB两个端口。
PortC Internet
|
|
Cisco2912
portA / portB
/
Hub Hub
| |
PcA PcB
假定PcA的MAC的地址是
PcB的MAC的地址是
在正常的情况下,Cisco2912里会保存如下的一对映射关系:
()<—>portA
() <—>portB
() <—>portC
依据这个映射关系,Cisco2912把从PortC上收到的发给PcA的包通过PortA发出,而不会从PortB发出。但是如果我们通过某种手段使交换机改变了这个映射关系,则Cisco2912就会将数据包转发到不应该去的端口,导致用户无法正常访问Internet等服务。最为简单的一种方法就是用户PcB构造一种数据包,该包的源MAC地址不再是自己的MAC地址,而是PcA的MAC地址,从上面的地址学习过程可以看出,Cisco2912就会错误的认为MAC地址是从portB
1
上来的,因此映射关系也就改为:
()<—>portB
() <—>portB
这样,Cisco2912就会错误地把从PortC上收到的目的地址为MAC A的数据包通过PortB发出,而不再发给PortA.。显然,如果PcB一直在发这种特意构造的包。用户PcA就无法通过Cisco2912正常访问Internet。更为严重的是,如果用户PcB构造portC上联设备(如路由器)的MAC地址(),则会导致Cisco 2912下面所有的用户无法正常访问Internet等业务。
2 安全策略
网络中的上述问题主要集中在二层交换机,因此二层交换机的设计必须考虑到MAC地址学习的这种潜在的安全隐患。对此,提出以下安全策略。
MAC地址与端口的绑定。基于IP地址欺骗,人们普遍的做法是采用IP地址与MAC地址进行绑定。MAC地址原来被认为是硬件地址,一般不可更改,所以把IP地址同MAC地址组合到一起管理就成为一种可行的办法,但是认为作为主机标识的MAC地址不能更改这种观点其实是错误的,如前所述,利用网络工具或者修改注册表的办法很容易就会更改某台主机的MAC地址。所以,为了防止MAC地址欺骗,防止交换机中MAC地址映射表混乱,最有效的办法就是实现MAC地址与交换机端口的绑定。这样,用户就无法通过更改MAC地址来进行某种恶意的攻击或者有效地防止某些环路导致的MAC地址重复。绑定可以实现手工静态绑定,也可以实现自动静态绑定。实现手工静态绑定需要网络管理员手工将用户的MAC地址和端口号输入到网络里去,对于一个较大规模的网络,这项工作显然不够轻松,而且非常容易出错。对于自动静态绑定,可以如下实现:在交换机刚开始工作时,不设置绑定命令,而是由交换机自动进行MAC地址学习,建立一张MAC地址与端口号的映射关系,等网络稳定之后,在通过网络管理界面配置绑定命令,一旦绑定命令生效,交换机自动将原来的映射关系绑定起来,在没有收到解除绑定命令时,该映射关系一直存在。这样,仅仅需要网络管理人员通过一条命令就可以实现所有的MAC地址同端口的静态绑定关系,不再需要手工一个个MAC地址的输入。当然,随着后期用户的不断加入,可以选择某段时间内集中进行这种绑定命令操作,从而有效地节省人力和保障网络安全。通过上面的阐述我们可以看出:解决IP地址欺骗最有效的措施是采用端口、MAC地址和IP地址三者同时绑定。
通过上述分析,我们可以看出,对于二层交换机而言,最大的安全隐患存在于MAC地址的学习过程。为了有效防止某种恶意攻击的MAC地址欺骗行为,我们在进行交换机设计时必须考虑一定的安全策略。
附:
在cisco交换机中为了防止ip被盗用或员工乱改ip,可以做以下措施,既ip与mac地址的绑定,和ip与交换机端口的绑定。
一、通过IP查端口
先查MAC地址,再根据MAC地址查端口:
Switch# show mac-address-table 来查看整个端口的ip-mac表
二、ip与mac地址的绑定,这种绑定可以简单有效的防止ip被盗用,别人将ip改成了你绑定了mac地址的ip后,其网络不同,(tcp/udp协议不同,但netbios网络共项可以访问),具体做法:
cisco(config)#arp 10.138.208.81 0000.e268.9980 ARPA
这样就将10.138.208.81 与mac:0000.e268.9980 ARPA绑定在一起了
2
三、ip与交换机端口的绑定,此种方法绑定后的端口只有此ip能用,改为别的ip后立即断网。有效的防止了乱改ip。
cisco(config)# interface FastEthernet0/17
cisco(config-if)# ip access-group 6 in
cisco(config)#access-list 6 permit 10.138.208.81
这样就将交换机的FastEthernet0/17端口与ip:10.138.208.81绑定了。
最常用的对端口安全的理解就是可根据MAC地址来做对网络流量的控制和管理,比如MAC地址与具体的端口绑定,限制具体端口通过的MAC地址的数量,或者在具体的端口不允许某些MAC地址的帧流量通过。
地址与端口绑定,当发现主机的MAC地址与交换机上指定的MAC地址不同时,交换机相应的端口将down掉。当给端口指定MAC地址时,端口模式必须为access或者Trunk状态。
3550-1#conf t
3550-1(config)#int f0/1
3550-1(config-if)#switchport mode access /指定端口模式。
3550-1(config-if)#switchport port-security mac-address 00-90-F5-10-79-C1 /配置MAC地址。
3550-1(config-if)#switchport port-security maximum 1 /限制此端口允许通过的MAC地址数为1。
3550-1(config-if)#switchport port-security violation shutdown /当发现与上述配置不符时,端口down掉。
2.通过MAC地址来限制端口流量,此配置允许一TRUNK口最多通过100个MAC地址,超过100时,但来自新的主机的数据帧将丢失。
3550-1#conf t
3550-1(config)#int f0/1
3550-1(config-if)#switchport trunk encapsulation dot1q
3550-1(config-if)#switchport mode trunk /配置端口模式为TRUNK。
3550-1(config-if)#switchport port-security maximum 100 /允许此端口通过的最大MAC地址数目为100。
3550-1(config-if)#switchport port-security violation protect /当主机MAC地址数目超过100时,交换机继续工作,但来自新的主机的数据帧将丢失。
上面的配置根据MAC地址来允许流量,下面的配置则是根据MAC地址来拒绝流量。
1.此配置在Catalyst交换机中只能对单播流量进行过滤,对于多播流量则无效。
3550-1#conf t
3550-1(config)#mac-address-table static 00-90-F5-10-79-C1 vlan 2 drop /在相应的Vlan丢弃流量。
3
3550-1#conf t
3550-1(config)#mac-address-table static 00-90-F5-10-79-C1 vlan 2 int f0/1 /在相应的接口丢弃流量。
在网络安全越来越重要的今天,企业对于局域网的安全控制也越来越严格,普遍采用的做法之一就是IP地址、网卡的MAC地址与交换机端口绑定,下面讲述MAC与交换机端口快速绑定的具体实现的原理和步骤。
我们通常说的MAC地址与交换机端口绑定其实就是交换机端口安全功能。端口安全功能能让您配置一个端口只允许一台或者几台确定的设备访问那个交换机;能根据MAC地址确定允许访问的设备;允许访问的设备的MAC地址既可以手工配置,也可以从交换机“学到”;当一个未批准的MAC地址试图访问端口的时候,交换机会挂起或者禁用该端口等等。
一、首先必须明白两个概念:
可靠的MAC地址。配置时候有三种类型。
静态可靠的MAC地址:在交换机接口模式下手动配置,这个配置会被保存在交换机MAC地址表和运行配置文件中,交换机重新启动后不丢失(当然是在保存配置完成后),具体命令如下:
Switch(config-if)#switchport port-security mac-address Mac地址
动态可靠的MAC地址:这种类型是交换机默认的类型。在这种类型下,交换机会动态学习MAC地址,但是这个配置只会保存在MAC地址表中,不会保存在运行配置文件中,并且交换机重新启动后,这些MAC地址表中的MAC地址自动会被清除。
黏性可靠的MAC地址:这种类型下,可以手动配置MAC地址和端口的绑定,也可以让交换机自动学习来绑定,这个配置会被保存在MAC地址中和运行配置文件中,如果保存配置,交换机重起动后不用再自动重新学习MAC地址,虽然黏性的可靠的MAC地址可以手动配置,但是CISCO官方不推荐这样做。具体命令如下:
Switch(config-if)#switchport port-security mac-address sticky
其实在上面这条命令配置后并且该端口得到MAC地址后,会自动生成一条配置命令
Switch(config-if)#switchport port-security mac-address sticky Mac地址
这也是为何在这种类型下CISCO不推荐手动配置MAC地址的原因。
二、违反MAC安全采取的措施:
当超过设定MAC地址数量的最大值,或访问该端口的设备MAC地址不是这个MAC地址表中该端口的MAC地址,或同一个VLAN中一个MAC地址被配置在几个端口上时,就会引发违反MAC地址安全,这个时候采取的
4
措施有三种:
1.保护模式(protect):丢弃数据包,不发警告。
2.限制模式(restrict):丢弃数据包,发警告,发出SNMP trap,同时被记录在syslog日志里。
3.关闭模式(shutdown):这是交换机默认模式,在这种情况下端口立即变为err-disable状态,并且关掉端口灯,发出SNMP trap,同时被记录在syslog日志里,除非管理员手工激活,否则该端口失效。
具体命令如下:
Switch(config-if)#switchport port-security violation {protect | restrict | shutdown }
下面这个表一就是具体的对比
Violation Mode Traffic is forwarded Sends SNMP trap Sends syslog message Displays error
message Shuts down port
protect No No No No No
restrict No Yes Yes No No
shutdown No Yes Yes No Yes
表一
配置端口安全时还要注意以下几个问题:
端口安全仅仅配置在静态Access端口;在trunk端口、SPAN端口、快速以太通道、吉比特以太通道端口组或者被动态划给一个VLAN的端口上不能配置端口安全功能;不能基于每VLAN设置端口安全;交换机不支持黏性可靠的MAC地址老化时间。protect和restrict模式不能同时设置在同一端口上。
下面把上面的知识点连接起来谈谈实现配置步骤的全部命令。
1.静态可靠的MAC地址的命令步骤:
Switch#config terminal
Switch(config)#interface interface-id 进入需要配置的端口
Switch(config-if)#switchport mode Access 设置为交换模式
Switch(config-if)#switchport port-security 打开端口安全模式
Switch(config-if)#switchport port-security violation {protect | restrict | shutdown }
上面这一条命令是可选的,也就是可以不用配置,默认的是shutdown模式,但是在实际配置中推荐用restrict。
Switch(config-if)#switchport port-security maximum value
上面这一条命令也是可选的,也就是可以不用配置,默认的maximum是一个MAC地址,2950和3550交换机的这个最大值是132。
5
其实上面这几条命令在静态、黏性下都是一样的,
Switch(config-if)#switchport port-security mac-address MAC地址
上面这一条命令就说明是配置为静态可靠的MAC地址
2.动态可靠的MAC地址配置,因为是交换机默认的设置。
3.黏性可靠的MAC地址配置的命令步骤:
Switch#config terminal
Switch(config)#interface interface-id
Switch(config-if)#switchport mode Access
Switch(config-if)#switchport port-security
Switch(config-if)#switchport port-security violation {protect | restrict | shutdown }
Switch(config-if)#switchport port-security maximum value
上面这几条命令解释和前面静态讲到原因一样,不再说明。
Switch(config-if)#switchport port-security mac-address sticky
上面这一条命令就说明是配置为黏性可靠的MAC地址。
最后,说说企业中如何快速MAC地址与交换机端口绑定。在实际的运用中常用黏性可靠的MAC地址绑定,现在我们在一台2950EMI上绑定。
方法1:在CLI方式下配置
2950 (config)#int rang fa0/1 - 48
2950 (config-if-range)#switchport mode Access
2950 (config-if-range)#switchport port-security
2950 (config-if-range)#switchport port-security mac-address violation restrict
2950 (config-if-range)#switchport port-security mac-address sticky
这样交换机的48个端口都绑定了,注意:在实际运用中要求把连在交换机上的PC机都打开,这样才能学到MAC地址,并且要在学到MAC地址后保存配置文件,这样下次就不用再学习MAC地址了,然后用show
port-security address查看绑定的端口,确认配置正确。
方法2:在WEB界面下配置,也就是CMS(集群管理单元)
我们通过在IE浏览器中输入交换机IP地址,就可以进入,然后在port—port security下可以选定交换机端口,在Status和Sticky MAC Address中选Enable或Disabled,Violation Action可以选Shutdown、
6
Restrict、Protect中的一种,Maximum Address Count(1-132)可以填写这个范围的数值。
当然还有要求绑定IP地址和MAC地址的,这个就需要三层或以上的交换了,因为我们知道普通的交换机都是工作在第二层,也就是使数据链路层,是不可能绑定IP的。假如企业是星型的网络,中心交换机是带三层或以上功能的。我们就可以在上绑定,
Switch(config)#arp Ip地址 Mac地址 arpa
【在局域网内查找病毒主机】
我们可以使用NBTSCAN工具来快速查找它。
NBTSCAN可以取到PC的真实IP地址和MAC地址,如果有”ARP攻击”在做怪,可以找到装有ARP攻击的PC的IP/和MAC地址。
命令:“nbtscan -r 192.168.16.0/24”(搜索整个192.168.16.0/24网段, 即192.168.16.1-192.168.16.254);或“nbtscan 192.168.16.25-137”搜索192.168.16.25-137 网段,即192.168.16.25-192.168.16.137。输出结果第一列是IP地址,最后一列是MAC地址。
NBTSCAN的使用范例:
假设查找一台MAC地址为“000d870d585f”的病毒主机。
1)将压缩包中的 和解压缩放到c:下。
2)在Windows开始—运行—打开,输入cmd(windows98输入“command”),在出现的DOS窗口中输入:C: nbtscan -r 192.168.16.1/24(这里需要根据用户实际网段输入),回车。
3)通过查询IP--MAC对应表,查出“000d870d585f”的病毒主机的IP地址为“192.168.16.223”。
【解决思路】
1、不要把你的网络安全信任关系建立在IP基础上或MAC基础上,(rarp同样存在欺骗的问题),理想的关系应该建立在IP+MAC基础上。
2、设置静态的MAC-->IP对应表,不要让主机刷新你设定好的转换表。
3、除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。
4、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。
5、使用"proxy"代理IP的传输。
7
6、使用硬件屏蔽主机。设置好你的路由,确保IP地址能到达合法的路径。(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。
7、管理员定期用响应的IP包中获得一个rarp请求,然后检查ARP响应的真实性。
8、管理员定期轮询,检查主机上的ARP缓存。
9、使用防火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢失。
8


发布评论