[ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP

Posted _PowerShell

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP相关的知识,希望对你有一定的参考价值。

[ 网络模型篇 ]大白话告诉你什么是OSI七层模型

[ 网络协议篇 ] 一篇文章让你掌握神秘的 ACL

[ 网络协议篇 ] 一篇文章让你掌握神秘的 NAT

[ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP(一)

[ 应急响应 ]服务器(电脑)受到攻击该如何处理?(三)

目录

上篇回顾:

DHCP 攻击及其防范

1.DHCP Server仿冒者攻击

攻击原理

解决方法:

2.仿冒DHCP报文攻击:

攻击原理:

解决方法:

3.DHCP Server服务拒绝攻击:

攻击原理:

解决方法:

DHCP Snooping(DHCP监听)简介

DHCP监听作用

DHCP Snooping(DHCP监听)原理描述

DHCP监听将交换机端口划分为两类:

两种端口的功能

DHCP Snooping Binding(DHCP监听表)

DHCP Snooping支持的Option82功能:

概述:

注意:

Option82两个常用子选项

实现方式:

DHCP响应报文中有Option82选项情况:

写在最后


上篇回顾:

详细介绍了DHCP的基本概念,作用,报文类型,报文格式,端口,角色等

详细介绍了DHCP的工作原理

详细介绍了DHCP的优缺点

详细介绍了DHCP的配置方法

本文我们介绍DHCP的一些安全问题以及DHCP的安全机制(DHCP Snooping)

DHCP 攻击及其防范

1.DHCP Server仿冒者攻击

攻击原理

由于DHCP Server和DHCP Client之间没有认证机制,所以如果在网络上随意添加一台DHCP服务器,它就可以为客户端分配IP地址以及其他网络参数。

如果该DHCP服务器为用户分配错误的IP地址和其他网络参数,将会对网络造成非常大的危害。

解决方法:

配置设备接口的“信任(Trusted)/非信任(Untrusted)”工作模式。

将与合法DHCP服务器直接或间接连接的接口设置为信任接口,其他接口设置为非信任接口。

从“非信(Untrusted)”接口上收到的DHCP回应报文将被直接丢弃,这样可以有效防止DHCP Server仿冒者的攻击。

2.仿冒DHCP报文攻击:

攻击原理:

已获取到IP地址的合法用户通过向服务器发送DHCP Request或DHCP Release报文用以续租或释放IP地址。

1.如果攻击者冒充合法用户不断向DHCP Server发送DHCP Request报文来续租IP地址,会导致这些到期的IP地址无法正常回收,以致一些合法用户不能获得IP地址;

2.若攻击者仿冒合法用户的DHCP Release报文发往DHCP Server,将会导致用户异常下线。

解决方法:

为了有效的防止仿冒DHCP报文攻击,可利用DHCP Snooping绑定表的功能。

设备通过将DHCP Request续租报文和DHCP Release报文与绑定表进行匹配操作能够有效的判别报文是否合法(主要是检查报文中的VLAN、IP、MAC、接口信息是否匹配动态绑定表),若匹配成功则转发该报文,匹配不成功则丢弃。

3.DHCP Server服务拒绝攻击:

攻击原理:

1. 设备某个接口下存在大量攻击者恶意申请IP地址,会导致DHCP Server中IP地址快速耗尽而不能为其他合法用户提供IP地址分配服务。

2. 另一方面,DHCP Server通常仅根据DHCP Request报文中的CHADDR(Client Hardware Address)字段来确认客户端的MAC地址。如果某一攻击者通过不断改变CHADDR字段向DHCP Server申请IP地址,同样将会导致DHCP Server上的地址池被耗尽,从而无法为其他正常用户提供IP地址。

DHCP拒绝服务攻击攻击可以是纯粹的DOS攻击,也可以与伪造的DHCP服务器配合使用。当正常的DHCP服务器瘫痪时,攻击者就可以建立伪造的DHCP服务器来为局域网中的客户端提供地址,使它们将信息转发给准备截取的恶意计算机。

甚至即使DHCP请求报文的源MAC地址和CHADDR字段都是正确的,但由于DHCP请求报文是广播报文,如果大量发送的话也会耗尽网络带宽,形成另一种拒绝服务攻击。

解决方法:

抑制大量DHCP用户恶意申请IP地址

1. 开启设备的DHCP Snooping功能,可配置设备或接口允许接入的最大DHCP用户数,当接入的用户数达到该值时,则不再允许任何用户通过此设备或接口成功申请到IP地址。

2. 而对通过改变DHCP Request报文中的CHADDR字段方式的攻击,可使能设备检测DHCP Request报文帧头MAC与DHCP数据区中CHADDR字段是否一致功能,此后设备将检查上送的DHCP Request报文中的帧头MAC地址是否与CHADDR值相等,相等则转发,否则丢弃。

配置DHCP Snooping的攻击防范功能:

1. 配置DHCP Snooping的一些功能,防范DHCP的各种攻击

2. 配置接口的信任状态,以保证客户端从合法的服务器获取IP地址。(防范DHCP Server仿冒者攻击)

3. ARP与DHCP Snooping的联动功能,保证DHCP用户在异常下线时实时更新绑定表。

4. 对DHCP报文进行绑定表匹配检查的功能。(防止仿冒DHCP报文攻击)

5. 配置允许接入的最大用户数以及使能检测DHCP Request报文帧头MAC与DHCP数据区中CHADDR字段是否一致功能。(防止DHCP Server服务拒绝攻击)

6. 配置丢弃报文告警和报文限速告警功能。


DHCP Snooping(DHCP监听)简介

DHCP Snooping是DHCP(Dynamic Host Configuration Protocol)的一种安全特性,用于保证DHCP客户端从合法的DHCP服务器获取IP地址并记录DHCP客户端IP地址与MAC地址等参数的对应关系,防止网络上针对DHCP攻击

目前DHCP协议(RFC2131)在应用的过程中遇到很多安全方面的问题,网络中存在一些针对DHCP的攻击,如DHCP Server仿冒者攻击DHCP Server的拒绝服务攻击仿冒DHCP报文攻击等

为了保证网络通信业务的安全性,可引入DHCP Snooping技术在DHCP Client和DHCP Server之间建立一道防火墙,以抵御网络中针对DHCP的各种攻击

DHCP监听作用

设备具有防御网络上DHCP攻击的能力,增强了设备的可靠性,保障通信网络的正常运行。通过这种特性,交换机能够拦截第二层VLAN域内的所有DHCP报文。

为用户提供更安全的网络环境,更稳定的网络服务。

DHCP Snooping(DHCP监听)原理描述

DHCP监听将交换机端口划分为两类:

信任端口:正常接收DHCP服务器响应的DHCP ACK、DHCP NAK和DHCP Offer报文。

连接合法DHCP服务器的端口或者连接汇聚交换机的上行端口。

非信任端口:只能够发送DHCP请求,丢弃来自非信任端口的所有其它DHCP报文。

通常为连接终端设备的端口,如PC,网络打印机等。

两种端口的功能

信任端口功能:

通过开启DHCP Snooping特性,交换机限制非信任端口(用户端口)只能够发送DHCP请求丢弃来自用户端口的所有其它DHCP报文,例如DHCP Offer报文等。

而且并非所有来自非信任端口的DHCP请求都被允许通过,

交换机还会比较DHCP 请求报文的(报文头里的)源MAC地址(报文内容里的)DHCP客户机的硬件地址(即CHADDR字段),这两者相同的请求才会被转发,否则将被丢弃。

这样就防止了DHCP拒绝服务攻击。

信任端口:可以接收所有的DHCP报文。通过只将交换机连接到合法DHCP服务器的端口设置为信任端口,其他端口设置为非信任端口,可防止用户伪造DHCP服务器来攻击网络。DHCP监听特性还可以对端口的DHCP报文进行限速。通过在每个非信任端口下进行限速将可以阻止合法DHCP请求报文的广播攻击。

DHCP Snooping Binding(DHCP监听表)

DHCP监听还有一个非常重要的作用就是建立一张DHCP监听绑定表(DHCP Snooping Binding)。

一旦一个连接在非信任端口的客户端获得一个合法的DHCP Offer,交换机就会自动在DHCP监听绑定表里添加一个绑定条目,内容包括了该非信任端口的客户端IP地址、MAC地址、端口号、VLAN编号、租期等信息。

为了保证设备在生成DHCP Snooping绑定表时能够获取到用户MAC等参数,DHCP Snooping功能需应用于二层网络中的接入设备或第一个DHCP Relay上。

非信任端口只允许客户端的DHCP请求报文通过,这里只是相对于DHCP报文来说的。其他非DHCP报文还是可以正常转发的。

这就表示客户端可以以静态指定IP地址的方式通过非信任端口接入网络。由于静态客户端不会发送DHCP报文,所以DHCP监听绑定表里也不会有该静态客户端的记录。

信任端口的客户端信息不会被记录到DHCP监听绑定表里。

如果有一客户端连接到了一个信任端口,即使它是通过正常的DHCP方式获得IP地址DHCP监听绑定表里也不有该客户端的记录

如果要求客户端只能以动态获得IP的方式接入网络,则必须借助于IPSG和DAI技术。(DHCP监听绑定表中的条目可以手工添加,无论是对信任端口还是非信任端口而言)

交换机为了获得高速转发,通常只检查报文的二层帧头,获得目标MAC地址后直接转发,不会去检查报文的内容。而DHCP监听本质上就是开启交换机对DHCP报文的内容部分的检查,DHCP报文不再只是被检查帧头了。

当交换机收到一个DHCPDECLINE或DHCPRELEASE广播报文,并且报文头的源MAC地址存在于DHCP监听绑定表的一个条目中。但是报文的实际接收端口与绑定表条目中的端口字段不一致时,该报文将被丢弃。(防止DHCP仿冒者攻击)

DHCP监听绑定表里的Lease列就是每个客户端对应的DHCP租约时间。

当客户端离开网络后,该条目并不会立即消失。

当客户端再次接入网络,重新发起DHCP请求以后,相应的条目内容就会被更新。

DHCP Snooping绑定表根据DHCP租期进行老化或根据用户释放IP地址时发出的DHCP Release报文自动删除对应表项。

DHCP监听绑定表在设备重启后会丢失,需要重新绑定,但可以通过设置将绑定表保存在flash或者tftp/ftp服务器上,待设备重启后直接读取,而不需要客户端再次进行绑定。

DHCP监听绑定表不仅用于防御DHCP攻击,还为后续的IPSG和DAI技术提供动态数据库支持。

DHCP Snooping支持的Option82功能:

概述:

在传统的DHCP动态分配IP地址过程中,DHCP Server不能够根据DHCP请求报文感知到用户的具体物理位置,以致同一VLAN的用户得到的IP地址所拥有的权限是完全相同的。

由于网络管理者不能对同一VLAN中特定的用户进行有效的控制,即不能够控制客户端对网络资源的访问,这将给网络的安全控制提出了严峻的挑战。

RFC 3046定义了DHCP Relay Agent Information Option(Option 82),该选项记录了DHCP Client的位置信息。DHCP Snooping设备或DHCP Relay通过在DHCP请求报文中添加Option 82选项,将DHCP Client的精确物理位置信息传递给DHCP Server,从而使得DHCP Server能够为主机分配合适的IP地址和其他配置信息,实现对客户端的安全控制。

注意:

Option 82选项携带的用户位置信息与DHCP Snooping绑定表记录的用户参数是两个相互独立的概念,没有任何关联。Option 82选项携带的用户位置信息是在DHCP用户申请IP地址时(此时用户还未分配到IP地址),由设备添加到DHCP请求报文中。DHCP Snooping绑定表是在设备收到DHCP Server回应的DHCP Ack报文时(此时已为用户分配了IP地址),设备根据DHCP Ack报文信息自动生成。

Option82两个常用子选项

Option82包含两个常用子选项Circuit ID和Remote ID

Circuit ID子选项主要用来标识客户端所在的VLAN、接口等信息

Remote ID子选项主要用来标识客户端接入的设备,一般为设备的MAC地址。

设备作为DHCP Relay时,使能或未使能DHCP Snooping功能都可支持Option82选项功能,但若设备在二层网络作为接入设备,则必须使能DHCP Snooping功能方可支持Option82功能。

Option 82选项仅记录了DHCP用户的精确物理位置信息并通过DHCP请求报文中将该信息发送给DHCP Server。而如果需要对不同的用户部署不同的地址分配或安全策略,则需DHCP Server支持Option 82功能并在其上已配置了IP地址分配或安全策略。

实现方式:

Insert方式:当设备收到DHCP请求报文时,若该报文中没有Option 82选项,则插入Option82选项;若该报文中含有Option82选项,则判断Option82选项中是否包含remote-id,如果包含,则保持Option82选项不变,如果不包含,则插入remote id。

Rebuild方式:当设备收到DHCP请求报文时,若该报文中没有Option82选项,则插入Option82选项;若该报文中含有Option82选项,则删除该Option82选项并插入管理员自己在设备上配置的Option82选项。

对于Insert和Rebuild两种方式,当设备接收到DHCP服务器的响应报文时,处理方式一致。

DHCP响应报文中有Option82选项情况:

1. 如果设备收到的DHCP请求报文中没有Option82选项

则设备将删除DHCP响应报文中的Option82选项,之后转发给DHCP Client。

2. 如果设备收到的DHCP请求报文中有Option82选项

则设备将DHCP响应报文中的Option 82选项格式还原为DHCP请求报文中的Option82选项,之后转发给DHCP Client。

DHCP响应报文不含有Option82选项:直接转发。

写在最后

DHCP这一个部分相对式比较难的,有些不理解可以多看几遍,对照DHCP报文格式来看

中间的一些字段值在上一篇文章都有写道,搞明白报文格式,字段值,那么就容易理解了。

对于DHCP这一个部分,其实也不是很必要学的这么深,但就个人而言,比较喜欢学全面,哈哈哈哈哈。有哪个部分我没有写明白的,或者有不当之处,欢迎各位大佬指正。

以上是关于[ 网络协议篇 ] 一篇文章让你掌握神秘的 DHCP的主要内容,如果未能解决你的问题,请参考以下文章

[ 网络协议篇 ] 一篇文章让你掌握神秘的 VRRP(虚拟路由器冗余协议)

[ 网络模型篇 ]大白话告诉你什么是OSI七层模型

[ 网络协议篇 ] 一篇文章让你掌握什么是 HTTPS ?

网络编程

一文让你掌握单元测试的MockStub和Fake

一文让你掌握单元测试的MockStub和Fake