大家好,又见面了,我是你们的朋友全栈君。
一、DHCP简介
1、产生背景:网络增大,手工配置存在很多问题【人员素质要求高、容易出错、灵活性差、IP地址资源利用率低、工作量大,不利于管理等】
2、DHCP相对于静态手工配置的优点【效率高、灵活性强、易于管理等】
二、DHCP的原理与配置
(一)、DHCP的基本工作过程【发现阶段、提供阶段、请求阶段、确认阶段】如下图:
【发现阶段】:在发现阶段,DHCP客户端会以广播的方式给自己所在在广播域中的DHCP服务器都发送一个DHCP Discover 报文,目的是寻找网络中的DHCP Server,并表示自己需要获得一个IP地址
【提供阶段】:是网络中的DHCP Server响应所收到的DHCP Discover 报文,把准备提供的IP地址携带在DHCP Offer 报文中,并以单播的方式发送给DHCP 客户端(注意这里Offer 报文中携带的IP地址客户端还不能直接使用)
【请求阶段】:DHCP客户端在收到的所有Offer 报文中选择接受第一个到达客户端的Offer(通常情况下选择第一个接收到的Offer) ,并向相应的DHCP Server 以广播的方式发送DHCP Request 报文,表示自己愿意接受该Offer (在这个DHCP Request 报文中携带有R上的DHCP Server 的标识—称为Server Identifier,表示DHCP Client 只愿意接受R上的Offer,R也是通过分析这个标识来确定DHCP Client 只愿意接受自己的Offer
而该二层广播域中其他的DHCP服务器也会收到DHCP Client 所发出的DHCP Request 报文,它们则通过分析这个标识来确定DHCP Client 已经拒绝接受自己的Offer)
【确认阶段】:如果在提供阶段所携带的IP地址能正常地分配给DHCP Client 使用的话,那么R会以单播的方式给DHCP Client 发送一个DHCP Ack 报文,此时DHCP Client 获取地址成功;但是如果因为一些原因,在提供阶段所携带的IP地址不能分配给DHCP Client 的话,这时R则会给DHCP Client 发送一个DHCP Nak 报文,而当DHCP Client 收到R的DHCP Nak 报文后,则表示获取IP地址失败,需要重新进入到发现阶段。
当DHCP Client 正常获得IP地址后,如下图:
从DHCP Server 获取的IP地址有一个租约时间,DHCP协议规定租约时间缺省不少于1小时,通常情况下,租约时间缺省值为24小时。
在DHCP协议中规定,在缺省情况下,当DHCP Client 使用IP地址到达T1时(租约时间的1/2),DHCP Client会以单播的方式给R发送一个DHCP Request 报文(请求续租),当到达时间T2(租约时间的7/8,即租约时间的87.5%)之前,若DHCP Client 收到R的DHCP Ack报文,则续租成功,重新开始租约期的计时;若没有收到,则DHCP Client 会在T2时刻再次以广播的方式发送DHCP Request 报文,请求续租,这时如果DHCP Client 在租约时间到达之前收到R的DHCP Ack报文,则续租成功,重新开始租约期的计时,如果没收到,则续租失败,DHCP Client 不能继续使用这个IP地址,需要重新从发现阶段开始向DHCP服务器申请新的IP地址
(二)、DHCP中继
1、DHCP中继的使用场景
从前面DHCP的工作原理我们可以知道,DHCP Client 必须和DHCP Server 在同一个二层广播域中,才能接收到彼此发送的DHCP报文,DHCP报文是无法跨越二层广播域传播的。这时,我们可以有两种方法解决这个问题:
(1)、在网络中的每个网段都设置一台DHCP Server,但是这个方法代价较大,很不经济,造成资源的很大浪费,所以现实中一般不推荐此方法
(2)、只设置一个DHCP Server,利用DHCP中继技术DHCP Relay 来实现一个DHCP Server 同时为多个二层广播域中的DHCP Client 服务,这样既节省成本,又便于集中管理
2、DHCP中继的工作原理如下图:
在DHCP中继的工作原理中和前面的DHCP工作原理基本相同,只是中间DHCP Relay 负责DHCP Client 和DHCP Server 之间的DHCP报文的转发,这里要注意的是:DHCP Relay 与DHCP Client 之间是以广播的方式进行交换DHCP报文的,而DHCP Relay 与DHCP Server 之间是以单播的方式来交换DHCP报文的。
三、DHCP服务器的防攻击手段
(一)、DHCP服务器面临的安全威胁
DHCP在设计上未充分考虑到安全因素,从而留下许多安全漏洞,使得DHCP很容易受到攻击。在实际网络中,针对DHCP攻击的手段主要有以下三种:
1、DHCP饿死攻击
【攻击原理】:攻击者持续大量地向DHCP服务器申请IP地址,直到耗尽DHCP服务器地址池的IP地址,使DHCP服务器无法再给正常的主机分配IP地址
在PC机给DHCP Server发送的DHCP Discover 报文中有一个CHADDR字段,该字段是由DHCP客户端填写的,用来表示客户端的硬件地址(MAC地址),而DHCP Server 也是根据CHADDR字段来分配IP地址的,对于不同的CHADDR,DHCP Server会分配不同的IP地址,因为DHCP Server 无法识别CHADDR的合法性,攻击者就利用这个漏洞,不断的改变CHADDR字段的值,来冒充不同的用户申请IP地址,使DHCP Server 中IP池枯竭,从而达到攻击目的。
2、仿冒DHCP Server攻击
【攻击原理】:当攻击者私自安装并运行DHCP Server 程序后,可以将自己伪装成DHCP Server,这就是仿冒DHCP Server。它的工作原理与正常的DHCP Server 一模一样,所以当PC机接收到来自DHCP Server 的DHCP报文时,无法区分是哪个DHCP Server 发送过来的,如果PC机第一个接收到的是来自仿冒DHCP Server 发送的DHCP报文,那么仿冒DHCP Server 则会给PC机分配错误的IP地址参数,导致PC客户端无法访问网络
3、DHCP中间人攻击
【攻击原理】:攻击者利用ARP机制,让PC-A学习到IP-S与MAC-B的映射关系,让DHCP Server 学习到IP-A与MAC-B的映射关系,如此一来,PC-A与DHCP Server之间交互的IP报文都要经过PC-B进行中转。我们这里要了解交换机在转发数据包过程中,IP地址与MAC地址的变化过程,这个类似于MAC地址欺骗。由于PC1与DHCP Server之间的IP报文都会经过攻击者PC,攻击者就能很容易窃取到IP报文中的信息,进行篡改或其他的破坏行为,从而达到直接攻击DHCP目的。
(二)、DHCP Snooping 技术解决DHCP 饿死攻击
为了防止DHCP受到攻击,就产生了一种DHCP Snooping的技术,但DHCP Snooping不是一种标准技术,还没有统一的标准规范,所以不同品牌的网络设备上实现DHCP Snooping也不尽相同。DHCP Snooping部署在交换机上就相当于在DHCP客户端与DHCP服务器端之间构建了一道虚拟的防火墙。
我们前面讲到DHCP饿死攻击是攻击者不断改变CHADDR的字段来实现的,为了弥补这个漏洞,阻止饿死攻击,我们在端口下配置DHCP Snooping技术,对DHCP Request报文的源MAC地址与CHADDR的字段进行检查,如果一致则转发报文,如果不一致则丢弃报文。
配置命令为,进入连接客户端接口视图,输入命令dhcp snooping check dhcp-chaddr enable
如下图:
但是还可能存在另一种饿死攻击,就是攻击者不断改变CHADDR,同时改变源MAC,并让CHADDR与源MAC地址相同,这样也可以躲过源MAC地址与CHADDR的一致性检查。
(三)、DHCP Snooping 防止仿冒DHCP Server 攻击
在DHCP Snooping技术中,将交换机的端口分为两种类型,信任端口(Trusted端口)和非信任端口(Untrusted端口),交换机所有端口默认都是Untrusted端口,我们将与合法DHCP Server 相连的端口配置为Trusted端口,这样交换机从Trusted端口接收到的DHCP 报文后,会正常转发,从而保证合法的DHCP Server能正常分配IP地址及其他网络参数;而其他从Untrusted端口接收到的DHCP Server 的报文,交换机会直接丢弃,不再转发,这样可以有效地阻止仿冒的DHCP Server 分配假的IP地址及其他网络参数。
配置命令如下:进入与DHCP Server 相连的接口视图
[LSW2] int e0/0/2
[LSW2-E0/0/2] dhcp snooping trusted
如果恢复为Untrusted 端口,命令如下:
[LSW2-E0/0/2] undo dhcp snooping trusted
(四)、DHCP Snooping 防止DHCP中间人攻击
DHCP中间人攻击从原理上我们可以知道它其实是一种Snoofing IP/MAC攻击(ARP欺骗),所以要防止DHCP中间人攻击,就是要防止ARP欺骗。而运行DHCP Snooping的交换机会侦听(Snooping)往来于用户与DHCP Server之间的信息,并从中收集用户的MAC地址(DHCP消息中的CHADDR字段中的值)、用户的IP地址(DHCP Server分配给相应的CHADDR的IP地址)、IP地址租用期等等信息,将它们集中存放在DHCP Snooping 绑定表中,运行了DHCP Snooping的交换机会建立并动态维护DHCP Snooping绑定表。
如上图所示,DHCP Server给PC-A 、PC-B分别分配IP-A、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报文后,会检查它的源IP地址和源MAC地址,发现与DHCP Snooping绑定表中的条目不匹配,就丢弃该报文,这样可以有效地防止Spoofing IP/MAC攻击。
配置命令为:
[LSW2] 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服务器工作过程中的报文的作用可以让我们对于攻击DHCP服务器的手段能更好的理解;
2、在防范DHCP和各种攻击手段中所用到的技术,其工作原理和工作场景,我们也要非常熟悉
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/149845.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...