DHCP欺骗的防范原理及实现[摘要]本文先介绍了DHCP及DHCP欺骗的工作原理,然后给出了防范DHCP欺骗的原理、实现的方法和实现的例子。[关键词]DHCP欺骗DHCPSNOOPING防范在TCP/IP网络中,每台计算机要与其他计算机通信,都必须进行基本的网络配置(IP地址、子网掩码、缺省网关、DNS等)。对于小型网络,为每台计算机一一配置这样的属性也许还可以承受,由于网络应用的发展,特别是电子商务、电子政务、办公自动化等新的网络应用的出现,网络的规模也逐渐扩大,这样对于一个有几百、上千台的网络,基本的网络配置工作虽然简单,但配置的工作量相当大,而且对以后的维护带来不便。为了便于统一规划和管理网络中的IP地址,DHCP(DynamicHostConfigureProtocol,动态主机配置协议)应运而生了。这种网络服务有利于网络中的客户机自动进行网络配置,而不需要一个一个手动指定,但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.防范方法:在交换机上启用DHCPSNOOPING功能DHCPSNOOPING通过建立和维护DHCPSNOOPING绑定表并过滤不可信任的DHCP信息来防止DHCP欺骗。DHCPSNOOPING截获交换机端口的DHCP应答报文,建立一张包含有用户MAC地址、IP地址、租用期、VLANID、交换机端口等信息的一张表,并且DHCPSNOOPING还将交换机的端口分为可信任端口和不可信任端口,当交换机从一个不可信任端口收到DHCP服务器的报文时,比如DHCP0FFER报文、DHCPACK报文、DHCPNAK报文,交换机会直接将该报文丢弃;对信任端口收到的DHCP服务器的报文,交换机不会丢弃而直接转发。一般将与用户相连的端口定义为不可信任端口,而将与DHCP服务器或者其他交换机相连的端口定义为可信任端口,也就是说,当在一个不可信任端口连接有DHCP服务器的话,该服务器发出的报文将不能通过交换机的端口。因此只要将用户端口设置为不可信任端口,就可以有效地防止非授权用户私自设置DHCP服务而引起的DHCP欺骗。2.实现步骤(用cisco思科的交换机为例):(1)在交换机的全局配置模式中启用DHCPSNOOPING交换机名(config)#ipdhcpsnooping(2)在交换机的全局配置模式中开启需要启用DHCPSNOOPING的vlan交换机名(config)#ipdhcpsnoopingvlanvlan号(3)在端口配置子模式中将授权DHCP服务器所连的端口设为信任端口(缺省启用DHCPSNOOPING的vlan所在端口都是非信任端口)交换机名(config-if)#ipdhcpsnoopingtrust四、结束语在采用DHCP方式分配网络参数的网络中,DHCP欺骗是存在的。因此,在网络中一定要采用相应的措施来防止DHCP欺骗,否则,将会为网络管理员带来许多的不便,违背了采用DHCP的主要原因(为管理带来方便)。参考文献:[1]周明天等:TCP/IP网络原理与技术.清华大学出版社,1993年[2]张卫等:计算机网络工程.清华大学出版社,2004年[3]张巧红等:DHCP技术在清华大学校园网中的应用.计算机工程与应用,2001年10期