知识改变命运,技术就是要分享,有问题随时联系,免费答疑,欢迎联系!
- 一个网络如果要正常地运行,则网络中的主机(Host)必需要知道某些重要的网络参数,如IP地址、网络掩码、网关地址、DNS服务器地址、网络打印机地址等等。显然,在每台主机上都采用手工方式来配置这些参数是非常困难的、或是根本不可能的。
- 为此,IETF于1993年发布了动态主机配置协议(DHCP:Dynamic Host Configuration Protocol)。DHCP的应用,实现了网络参数配置过程的自动化。那么DHCP技术具体是如何实现的呢?面对网络规模的扩大,DHCP又是如何应对的?面对网络中的攻击, DHCP又是如何防护的呢?
手工配置网络参数存在的问题
- 人员素质要求高
- 主机的使用者需要懂得如何进行网络参数的配置操作方法,这在实际中是难以做到的。
- 容易出错
- 手工配置过程中非常容易出现人为的误操作情况。
- 灵活性差
- 网络参数发生改变时,需要重新进行配置操作。例如,如果某主机在网络中的位置发生了变化,则该主机的网关地址也可能会发生变化,这时就需要重新配置该主机的网关地址。
- IP地址资源利用率低
- IP地址无法得到重复利用。
- 工作量大
- 配置工作量会随着主机数量的增加而增大。
DHCP概念的提出
- 随着用户规模的扩大及用户位置的不固定性,传统的静态手工配置方式已经无法满足需求,为了实现网络可以动态合理地分配IP地址给主机使用,需要用到动态主机配置协议DHCP。
- DHCP相对于静态手工配置有如下优点:
- 效率高
- 灵活性强
- 易于管理
DHCP基本工作过程 (1)
- DHCP采用了Client/Server模型;DHCP Client需要从DHCP Server那里获得各种网络配置参数,这个过程是通过DHCP Client与DHCP Server之间交互各种DHCP消息来实现的。DHCP消息是封装在UDP报文中的,DHCP Server使用端口号67来接收DHCP消息,DHCP Client使用端口号68来接收DHCP消息。本课程中,我们主要关心DHCP Client是如何获得自己的IP地址的。
- 如图所展示的是DHCP Client通过DHCP来申请获取自己的IP地址的基本过程,这一过程包含了四个阶段:
- 发现阶段:
- 发现阶段也就是PC上的DHCP Client寻找DHCP Server的阶段。PC上的DHCP Client开始运行后,会以广播的方式发送一个DHCP Discover消息。
- 需要说明的是,图中所示的二层广播域中除了路由器R上运行了DHCP Server外,可能还有其它设备也运行了DHCP Server。如果是这样,那么所有这些DHCP Server都会接收到PC发送的DHCP Discover消息,也都会对所收到的DHCP Discover消息做出回应。
- 提供阶段
- 提供阶段也就是DHCP Server向DHCP Client提供IP地址的阶段,每一个接收到DHCP Discover消息的DHCP Server(包括路由器R上运行的DHCP Server)都会从自己维护的地址池中选择一个合适的IP地址,并通过DHCP Offer消息将这个IP地址发送给DHCP Client。DHCP Server是以单播的方式来发送DHCP Offer消息的。
DHCP基本工作过程 (2)
- DHCP Server每次给DHCP Client分配一个IP地址时,只是跟DHCP Client定立了一个关于这个IP地址的租约(Lease)。每个租约都有一个租约期(Duration of Lease),DHCP协议规定租约期的缺省值不得小于1个小时,而实际部署DHCP时,租约期的缺省值通常都是24小时。在租约期内,DHCP Client才能使用相应的IP地址。当租约期到期之后,DHCP Client是不被允许继续使用这个IP地址的。在租约期还没有到期的时候,DHCP Client可以申请续租这个IP地址,其过程如图所示。
- DHCP协议规定,在缺省情况下,图中的T1时刻是租约期到了一半的时刻,而T2时刻则是租约期到了87.5%的时刻。在T1时刻,PC上的DHCP Client会以单播方式向R上的DHCP Server发送一个DHCP Request消息,请求续租IP地址(也就是请求重新开始租约期的计时)。如果在T2时刻之前, PC上的DHCP Client收到了回应的DHCP Ack消息,则说明续租已经成功。如果直到T2时刻,PC上的DHCP Client都未收到回应的DHCP Ack消息,那么在T2时刻,PC上的DHCP Client会以广播方式发送一个DHCP Request消息,继续请求续租IP地址。如果在租约期到期之前,PC上的DHCP Client收到了回应的DHCP Ack消息,则说明续租成功。如果直到租约期到期时,PC上的DHCP Client仍未收到回应的DHCP Ack消息,那么PC就必须停止使用原来的IP地址,也就是说,PC只能重新从发现阶段开始来重新申请一个IP地址。
DHCP配置实现
- DHCP Server配置基于接口的地址分配方式,只会响应该接口接收的DHCP请求;配置基于全局地址池的地址分配方式,可以响应所有端口接收的DHCP请求。
- dhcp enable //使能DHCP功能,在配置DHCP服务器时必须先执行该命令,才能配置DHCP的其他功能并生效
- ip pool HW //设置一个名为HW的全局地址池
- interface GigabitEthernet0/0/0
为什么需要DHCP Relay?
- 从前面的描述中可知,DHCP Client和DHCP Server必须在同一个二层广播域中才能接收到彼此发送的DHCP消息。DHCP消息无法跨越二层广播域传递。
- 一个实际的IP网络通常都包含了多个二层广播域,如果需要部署DHCP,那么可以有两种方法:
- 方法一:在每一个二层广播域中都部署一个DHCP Server(代价太大,现实中一般不推荐此方法)。
- 方法二:部署一个DHCP Server来同时为多个二层广播域中的DHCP Client服务,这就需要引入DHCP Relay。
DHCP Relay基本工作原理
- DHCP Relay的基本作用就是专门在DHCP Client和DHCP Server之间进行DHCP消息的中转。
- 如图所示,DHCP Client利用DHCP Relay来从DHCP Server那里获取IP地址等配置参数时,DHCP Relay必须与DHCP Client位于同一个二层广播域,但DHCP Server可以与DHCP Relay位于同一个二层广播域,也可以与DHCP Relay位于不同的二层广播域。DHCP Client与DHCP Relay之间是以广播方式交换DHCP消息的,但DHCP Relay与DHCP Server之间是以单播方式交换DHCP消息的(这就意味着,DHCP Relay必须事先知道DHCP Server的IP地址)。
DHCP Relay配置实现
- 配置DHCP-Server: //DHCP服务器可以采用全局地址分配或者接口地址分配,此处以全局地址池分配地址为例
- 配置DHCP中继(GW):
DHCP面临的安全威胁
- 网络攻击行为无处不在,针对DHCP的攻击行为也不例外。例如,某公司突然出现了大面积用户无法上网的情况,经检查用户终端均未获取到IP地址,且DHCP Server地址池中的地址已经全部被分配出去了,这种情况很有可能就是DHCP受到了饿死攻击而导致的。
- DHCP在设计上未充分考虑到安全因素,从而留下了许多安全漏洞,使得DHCP很容易受到攻击。实际网络中,针对DHCP的攻击行为主要有以下三种:
- DHCP饿死攻击
- 仿冒DHCP Server攻击
- DHCP中间人攻击
DHCP饿死攻击
- DHCP饿死攻击是攻击者通过持续大量地向DHCP Server申请IP地址来实现的,其目的是耗尽DHCP Server地址池中的IP地址,导致DHCP Server没有IP地址分配给正常的用户。DHCP消息中有一个名叫CHADDR(Client Hardware Address)的字段,该字段是由DHCP客户端填写的,表示的是客户端的硬件地址(也就是客户端的MAC地址)。DHCP Server是针对CHADDR来分配IP地址的,对于不同的CHADDR,DHCP Server会分配不同的IP地址;DHCP Server无法区分什么样的CHADDR是合法的,什么样的CHADDR是非法的。利用这个漏洞,攻击者每申请一个IP地址时,就在DHCP消息的CHADDR字段中填写一个不同的值,以此来冒充是不同的用户在申请IP地址。
仿冒DHCP Server攻击
- 攻击者私自安装并运行DHCP Server程序后,便可以把自己装扮成一个合法的DHCP Server,这就是所谓的仿冒DHCP Server。仿冒DHCP Server与合法的DHCP Server在工作原理上是完全一样的,所不同的是,仿冒DHCP Server会向客户端分配错误的IP地址及提供错误的网关地址等参数,导致客户端无法正常访问网络。
- 我们知道,客户端以广播方式发送DHCP Discover消息后,仿冒DHCP Server和合法的DHCP Server都能够收到该DHCP Discover消息,并且都会回应DHCP Offer消息。如果客户端最先收到的DHCP Offer消息是来自仿冒DHCP Server,那么客户端就会继续向仿冒DHCP Server(而不是合法的DHCP Server)请求获得IP地址等参数,而仿冒DHCP Server就会乘机向客户端分配错误的IP地址及提供错误的网关地址等参数。
DHCP中间人攻击
- 如图所示,攻击者利用ARP机制,让PC-A学习到IP-S与MAC-B的映射关系,又让Server学习到IP-A与MAC-B的映射关系。当PC-A向DHCP Server发送IP报文时,目的IP地址为IP-S,源IP地址为IP-A,而封装这个IP报文的帧的目的MAC地址为MAC-B,源MAC地址为MAC-A,所以这个帧会首先到达攻击者PC-B。攻击者收到这个帧后,将这个帧的目的MAC地址更换为MAC-S,源MAC地址更换为MAC-B,然后将这个帧发往Server。如此“偷梁换柱”,Server是看不出任何破绽的。另一方面,当DHCP Server向PC-A发送IP报文时,目的IP地址为IP-A,源IP地址为IP-S,而封装这个IP报文的帧的目的MAC地址为MAC-B,源MAC地址为MAC-S,所以这个帧也会首先到达攻击者PC-B。攻击者收到这个帧后,将这个帧的目的MAC地址更换为MAC-A,源MAC地址更换为MAC-B,然后将这个帧发往PC-A。同样,PC-A也是看不出任何破绽的。
- 由于往来于PC-A与DHCP Server之间的IP报文都会经过攻击者(中间人)进行中转,攻击者便很容易窃取这些IP报文中的某些信息,并利用这些信息来进行其他的破坏行为。攻击者也可以很容易对往来于PC-A与DHCP Server之间的DHCP消息(这些消息是封装在UDP报文中的,而UDP报文又是封装在IP报文中的)进行篡改,达到直接攻击DHCP的目的。
DHCP Snooping技术的出现
DHCP Snooping用于防止DHCP饿死攻击
- DHCP饿死攻击是攻击者通过持续大量地向DHCP Server申请IP地址来实现的,其目的是耗尽DHCP Server地址池中的IP地址,导致DHCP Server没有IP地址分配给正常的用户。DHCP消息中有一个名叫CHADDR(Client Hardware Address)的字段,该字段是由DHCP客户端填写的,表示的是客户端的硬件地址(也就是客户端的MAC地址)。DHCP Server是针对CHADDR来分配IP地址的,对于不同的CHADDR,DHCP Server会分配不同的IP地址;DHCP Server无法区分什么样的CHADDR是合法的,什么样的CHADDR是非法的。利用这个漏洞,攻击者每申请一个IP地址时,就在DHCP消息的CHADDR字段中填写一个不同的值,以此来冒充是不同的用户在申请IP地址。
- 为了弥补上述漏洞,从而阻止饿死攻击,DHCP Snooping技术支持在端口下对DHCP Request报文的源MAC地址与CHADDR进行一致性检查:如果二者相同,则转发报文;如果二者不相同,则丢弃。如果要在某端口下实施源MAC地址与CHADDR的一致性检查,可以在该端口下使用命令dhcp snooping check dhcp-chaddr enable。
- 还可能存在这样一种饿死攻击,就是攻击者不断同时变换MAC地址和CHADDR,并且每一次变换时,都让CHADDR与MAC地址相同,如此一来,便可以躲过上述源MAC地址与CHADDR的一致性检查!
DHCP Snooping用于防止仿冒DHCP Server攻击
- DHCP Snooping将交换机上的端口分为两种类型,即信任端口(Trusted端口)和非信任端口(Untrusted端口);与合法的DHCP Server相连接的端口应配置为Trusted端口,其他端口应配置为Untrusted端口。
- 交换机从Trusted端口接收到DHCP响应报文(例如DHCP Offer报文、DHCP Ack报文等等)后,会转发这些报文,从而保证合法的DHCP Server可以正常地分配IP地址及提供其他网络参数;交换机从Untrusted端口接收到DHCP响应报文(例如DHCP Offer报文、DHCP Ack报文等等)后,会丢弃这些报文,从而阻止仿冒的DHCP Server分配IP地址及提供其他网络参数。
- 关键配置命令:交换机的端口默认是Untrusted端口。如果需要将交换机的某个端口配置为Trusted端口,可以在该端口视图下使用命令dhcp snooping trusted。如果需要将某个Trusted端口恢复为Untrusted端口,可以在该端口视图下使用命令undo dhcp snooping trusted。
DHCP Snooping用于防止DHCP中间人攻击
- 我们已经知道,DHCP中间人攻击本质上是一种Spoofing IP/MAC攻击。要想防止DHCP中间人攻击,其实就是要防止Spoofing IP/MAC攻击。
- 运行了DHCP Snooping的交换机会“侦听(Snooping)”往来于用户与DHCP Server之间的DHCP消息,并从中收集用户的MAC地址(这里的MAC地址是指DHCP消息中CHADDR字段的值)、用户的IP地址(这里的IP地址是指DHCP Server分配给相应CHADDR的IP地址)等信息,这些信息会集中存放在一个数据库中,该数据库也被称为DHCP Snooping绑定表。运行了DHCP Snooping的交换机会建立并动态维护DHCP Snooping绑定表,绑定表中除了包含了用户的MAC地址、用户的IP地址外,还包括IP地址租用期、VLAN-ID等等信息。
- 如图所示,假设DHCP Server给PC-A分配了IP地址IP-A,给PC-B分配了IP地址IP-B,那么IP-A与MAC-A就形成了绑定关系,IP-B与MAC-B也形成了绑定关系,这种绑定关系都存放于DHCP Snooping绑定表中。攻击者为了让Server学习到IP-A与MAC-B的映射关系,会发送ARP请求报文(将ARP报文中的源IP地址填为IP-A,源MAC地址填为MAC-B)。交换机接收到ARP请求报文后,会检查该ARP请求报文中的源IP地址和源MAC地址,发现该IP/MAC(IP-A/MAC-B)映射关系不能匹配DHCP Snooping绑定表中的条目,于是会丢弃该ARP请求报文,这样就有效地防止了Spoofing IP/MAC攻击。
- 如果需要使用上面所描述的防止Spoofing IP/MAC攻击(进而防止中间人)的方法,就必须在交换机的系统视图下执行配置命令arp dhcp-snooping-detect enable。
DHCP Snooping与IPSG技术的联动
- 网络中经常会存在针对源IP地址进行欺骗的攻击行为,例如,攻击者仿冒合法用户的IP地址来向服务器发送IP报文。针对这类攻击,相应的防范技术称为IPSG(IP Source Guard)技术。
- 交换机使能IPSG功能后,会对进入交换机端口的报文进行合法性检查,并对报文进行过滤(如果合法,则转发;如果非法,则丢弃)。
- DHCP Snooping技术可与IPSG技术进行联动,即:对于进入交换机端口的报文进行DHCP Snooping绑定表匹配检查,如果报文的信息和与绑定表一致,则允许其通过,否则丢弃报文。
- 报文的检查项可以是源IP地址、源MAC地址、VLAN和物理端口号的若干种组合。例如,在交换机的端口视图下可支持IP+MAC、IP+VLAN、IP+MAC+VLAN等组合检查,在交换机的VLAN视图下可支持:IP+MAC、IP+物理端口号、IP+MAC+物理端口号等组合检查。
- 关键配置命令:在交换机的端口视图下或VLAN视图下执行配置命令ip source check user-bind enable。
思考题
1、DHCP客户端向DHCP Server进行续租时会发送哪种报文?( C )
A.DHCP Discover
B.DHCP Offer
C.DHCP Request
D.DHCP Ack
答案:C。
2、DHCP常见攻击分为哪几种?( )文章来源:https://www.toymoban.com/news/detail-771748.html
答案:DHCP饿死攻击、仿冒DHCP Server攻击、DHCP中间人攻击。文章来源地址https://www.toymoban.com/news/detail-771748.html
到了这里,关于熟悉DHCP面临的安全威胁与防护机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!