谈交换网络中的MAC地址欺骗-应用技巧(2)
2 安全策略
网络中的上述问题主要集中在二层交换机,因此二层交换机的设计必须考虑到MAC地址学习的这种潜在的安全隐患。对此,提出以下几种安全策略。
(1) MAC地址与端口的绑定。基于IP地址欺骗,人们普遍的做法是采用IP地址与MAC地址进行绑定。MAC地址原来被认为是硬件地址,一般不可更改,所以把IP地址同MAC地址组合到一起管理就成为一种可行的办法,但是认为作为主机标识的MAC地址不能更改这种观点其实是错误的,如前所述,利用网络工具或者修改注册表的办法很容易就会更改某台主机的MAC地址。所以,为了防止MAC地址欺骗,防止交换机中MAC地址映射表混乱,最有效的办法就是实现MAC地址与交换机端口的绑定。这样,用户就无法通过更改MAC地址来进行某种恶意的攻击或者有效地防止某些环路导致的MAC地址重复。绑定可以实现手工静态绑定,也可以实现自动静态绑定。实现手工静态绑定需要网络管理员手工将用户的MAC地址和端口号输入到网络里去,对于一个较大规模的网络,这项工作显然不够轻松,而且非常容易出错。对于自动静态绑定,可以如下实现:在交换机刚开始工作时,不设置绑定命令,而是由交换机自动进行MAC地址学习,建立一张MAC地址与端口号的映射关系,等网络稳定之后,在通过网络管理界面配置绑定命令,一旦绑定命令生效,交换机自动将原来的映射关系绑定起来,在没有收到解除绑定命令时,该映射关系一直存在。这样,仅仅需要网络管理人员通过一条命令就可以实现所有的MAC地址同端口的静态绑定关系,不再需要手工一个个MAC地址的输入。当然,随着后期用户的不断加入,可以选择某段时间内集中进行这种绑定命令操作,从而有效地节省人力和保障网络安全。通过上面的阐述我们可以看出:解决IP地址欺骗最有效的措施是采用端口、MAC地址和IP地址三者同时绑定。
(2) 在一般情况下,二层交换机的MAC地址映射表是动态更新的,存在一个生命周期(老化)的问题,在一定的生命周期内,如果没有收到该MAC地址发来的数据包,那么该MAC地址与端口的映射关系就不存在,将被释放。如果在该生命周期内不断的收到该MAC地址发来的包,则该生命周期就会一直延续下去。假设MAC地址(00.00.AA.AA.AA.AA)原来是从PortA上来的,在交换机里就存在这么一条映射关系:
(00.00.AA.AA.AA.AA)portA
但是如果将MAC地址(00.00.AA.AA.AA.AA)移到portB上,则一般交换机会里即将上条映射关系:
(00.00.AA.AA.AA.AA)portB
这种采取的端口立即更新策略给MAC地址欺骗以可乘之机,MAC地址欺骗也正是利用这个来改变交换机里的地址和端口的映射关系。设想一下,假如再交换机里采取这种策略:当MAC地址(00.00.AA.AA.AA.AA)从另外一个端口PortB上来,但是映射表里已经存在和PortA的映射关系,这时对于portB上来的MAC地址(00.00.AA.AA.AA.AA)不予理会,仍然保持原来的映射关系,这样,MAC地址欺骗也就无法得逞。当然,当用户PcA不向portA发包,在其生命周期终结后,MAC地址(00.00.AA.AA.AA.AA)与portA的映射关系也就解除,这时用户PcB再实施MAC欺骗仍然能够成功,如果该用户一直在进行MAC地址欺骗,则用户PcA也就可能无法正常访问Internet等业务。通过改变地址学习的策略可以在一定程度上抵御MAC地址欺骗行为,只要用户PcA一直在线,用户PcB的MAC地址欺骗就一时无法得逞。
(3) 端口的地址学习优先级,可以根据交换机各个段口在网络中的不同位置给予不同的地址学习优先级。如图所示,PortC端口最重要,因为其他所有端口的用户都是通过它来进行Internet访问的,如果一旦该端口对应的MAC地址(00.00.CC.CC.CC.CC)遭到欺骗,则下面所有用户都无法访问Internet。所以可以给该端口分配一个较高的地址学习优先级,原则就是优先级高的端口学习MAC地址优先,如果某个MAC地址从优先级高的端口移到优先级低的端口上去,则MAC地址映射关系不会立即更新,而是等一定的生命周期终结后新的地址映射关系才能生效。这样,也可以在一定程度上有效的防止MAC地址欺骗行为。但是在分配优先级的时候可能会遇到困难,如用户之间的端口优先级怎么分配。
通过上述分析,我们可以看出,对于二层交换机而言,最大的安全隐患存在于MAC地址的学习过程。为了有效防止某种恶意攻击的MAC地址欺骗行为,我们在进行交换机设计时必须考虑一定的安全策略。