[摘要] 本文先介绍了dhcp及dhcp欺骗的工作原理,然后给出了防范dhcp欺骗的原理、实现的方法和实现的例子。
[关键词] dhcp 欺骗 dhcp snooping 防范
在tcp/ip网络中,每台计算机要与其他计算机通信,都必须进行基本的网络配置(ip地址、子网掩码、缺省网关、dns等)。对于小型网络,为每台计算机一一配置这样的属性也许还可以承受,由于网络应用的发展,特别是电子商务、
电子政务、办公自动化等新的网络应用的出现,网络的规模也逐渐扩大,这样对于一个有几百、上千台的网络,基本的网络配置工作虽然简单,但配置的工作量相当大,而且对以后的维护带来不便。为了便于统一规划和管理网络中的ip地址,dhcp(dynamic host configure protocol,动态主机配置协议)应运而生了。这种网络服务有利于网络中的客户机自动进行网络配置,而不需要一个一个手动指定,但dhcp服务在设计时,没有过多的考虑安全问题,因此,这种服务在为网络配置提供方便的时候,又带来了问题。
一、dhcp工作原理
dhcp服务分为两个部分:服务器端和客户端。所有的ip网络配置资料都由服务器集中管理,并负责处理客户端的dhcp要求;而客户端则会使用从服务器分配下来的网络配置数据进行网络配置。这种网络配置数据的分配是动态的,是会变化的,称为“租约”分配。
“租约”的形成有4个阶段:
发现阶段:客户端寻找服务器的阶段。客户端开始时并不知道服务器的ip地址,因此,它会向本地网络广播发送discover发现信息来寻找服务器,本地网络中的所有计算机都会接收到这种广播,但只有dhcp服务器才会做出响应。
提供阶段:服务器向客户端提供网络配置参数的阶段。在网络中接收到客户端discover发现信息的dhcp服务器都会做出响应,它们会从尚未出租的ip地址中挑选一个,向客户端发送包含预备出租的ip地址和其他设置的offer提供信息。
选择阶段:客户端选择某台服务器提供的网络配置参数的阶段。如果网络中存在多台dhcp服务器,它们都会向客户端发送offer信息,客户端可能会收到多台dhcp服务器发送的offer信息,但它只选择接收到的第一个offer信息,然后它就以广播形式发送一个request请求信息,该信息中包含向它所选定的第一个offer信息中的网络配置参数和它选择的dhcp服务器的信息。
确认阶段:dhcp服务器确认所提供的网络配置参数。在网络中接收到客户端request请求信息的对应dhcp服务器会做出响应,如果服务器能满足客户端的请求,它便会向客户端发送一个包含网络配置参数的ack确认信息,告诉客户端可以使用它所提供的服务,客户端根据该nak信息来配置其网络参数,否则,它便会向客户端发送一个不能满足请求的nak信息,并且收回offer信息中欲分配给客户端的地址,客户端会回到第一步,重新发起discover信息。而其他dhcp服务器不会对请求做出应答,一定时间后,那些发送了offer信息的dhcp服务器,如果没有收到响应的request信息,则会收回offer信息中欲分配给客户端的地址。
“租约”形成后,dhcp服务发挥作用,在不同的“租用期限”将会经历以下几个阶段:
重新登录:它将尝试更新上次关机时拥有的ip租用,即客户端直接发request请求信息,该request信息和第一次的request信息不同之处在于没有dhcp服务器的信息,所有的dhcp服务器都会收到该信息。如果先收到ack信息,则继续使用现有ip地址,并更新其租期;如果先收到nak信息,则发送discover信息,开始新一轮的ip租用过程;如果未收到任何服务器的ack或nak信息,客户机将尝试联系现有ip租用中列出的缺省网关,如果联系成功且租用尚未到期,客户机则认为自己仍然位于与它得现有ip租用时相同的子网上(没有被移走)继续使用现有ip地址。 如果未能与缺省网关联系成功,客户机则认为自己已经被移到不同的子网上,将会开始新一轮的ip租用过程。
更新租约阶段:任何租约都有一个租借期限,期满后,dhcp服务器便会收回出租的网络配置参数。如果要延长其ip租约,则必须更新其租约。系统约定,客户端ip租约过半时,客户端会自动发送更新租约的request信息(该信息是一个单播信息,即直接向租用网络参数的服务器发送)。如果服务器是可用的,通常回送一个ack信息,同意客户端的请求,客户端继续使用现有ip地址,并更新其租期;如果服务器是不可用的,通常回送一个nak信息,客户端可以继续使用现有ip地址,但不更新其租期。
重新捆绑阶段:如果客户端在租用期达到出租时间的50%时,更新租约不成功,当租用期达到出租时间的近87.5%以上时,客户端会再次试图更新租用期。如果服务器是可用的,通常回送一个ack信息,同意客户端的请求,客户端继续使用现有ip地址,并更新其租期;如果服务器是不可用的,通常回送一个nak信息,客户端可以继续使用现有ip地址,但不更新其租期,直到客户端租约已满,然后一切从头开始。
二、dhcp欺骗原理
从dhcp工作原理可以看出,如果客户端是第一次、重新登录或租期已满不能更新租约,客户端都是以广播的方式来寻找服务器,并且只接收第一个到达的服务器提供的网络配置参数,如果在网络中存在多台dhcp服务器(有一台或更多台是非授权的),谁先应答,客户端就采用其提供的网络配置参数。假如非授权的dhcp服务器先应答,这样客户端最后获得的网络参数即是非授权的,客户端即被欺骗了。而在实际应用dhcp的网络中,基本上都会采用dhcp中继,这样的话,本网络的非授权dhcp服务器一般都会先于其余网络的授权dhcp服务器的应答(由于网络传输的延迟),在这样的应用中,dhcp欺骗更容易完成。
三、dhcp欺骗防范
防范原理:为了防止dhcp欺骗,只要不让非授权的的dhcp服务器的应答通过网络即可,目前网络基本都采用交换机直接到桌面,并且交换机的一个端口只接一台计算机,因此,可以在交换机上做控制,只让合法的dhcp应答通过交换机,阻断非法的应答,从而防止dhcp欺骗,并且对用户的计算机不用做任何的改变。
1.防范方法:在交换机上启用dhcp snooping功能
dhcp snooping通过建立和维护dhcp snooping绑定表并过滤不可信任的dhcp信息来防止dhcp欺骗。
dhcp snooping截获交换机端口的dhcp应答报文,建立一张包含有用户mac地址、ip地址、租用期、vlan id、交换机端口等信息的一张表,并且dhcp snooping还将交换机的端口分为可信任端口和不可信任端口,当交换机从一个不可信任端口收到dhcp服务器的报文时,比如dhcp0ffer报文、dhcpack报文、dhcpnak报文,交换机会直接将该报文丢弃;对信任端口收到的dhcp服务器的报文,交换机不会丢弃而直接转发。一般将与用户相连的端口定义为不可信任端口,而将与dhcp服务器或者其他交换机相连的端口定义为可信任端口,也就是说,当在一个不可信任端口连接有dhcp服务器的话,该服务器发出的报文将不能通过交换机的端口。因此只要将用户端口设置为不可信任端口,就可以有效地防止非授权用户私自设置dhcp服务而引起的dhcp欺骗。
2.实现步骤(用cisco思科的交换机为例):
(1)在交换机的全局配置模式中启用dhcp snooping
交换机名(config)#ip dhcp snooping
(2)在交换机的全局配置模式中开启需要启用dhcp snooping的vlan
交换机名(config)#ip dhcp snooping vlan vlan号
(3)在端口配置子模式中将授权dhcp服务器所连的端口设为信任端口(缺省启用dhcp snooping的vlan所在端口都是非信任端口)
交换机名(config-if)#ip dhcp snooping trust
四、结束语
在采用dhcp方式分配网络参数的网络中,dhcp欺骗是存在的。因此,在网络中一定要采用相应的措施来防止dhcp欺骗,否则,将会为网络管理员带来许多的不便,违背了采用dhcp的主要原因(为管理带来方便)。
参考文献:
[1]周明天等:tcp/ip网络原理与技术.清华大学出版社,1993年
[2]张卫等:计算机网络工程.清华大学出版社,2004年
[3]张巧红等:dhcp技术在清华大学校园网中的应用.计算机工程与应用,2001年10期
本文链接:http://www.qk112.com/lwfw/guanlilunwen/dianzishangwuguanlilunwen/39875.html