DHCP技术及其安全性的研究Word文档下载推荐.docx
《DHCP技术及其安全性的研究Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DHCP技术及其安全性的研究Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
3.避免不必要的错误
在常见的小型网络中,网络管理员基本上是采用手动配置IP地址的方法,而到了中大型网络,这种方法就不太适用了,特别是大型网络中。
如果所有主机的IP地址都靠管理员的手工设置,并且必须配置的网络参数还包括子网掩码、网关地址、DNS地址,这种方式很容易出错,还会使网络中的IP发生冲突带来许多的不便,即使客户端不再使用该IP地址,该IP地址仍然被其占据不能被其它客户端使用。
因此,为了解决手动分配IP地址方法存在的弊端,引入了DHCP技术。
1.1.2研究DHCP技术安全的必要性
DHCP系统早在1990s就设计出来了,那个时期的互联网络数量相对来说很少,因此DHCP本身基本没有安全性设计可言。
随着互联网规模日益扩大,网络安全问题日益突出,DHCP系统也面临着严重的安全威胁,DHCP不仅运行于不具有安全性的UDP/IP协议层之上,而且DHCP协议本身没有任何安全措施,一旦DHCP遭受攻击,整个DHCP服务覆盖的网络范围都将遭受无法估量的损失。
DHCP安全是一个很重要的问题,它与DHCP的应用息息相关。
1.2论文研究内容
1.2.1DHCP协议及相关协议的研究
首先是了解DHCP协议中所规范的为网络中的客户端动态地配置IP地址和网络参数的过程。
搜集目前应用DHCP协议的领域,分析DHCP服务器在与客户端交互信息的过程和为客户端配置的选项信息。
研究在最新的应用领域中对DHCP的选项信息的定义和内容的扩展,以及有关DHCP方面的最新的技术动态。
1.2.2DHCP面临的安全隐患及解决措施
查阅大量资料,了解网络中面临的威胁和网络安全的关键技术。
结合DHCP工作原理和DHCP服务器与客户端交互的过程,分析在采用DHCP技术网络中,对DHCP服务器和客户端的网络威胁。
针对这些威胁产生的原因及对网络的危害程度和其危害原理,根据DHCP服务器工作的特点,研究对应的方法和策略。
1.2.3DHCP服务器容灾技术
了解最新的容灾技术,对比不同的容灾技术和方法进行详细比较,总结出不同的容灾技术对应的不同场合。
研究DHCP服务器应用的范围,和工作特点,针对DHCP服务器的应用找出适合的方法和技术。
在出现灾难或者意外时,为网络的畅通使用,DHCP服务器的容灾技术不仅仅是数据上的备份,还要在应用上保证为网络中的计算机提供连贯的IP服务,保证DHCP服务器配置文件和活动租约信息等所有数据的完整性和安全性。
在发生故障时,备用DHCP服务器平滑的接替灾难中的DHCP服务器提供正常的IP服务。
1.3论文结构章节安排
第一章简要介绍了本文的研究背景、意义和研究的主要内容,最后还简单介绍了论文内容的安排。
第二章介绍了DHCP协议,工作原理及过程,DHCP客户端地址的申请和DHCP中继服务。
第三章是本文的重点,主要研究DHCP常见的易受到的威胁,分析DHCP威胁因素,并针对这些威胁提出了主动检测,检查MAC地址,LANA系统,SPINACH方法和DHCP消息认证的方法,消除DHCP威胁结合的网络安全技术。
第四章介绍容灾技术的概念和评测参数,研究实现DHCP服务器容灾的可行方法—为DHCP服务器提供冗余服务器。
第五章结束语,总结论文的研究成果,并展望后续的研究工作。
第2章DHCP技术
2.1DHCP概述
2.1.1DHCP的概念
DHCP[1]的全称是DynamicHostConfigurationProtocol(动态主机配置协议),它的两个主要组成部分是协议(用在DHCP服务器和客户端之间交流TCP/IP配置参数,协议分装在用户数据报协议UDP数据报中)和服务(用于管理DHCP客户端的请求和维护TCP/IP配置参数的数据库)。
DHCP的目的是为了减轻TCP/IP网络的规划、管理和维护的负担,解决IP地址空间缺乏问题。
DHCP用于给多个客户端集中分配IP地址以及相关的配置参数,将TCP/IP的设置和IP地址统一起来管理,避免了不必要的地址冲突问题。
常常用在众多计算机的网络管理中,从而减少了网络管理员手动配置地址带来的不便。
DHCP的前身是BOOTP[2]。
BOOTP原本是用于无磁盘主机连接的网络上面的:
网络主机使用BOOTROM而不是磁盘启动并连接上网络,BOOTP则可以自动地为那些主机设定TCP/IP环境。
但BOOTP有一个缺点:
在设定前须事先获得客户端的硬件地址(MAC),而且,与IP的对应是静态的。
换而言之,BOOTP非常缺乏“动态性”,若在有限的IP资源环境中,BOOTP的一对一对应会造成非常可观的浪费。
DHCP可以说是BOOTP的增强版本,它分为两个部份:
一个是服务器端,而另一个是客户端。
所有的IP网络设定数据都由DHCP服务器集中管理,并负责处理客户端的DHCP要求;
客户端则会使用从服务器分配下来的IP数据。
与BOOTP比较起来,DHCP透过“租约”的概念,有效且动态的分配客户端的TCP/IP设定,而且,作为兼容考虑,DHCP也完全照顾了BOOTPClient的需求。
2.1.2DHCP分配方式
DHCP是基于C/S(客户端/服务器)模式的。
这种模式下,根据DHCP协议,把DHCP服务器主机设计成提供初始化参数的主机,传递网络配置参数给需要的网络主机。
DHCP协议支持三种IP地址分配方式[2]。
第一种是自动分配(AutomaticAllocation),一旦DHCP客户端第一次成功的从DHCP服务器端租用到IP地址之后,就永远使用这个地址。
第二种是动态分配(DynamicAllocation),当DHCP客户端第一次从DHCP服务器端租用到IP地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个IP地址,以便给其它客户端使用,当然,客户端可以比其它主机更优先的更新(renew)租约,或是租用其它的IP地址。
第三种是手动分配,客户端IP地址由网络管理员指定,DHCP协议仅用来向客户端传递指定的地址。
如表2-1所示,列出了动态TCP/IP配置与手动TCP/IP配置的特点对比。
表2-1DHCP动态TCP/IP配置与手动TCP/IP配置的特点对比
动态TCP/IP配置
手动TCP/IP配置
确保网络中客户端得到的IP信息是合法的和可用的。
使用不正确的IP地址可能会导致网络问题,无法访问网络资源。
只配置服务器即可,避免多个用户使用相同IP地址而产生的冲突。
输入IP地址、子网掩码、默认网关、DNS(IP、MASK、GATEWAY、DNS)时可能会有输入错误或输入无效的IP地址,导致了通信无法常进行。
能动态的设定IP地址之外,还可以将一些IP保留下来给一些特殊用途的机器使用。
在每台客户端上手动输入IP地址,耗时较多。
2.1.3DHCP端口号
DHCP协议报文使用UDP协议封装。
DHCP服务器监听UDP端口号67,DHCP客户端监听UDP端口号68。
DHCP服务器和客户端分别使用不同的端口而不是使用同一个端口的原因是,DHCP服务器的应答是可以广播的,使用不同的UDP端口号,可以确保只有客户端会接收应答消息。
2.1.4DHCP报文
1.DHCP报文的分组格式,如表2-2。
表2-2DHCP报文的分组格式
链路层头
IP首部
UDP首部
DHCP消息
14字节20字节8字节548字节(max)
2.DHCP消息格式,如表2-3。
表2-3DHCP消息格式
op
(1)
htype
(1)
hlen
(1)
hops
(1)
xid(4)
secs
(2)
flags
(2)
ciaddr(4)
yiaddr(4)
siaddr(4)
giaddr(4)
chaddr(16个字节)
sname(64个字节)
file(128个字节)
options(可变长variable)
op字段:
operator,表示当前报文是客户端的请求还是服务器的应答,为1(1=BOOTREQUEST)时表示是客户端的请求,为2(2=BOOTREPLY)时表示是服务器的应答。
htype字段:
hardwaretype,表示客户端的网络硬件地址类型,如htype为1,表示客户端的网络硬件地址是10MB的以太网类型。
hlen字段:
hardwarelength,表示客户端的网络硬件地址长度,通常对于以太网来说,硬件地址长度为6字节。
hops字段:
表示当前的DHCP报文经过的DHCP中继的数目,客户端或服务器发出DHCP报文时,此字段都初始化为0,每经过一个DHCP中继,此字段就会加1,此字段的作用是限制DHCP报文不要经过太多的DHCP中继,协议规定,当hops大于4(现在也有规定为16)时,这个DHCP报文就不能再进行处理,而是丢弃。
xid字段:
TransactionID,事务ID,客户端每次发送DHCP请求报文时选择的随机数,与服务器之间同步消息和消息的响应,用它来匹配服务器的相应报文。
客户端会丢弃xid不匹配的相应的报文。
secs字段:
由客户端指定的时间,指的是开始地址获取和更新进行后的时间数,此字段一般没有多大意义,最初设计此字段是为了让DHCP服务器在繁忙时,优先处理此字段大的DHCP请求(因为此字段越大说明这个客户端等待的时间就越长)。
flags字段:
在BOOTP中此字段是保留不用的,在DHCP协议中也只使用了其左边的最高位,其格式如表2-4。
表2-4flags字段
015
B
必须为0
flags字段整个字段占16比特位,其中,最左边比特位被解释为广播响应标志位,所有其它比特位保留备用,必须被客户端设置为0,服务器和DHCP中继忽略这些比特位。
当客户端不能接收单播的DHCP响应报文时,必须把广播响应标志位置为1,否则置为0。
而DHCP服务器响应报文是广播还是单播,就将根据此广播响应标志位来判断。
ciaddr字段:
clientipaddress,表示客户端自己的IP地址。
可以是服务器分配给客户端的IP地址,也可以是客户端已有的IP地址。
此字段不为0的原则就是客户端能够使用此IP地址接收报文。
DHCP服务器发现此字段不为0时,可以直接将响应报文单播给客户端。
yiaddr字段:
youripaddress,表示服务器分配给客户端的IP地址。
当DHCP服务器响应客户端的DHCP请求时,将把分配给客户端的IP地址填入此字段。
siaddr字段:
serveripaddress,表示客户端获取启动配置信息的服务器IP地址,一般是TFTP服务器的IP地址。
giaddr字段:
gatewayipaddress,记录第一个DHCP中继代理的IP地址。
当客户端发出DHCP请求报文后,如果网络中存在DHCP中继,则第一个DHCP中继转发整个DHCP请求报文后,就会把自己的IP地址填入此字段(随后的DHCP中继将不再改写此字段,只是把hops加1)。
DHCP服务器将会根据此字段为用户分配IP地址,并把响应报文转发给此DHCP中继代理,由DHCP中继代理再转发给客户端。
chaddr字段:
clienthardwareaddress,记录客户端的实际硬件地址内容。
当客户端发出DHCP请求报文时,将把自己的网卡硬件地址填入此字段,DHCP服务器一般都会使用此字段来唯一标识一个客户端。
而且此字段与前面的htypehlen字段必须一致。
如当htypehlen分别为l和6时,此字段必须填入6字节的以太网MAC地址。
sname字段:
servername,记录客户端获取启动配置信息的服务器名字。
此字段由DHCP服务器填写,而且是可选的,如果填写,必须是一个以0结尾的字符串。
file字段:
filename,记录客户端的启动配置文件名。
options字段:
是可变长选项字段,对于BOOTP协议,此字段为64字节协议,对于DHCP协议,此字段为64-312字节,当客户端需要更长时,可以与DHC服务器协商。
此字段中包含了大量可选的终端初始配置信息和网络配置信息,如决定终端的IP特性配置信息,域名信息,标识终端的特殊信息,终端的默认网关IP地址,DNS服务器的IP地址,WINS服务器的IP地址,用户使用IP的有效租期等消息。
正是因为有了此字段,DHCP协议才能够给客户端提供大量的配置信息。
3.DHCP报文类型
DHCP报文分为请求报文和应答报文共8种,其中请求报文分别是DHCPDISCOVER、DHCPREQUEST、DHCPNAK、DHCPDCLINE、DHCPRELEASE和DHCPINFORM应答报文是DHCPOFFER和DHCPDACK。
消息类型及对应的功能如表2-5所示。
表2-5DHCP消息和功能说明
类型字段
DHCP报文类型
功能
1
DHCPDISCOVER
客户端进行广播以确定本地可用的服务器。
2
DHCPOFFER
服务器应答客户端的DHCPDISCOVER消息。
3
DHCPREQUEST
客户端发给服务器的消息,作用有三个:
从一台服务器请求提供的配置参数(此时客户端也就拒绝了其他服务器提供的参数);
系统重新启动后,客户端利用这个消息确认先前分配的网络地址是否仍然有效;
为一个特定的网络地址延长租约。
4
DHCPDACK
服务器发给客户端的配置参数,包括已提交的网络地址。
5
DHCPNAK
服务器发给客户端的消息,告知客户端当前使用的网络地址无效或者租期已满。
6
DHCPDCLINE
客户端发给服务器的消息,告知服务器此网络地址已经被使用。
7
DHCPRELEASE
客户端发给服务器的消息,告知服务器客户端不再使用此地址,取消剩余租约。
8
DHCPINFORM
客户端发给服务器的消息,仅要求本地配置参数,客户端已经配置好了网络地址,不需要再发送网络地址了。
2.2DHCP工作原理及过程
2.2.1DHCP客户端状态
DHCP客户端有九种状态,分别是:
HALT,INIT,SELECTING,REQUESTING,BOUND,RENEWING,REBINDING,INIT-REBOOT,在DHCP系统的实现中可以根据实际需要进行裁减,不必实现全部的状态。
其中,HALT是还未初始化的停止状态;
INIT是初始化完成即将执行DHCP协议的状态;
SELECTING是选择服务器提供的offer的状态;
REQUESTING是客户端向服务器请求分配IP地址和相关配置信息的状态;
BOUND是客户端根据服务器提供的配置参数配置完成的状态;
RENEWING是客户端续约的状态;
REBINDING是客户端重绑定的状态;
INIT-REBOOT是客户端重启前的初始化状态;
REBOOTING客户端重启的状态。
2.2.2DHCP客户端地址首次申请
DHCP客户端接入网络时,会进行首次地址申请[3]。
申请过程如图2-1所示。
图2-1客户端首次地址申请
DHCP客户端首次地址申请可以分为四个阶段[4]:
发现阶段,提供阶段,选择阶段,确认阶段,各过程中DHCP服务器和客户端的交互如下:
1.发现阶段
客户端寻找服务器的阶段。
客户端接入网络时,处于初始化状态,客户端并不知道服务器的IP地址,它会向网络发出一个DHCPDISCOVER报文来寻找DHCP服务器。
由于客户端本身没有IP地址,也不知道DHCP服务器的IP地址,因而以0.0.0.0作为源地址,255.255.255.255为目标地址发送IP地址租用请求,向网络进行广播DHCPDISCOVER报文,其中DHCPDISCOVER报文包含客户端的MAC(MediaAccessControl,媒体访问控制,通称网卡硬件地址)地址和计算机名称,以便让DHCP服务器知道是谁在发送。
这一过程也被称为IP租约请求(IPLeaseRequest),即客户端向未知的DHCP服务器请求一个IP地址。
发现阶段客户端的处理过程如下图2-2所示:
图2-2发现阶段客户端的处理
2.提供阶段
服务器向客户端提供网络配置参数的阶段。
这个阶段在网络中接收到客户端DISCOVER报文的DHCP服务器就会做出响应,提供可用的IP租用地址。
如果DHCP地址池中有足够的IP地址,并且能够确认该IP地址对于该客户端所在的网络是一个合法的地址,那么这个DHCP服务器就会对这个请求回复一个DHCPOFFER消息,其中包含了该客户端的MAC地址,提供的IP地址,子网掩码,租期和提供该DHCP服务的服务器(OfferingDHCPServer)的地址。
这一个过程也被称为提供IP租约(IPLeaseOffer),此时客户端还不能使用该IP地址。
提供阶段服务器的处理如图2-3所示
图2-3DHCP提供阶段服务器的处理
3.选择阶段
客户端选择某台DHCP服务器提供的网络配置参数的阶段。
如果客户端收到网络上多台DHCP服务器的响应,但它只选择接收到的第一个DHCPOFER报文,然后它以广播形式发送一个DHCPREQUEST报文作为响应,表示已接收其中某一个DHCP服务器提供的IP,该消息中包含向它所选定的第一个OFFER报文中的网络配置参数和它选择的DHCP服务器的消息。
这样,其他的服务器收到整个消息后就会收回它们的OFFER,并随时准备向下一个客户端提供IP地址。
这一过程也被称为客户端选择IP租约(IPLeaseSelection)。
在这一过程中,客户端还会向网络发送一个ARP消息,查询网络上面有没有其它机器使用该IP地址,如果发现该IP已经被占用,客户端则会发送一个DHCPDECLINE消息给DHCP服务器,拒绝接受其DHCPOFFER,并重新发送DHCPDISCOVER信息。
事实上,并不是所有DHCP客户端都会无条件接受DHCP服务器的OFFER,尤其是主机上有安装其它TCP/IP相关的客户软件。
客户端也可以用DHCPREQUEST向服务器提出DHCP选择,而这些选择会以不同的号码填写在DHCPOptionField里面:
换一句话说,在DHCP服务器上面的设定,未必是客户端全都接受,客户端可以保留自己的一些TCP/IP设定,而主动权永远在客户端这边。
4.确认阶段
DHCP服务器确认所提供的网络配置参数。
当DHCP服务器接收到客户端的DHCPREQUEST消息之后,便向客户端发出一个DHCPACK响应,包含它所提供的IP地址及其他配置信息的DHCPACK确认报告,以确认IP租约的正式生效,也就结束了一个完整的DHCP工作过程。
这一过程叫确认IP租约(IPLeaseAcknowledgement)。
确认阶段服务器的处理如下图2-4所示。
图2-4DHCP确认阶段服务器的处理
确认阶段客户端的处理如下图2-5所示:
图2-5DHCP确认阶段客户端的处理
2.2.3DHCP客户端再次登录与续约机制
首次地址申请“租约”形成后,DHCP服务发挥作用,在不同的“租用期限”将会经历以下几个阶段[5]
重新登录:
它将尝试更新上次关机时拥有的IP租用,即客户端直接发REQUEST请求报文,该REQUEST报文和第一次的REQUEST报文不同之处在于没有DHCP服务器的消息,所有的DHCP服务器都会收到该报文。
如果先收到ACK报文,则继续使用现有IP地址,并更新其租期;
如果先收到NAK报文,则发送DISCOVER报文,开始新一轮的IP租用过程;
如果未收到任何服务器的ACK或NAK报文,客户端将尝试联系现有IP租用中列出的缺省网关,如果联系成功且租用尚未到期,客户端则认为自己仍然处于现有IP租用时的相同子网上(没有被移走),继续使用现有的IP地址。
如果未能与缺省网关联系成功