熟悉DHCP面临的安全威胁与防护机制

2023-12-26 16:18:30
  • 一个网络如果要正常地运行,则网络中的主机(Host)必需要知道某些重要的网络参数,如IP地址、网络掩码、网关地址、DNS服务器地址、网络打印机地址等等。显然,在每台主机上都采用手工方式来配置这些参数是非常困难的、或是根本不可能的。
  • 为此,IETF1993年发布了动态主机配置协议(DHCPDynamic Host Configuration Protocol)。DHCP的应用,实现了网络参数配置过程的自动化。那么DHCP技术具体是如何实现的呢?面对网络规模的扩大,DHCP又是如何应对的?面对网络中的攻击, DHCP又是如何防护的呢?

手工配置网络参数存在的问题

?

  • 人员素质要求高
  • 主机的使用者需要懂得如何进行网络参数的配置操作方法,这在实际中是难以做到的。
  • 容易出错
  • 手工配置过程中非常容易出现人为的误操作情况。
  • 灵活性差
  • 网络参数发生改变时,需要重新进行配置操作。例如,如果某主机在网络中的位置发生了变化,则该主机的网关地址也可能会发生变化,这时就需要重新配置该主机的网关地址。
  • IP地址资源利用率低
  • IP地址无法得到重复利用。
  • 工作量大
  • 配置工作量会随着主机数量的增加而增大。

?DHCP概念的提出

  • 随着用户规模的扩大及用户位置的不固定性,传统的静态手工配置方式已经无法满足需求,为了实现网络可以动态合理地分配IP地址给主机使用,需要用到动态主机配置协议DHCP
  • DHCP相对于静态手工配置有如下优点:
  1. 效率高
  2. 灵活性强
  3. 易于管理

?DHCP基本工作过程 (1)

?

  • DHCP采用了Client/Server模型;DHCP Client需要从DHCP Server那里获得各种网络配置参数,这个过程是通过DHCP ClientDHCP Server之间交互各种DHCP消息来实现的。DHCP消息是封装在UDP报文中的,DHCP Server使用端口号67来接收DHCP消息,DHCP Client使用端口号68来接收DHCP消息。本课程中,我们主要关心DHCP Client是如何获得自己的IP地址的。
  • 如图所展示的是DHCP Client通过DHCP来申请获取自己的IP地址的基本过程,这一过程包含了四个阶段:
  • 发现阶段:
  • 发现阶段也就是PC上的DHCP Client寻找DHCP Server的阶段。PCDHCP Client开始运行后,会广播的方式发送一个DHCP Discover消息。
  • 需要说明的是,图所示的二层广播域中除了路由器R上运行了DHCP Server外,可能还有其它设备也运行了DHCP Server。如果是这样,那么所有这些DHCP Server都会接收到PC发送的DHCP Discover消息,也都会对所收到的DHCP Discover消息做出回应。
  • 提供阶段
  • 提供阶段也就是DHCP ServerDHCP Client提供IP地址的阶段个接收到DHCP Discover消息的DHCP Server(包括路由器R上运行的DHCP Server)都会从自己维护的地址池中选择一个合适的IP地址,并通过DHCP Offer消息将这个IP地址发送给DHCP ClientDHCP 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的全局地址池
p gateway-list 192.168.1.1?????? // 设置分配的网关 IP
p network 192.168.1.0 mask 255.255.255.0???? // 设置分配的地址网段
p excluded- ip -address 192.168.1.2???? // 设置不参与自动分配的 IP 地址范围
p lease day 3 hour 0 minute 0??????????? // 设置地址池中 IP 地址的租用有效期限,默认 1
p dns -list 192.168.1.2???????????????????????? // 设置分配的 DNS 服务器地址
  • interface GigabitEthernet0/0/0
p ip address 192.168.1.1 255.255.255.0
p dhcp select global??? // 接口下使能全局方式分配地址

为什么需要DHCP Relay?

  • ?从前面的描述中可知,DHCP ClientDHCP Server必须在同一个二层广播域中才能接收到彼此发送的DHCP消息。DHCP消息无法跨越二层广播域传递。
  • 一个实际的IP网络通常都包含了多个二层广播域,如果需要部署DHCP,那么可以有两种方法:
  • 方法一:在每一个二层广播域中都部署一个DHCP Server(代价太大,现实中一般不推荐此方法)。
  • 方法二:部署一个DHCP Server来同时为多个二层广播域中的DHCP Client服务,这就需要引入DHCP Relay

DHCP Relay基本工作原理?

  • ?DHCP Relay的基本作用就是专门在DHCP ClientDHCP Server之间进行DHCP消息的中转。
  • 如图所示,DHCP Client利用DHCP Relay来从DHCP Server那里获取IP地址等配置参数时,DHCP Relay必须与DHCP Client位于同一个二层广播域,但DHCP Server可以与DHCP Relay位于同一个二层广播域,也可以与DHCP Relay位于不同的二层广播域DHCP ClientDHCP Relay之间是以广播方式交换DHCP消息的,但DHCP RelayDHCP Server之间是以单播方式交换DHCP消息的(这就意味着,DHCP Relay必须事先知道DHCP ServerIP地址)。

DHCP Relay配置实现?

  • 配置DHCP-Server:????????????????????????????????????????? //DHCP服务器可以采用全局地址分配或者接口地址分配,此处以全局地址池分配地址为例
p dhcp enable??????????????????????????????
p ip pool DHCP-relay???????????????????????????????? //"DHCP-relay" 仅为 DHCP 地址池名称
p ip route-static 192.168.1.0 24 10.1.1.2?? // 由于中继后的 DHCP 报文是一个源地址为 192.168.1.1 的单播报文,需要有回去的路由,当前为了简单,使用静态路由完成,正常网络内可以配置 IGP 使得地址能够通信
  • 配置DHCP中继(GW):
p dhcp server group DHCP??????????????????? // 配置 DHCP 服务器组名
p dhcp-server 10.1.1.1??????????????????????????? // 设定 DHCP 服务器地址
p dhcp enable???????????????????????????????????????? // 中继设备也需要开启 DHCP ,否则后面接口下的命令不能使能
p interface g0/0/1????????????????????????????????? // 进入连接客户端的接口
p ip address 192.168.1.1 24
p dhcp select relay??????????????????????????????? // 启动 DHCP Relay 功能
p dhcp relay server-select DHCP????????? // 设定 DHCP Relay 要使用的服务器组

DHCP面临的安全威胁

  • 网络攻击行为无处不在,针对DHCP的攻击行为也不例外。例如,某公司突然出现了大面积用户无法上网的情况,经检查用户终端均未获取到IP地址,且DHCP Server地址池中的地址已经全部被分配出去了,这种情况很有可能就是DHCP受到了饿死攻击而导致的。
  • DHCP在设计上未充分考虑到安全因素,从而留下了许多安全漏洞,使得DHCP很容易受到攻击。实际网络中,针对DHCP的攻击行为主要有以下三种:
  1. DHCP饿死攻击
  2. 仿冒DHCP Server攻击
  3. DHCP中间人攻击

?DHCP饿死攻击

  • ?DHCP饿死攻击是攻击者通过持续大量地向DHCP Server申请IP地址来实现的,其目的是耗尽DHCP Server地址池中的IP地址,导致DHCP Server没有IP地址分配给正常的用户。DHCP消息中有一个名叫CHADDRClient Hardware Address)的字段,该字段是由DHCP客户端填写的,表示的是客户端的硬件地址(也就是客户端的MAC地址)。DHCP Server是针对CHADDR来分配IP地址的,对于不同的CHADDRDHCP 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-SMAC-B的映射关系,又让Server学习到IP-AMAC-B的映射关系。当PC-ADHCP 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 ServerPC-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-ADHCP Server之间的IP报文都会经过攻击者(中间人)进行中转,攻击者便很容易窃取这些IP报文中的某些信息,并利用这些信息来进行其他的破坏行为。攻击者也可以很容易对往来于PC-ADHCP Server之间的DHCP消息(这些消息是封装在UDP报文中的,而UDP报文又是封装在IP报文中的)进行篡改,达到直接攻击DHCP的目的。

?DHCP Snooping技术的出现

DHCP Snooping用于防止DHCP饿死攻击?

?

  • ?DHCP饿死攻击是攻击者通过持续大量地向DHCP Server申请IP地址来实现的,其目的是耗尽DHCP Server地址池中的IP地址,导致DHCP Server没有IP地址分配给正常的用户。DHCP消息中有一个名叫CHADDRClient Hardware Address)的字段,该字段是由DHCP客户端填写的,表示的是客户端的硬件地址(也就是客户端的MAC地址)。DHCP Server是针对CHADDR来分配IP地址的,对于不同的CHADDRDHCP 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,并且每一次变换时,都让CHADDRMAC地址相同,如此一来,便可以躲过上述源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分配给相应CHADDRIP地址)等信息,这些信息会集中存放在一个数据库中,该数据库也被称为DHCP Snooping绑定表。运行了DHCP Snooping的交换机会建立并动态维护DHCP Snooping绑定表,绑定表中除了包含了用户的MAC地址、用户的IP地址外,还包括IP地址租用期、VLAN-ID等等信息。
  • 如图所示,假设DHCP ServerPC-A分配了IP地址IP-A,给PC-B分配了IP地址IP-B,那么IP-AMAC-A就形成了绑定关系,IP-BMAC-B也形成了绑定关系,这种绑定关系都存放于DHCP Snooping绑定表中。攻击者为了让Server学习到IP-AMAC-B的映射关系,会发送ARP请求报文(将ARP报文中的源IP地址填为IP-A,源MAC地址填为MAC-B)。交换机接收到ARP请求报文后,会检查该ARP请求报文中的源IP地址和源MAC地址,发现该IP/MACIP-A/MAC-B)映射关系不能匹配DHCP Snooping绑定表中的条目,于是会丢弃该ARP请求报文,这样就有效地防止了Spoofing IP/MAC攻击。
  • 如果需要使用上面所描述的防止Spoofing IP/MAC攻击(进而防止中间人)的方法,就必须在交换机的系统视图下执行配置命令arp dhcp-snooping-detect enable

DHCP SnoopingIPSG技术的联动

  • ?网络中经常会存在针对源IP地址进行欺骗的攻击行为,例如,攻击者仿冒合法用户的IP地址来向服务器发送IP报文。针对这类攻击,相应的防范技术称为IPSGIP Source Guard)技术。
  • 交换机使能IPSG功能后,会对进入交换机端口的报文进行合法性检查,并对报文进行过滤(如果合法,则转发;如果非法,则丢弃)。
  • DHCP Snooping技术可与IPSG技术进行联动,即:对于进入交换机端口的报文进行DHCP Snooping绑定表匹配检查,如果报文的信息和与绑定表一致,则允许其通过,否则丢弃报文。
  • 报文的检查项可以是源IP地址、源MAC地址、VLAN和物理端口号的若干种组合。例如,在交换机的端口视图下可支持IP+MACIP+VLANIP+MAC+VLAN等组合检查,在交换机的VLAN视图下可支持:IP+MACIP+物理端口号、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常见攻击分为哪几种?(???? )

答案:DHCP饿死攻击、仿冒DHCP Server攻击、DHCP中间人攻击。

文章来源:https://blog.csdn.net/yy123cisco/article/details/135222061
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。