前文我们了解了MAC地址防漂移技术,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16632239.html;今天我们来了解下DHCP安全相关话题;

  回顾DHCP工作流程

  DHCP的主要作用是主要作用是动态分配TCP/IP信息(ip地址,子网掩码,网关,DNS等等);其工作过程是客户端发送DHCP discover类型的包,来寻找DHCP服务器,通常以广播的形式发送;如果局域网有DHCP服务,当服务收到Discover类型的包,就会发送DHCP offer包,向客户端提供TCP/IP配置信息(当然是服务器还有TCP/IP信息可分配的情况下);客户端收到服务器发送到offer,正常情况下会回复DHCP Request包来向服务器请求使用对应的TCP/IP配置信息,这个信息也是广播的方式发送,主要目的是告诉服务器我要使用的TCP/IP信息,同时也告诉其他DHCP服务器,本端已经有服务器提供地址(如果有多个DHCP的提供offer的场景下);当服务器收到客户端的Request信息以后,然后单播给客户端确认;表示服务端已经知晓对应ip地址已经分配给某某客户端;

  DHCP面临的安全威胁

  通过上述DHCP工作过程的描述,我们知道只要DHCP服务器收到客户端发送的Discover包,如果自己有地址的情况下,它就会发送offer;那么问题来了,如果有恶意用户伪造大量的discover包发送,那么服务器就会把大量的地址发送出;然而客户端那么又没有第三个request包来请求对应的ip地址信息;如果此时有正常客户端来请求拿地址,服务器又没有地址(因为大量的地址都被发送出去,地址池里没有空闲的地址);此时服务器该怎么办?很显然这是DHCP在设计之初没有考虑到的安全因素;

  DHCP攻击类型

  通常DHCP攻击有两种,一种是DHCP饿死攻击(DHCP Starvation),所谓DHCP饿死攻击,是指攻击者发送大量的不完整DHCP请求,把DHCP服务器内的可用ip地址快速消耗殆尽;另外一种就是DHCP欺骗攻击(DHCP Spoof);所谓DHCP欺骗是指攻击者私自搭建DHCP服务器,来影响客户端的ip获取情况(这是利用DHCP客户端的特性,谁的offer先到就用谁的);

  DHCP欺骗攻击示意图

  提示:客户端发送Discover包,如果局域网里有多个DHCP服务器,那么真正的DHCP服务器和伪造的DHCP服务器都会收到该报文,因为这个包是广播发送;

  提示:当真正的DHCP服务器和伪造的DHCP服务器收到Discover包以后,对应都会给客户端发送offer包,此时就需要看谁先被客户端收到;如果伪造的DHCP服务器发送到offer包被客户端收到,那么客户端拿到的ip地址就是攻击者希望拿到的信息(这里面可以伪造网关地址,dns的地址等等);从而实现后续客户端发送数据被攻击者捕获利用;

  提示:如上图拓扑,真正的DHCP服务器被放置在核心层或汇聚层;攻击者在接入层伪造了一台DHCP服务器;如果客户端发送广播请求ip地址,很显然攻击者伪造的DHCP服务器会先拿到discover包,从而也会更快提供offer;这样一来,对于客户端来说,它拿到的地址始终是不安全的;

  DHCP饿死攻击现象

  提示:以上是用windwos server 2012搭建的DHCP服务器统计的数据,正常情况下发现数和提供数都不会很多;地址池里使用的数量和可用数量也不会完全用尽;

  用kali攻击DHCP服务器

  提示:yersinia是一款非常强大的拒绝服务(Denial-Of-Service,简称Dos)攻击工具,它支持生成树协议(STP),VLAN中继协议(VTP),动态中继协议(DTP),IEEE 802.1Q,IEEE 802.1X,思科发现协议(CDP),动态主机配置协议(DHCP)等;上述实验我们利用yersinia工具,模拟DHCP客户端发送discover包,向dhcp服务器请求ip地址;攻击原理就是通过yersinia 伪造大量的mac地址,来封装discover包,然后广播出去;

  命令行使用yersinia攻击DHCP服务器

  提示:yersinia针对DHCP协议支持4种攻击方式,第一种是发送原始数据包(非dos方式发送);第二种是dos方式发送Discover包;第三种是伪装创建DHCP服务器;第四种就是dos方式发送release包;第三种和第四种攻击建议在图形界面使用;

  提示:可以看到,当kali攻击DHCP服务器时,瞬间DHCP的地址池会被消耗殆尽;这里说下上面的发现数和提供数,发现数是指服务器收到的discover包,提供数是服务器发送的offer包;如果服务器的统计数据中发现数非常大,说明我们服务器被攻击了;

  DHCP Snooping

  DHCP Snooping是防范DHCP攻击和欺骗的一种应对技术,主要作用保证DHCP客户端从合法的DHCP服务器获取ip地址,并记录DHCP客户端ip地址与MAC地址等参数的对应关系,防止网络上针对DHCP攻击;DHCP嗅探技术主要有如下3点功能

  1、截获DHCP报文并进行分析处理;

  2、建立和维护一个DHCP Snooping绑定表(该表主要记录MAC、IP、租期、VLAN、接口的对应关系);

  3、对DHCP报文进行过滤和限速;

  提示:DHCP Snooping技术,通过对某个接口的DHCP请求包进行限速,以及限制接口最大用户数量,可以有效防止DHCP饿死攻击;利用DHCP Snooping的接口类型,设置真正服务器连接的接口为信任接口,其他为非信任接口,可以防止DHCP欺骗攻击;

  DHCP Snooping端口类型

  提示:DHCP Snooping端口类型有两种,一种是信任端口(Trusted),一种是非信任(Untrusted);默认开启DHCP Snooping的接口或VLAN以后,对应接口或VLAN所有接口都为非信任端口;非信任端口会丢弃收到的DHCP应答报文;只有手动设置某个端口为信任端口后,对应接口才能正常转发收到的DHCP应答报文,转发DHCP请求;

  提示:如上图所示,我们在交换机的VLAN1里开启DHCP Snooping功能以后,然后把连接真正DHCP的接口设置为信任接口;当客户端发送Discover包时,伪造的DHCP和真正的DHCP服务器都能正常收到Discover包;但是伪造的DHCP服务器提供的offer包会被交换机丢弃,因为连接伪造DHCP服务器的接口是非信任接口;真正的DHCP服务器回复offer包是能正常的被转发给对应pc,因为连接真正DHCP服务器的接口是信任接口;

  提示:如上图所示,DHCP服务器回复的offer,ACK,NAK这些包只有在信任接口收到才能正常转发,非信任接口收到offer,ack,nak这些包是直接丢弃的;所以这样就保证了正常DHCP服务器不被欺骗,从而也保证了客户端拿到的地址是真正DHCP服务器给的地址;

  DHCP Snooping绑定表

  DHCP Snooping绑定表是收到DHCP ACK报文后,会从该报文中提取关键信息构成;该表主要有MAC地址,IP地址,VLAN信息,和接口的绑定关系;该表有一个特性,只有收到的报文的信息和绑定表中的内容一致才能被转发,否则直接丢弃;

  DHCP Snooping配置

  环境拓扑

  sw2的配置

sys
sys DHCP
dhcp en
int vlanif 1
ip add 192.168.100.254 24
dhcp se int

  提示:上述主要配置dhcp服务器,利用接口地址池分配ip地址;

  验证DHCP地址池信息

  提示:可以看到vlanif 1接口地址池有253个地址,使用了一个;

  R1的配置

sys
sys R1
dhcp en
int g0/0/0
ip add 172.16.100.254 24
dhcp se int

  提示:这里使用172.16网段来模拟攻击者提供的ip地址信息;

  验证地址池信息

  提示:可以看到现在地址池里总共有253个地址,空闲253地址,没有使用的地址;

  把pc1设置为dhcp,看看是否能够拿到真正的DHCP提供的地址呢?

  提示:可以看到现在pc1拿到了伪装的dhcp服务器分配ip地址;

  查看抓包过程

  提示:可以看到pc发送discover包,对应R1最先发送offer被pc1拿到,所以真正的DHCP服务器再发offer对应pc1就不会在拿了;

  pc2拿地址

  提示:可以看到pc2也拿到了172的地址,都是拿到了欺骗着伪装的DHCP服务器;

  在sw1上开DHCP Snooping功能

  提示:开启dhcp snooping首先要在全局开启dhcp功能,然后再全局开启dhcp snooping 功能,然后在某个vlan或某个接口开启dhcp snooping功能;

  验证:查看vlan1是否开启了dhcp snooping功能?

  提示:默认开启dhcp snooping功能以后,默认最大用户为1024,其他检查中继,客户端地址和request、速率都是关闭的;

  配置信任接口

  提示:默认开启了DHCP snooping功能以后,对应接口或vlan下的接口都是非信任接口,所以我们只需要把那些接口设置为信任接口即可;

  现在pc1拿ip地址,看看是否还会从R1拿呢?

  提示:可以看到现在pc1只能从真正DHCP服务器上拿地址,因为只有真正dhcp服务器所在接口是被我们信任的,只有从对应接口收到offer才能被交换机转发,其他接口收到offer,直接会被丢弃的;

  pc2拿地址

  提示:可以看到pc2也是和pc1只能从真正的DHCP服务器拿到地址,对应欺骗者所在接口抓包,直接抓不到discover包(这应该是模拟器bug,正常应该抓到discover包); 通过上述配置信任端口成功防御了DHCP欺骗攻击;

  查看绑定表

  提示:可以看到pc1和pc2的ip地址,mac地址,以及vlan号和接口都做了一一对应;

  查看dhcp snooping配置信息

  提示:这个命令主要方便我们查看哪些接口或vlan开启dhcp snooping 那些接口配置的是信任接口;

  在接口开启速率检查

  在接口开启速率限制

  在接口限制最大用户数

  在接口下开启dhcp snooping功能

  提示:在某个接口下配置限速,需要在接口下开启dhcp snooping功能;

  验证g0/0/3是否开启了速率和最大用户的限制?

  用kali攻击dhcp服务器,看看是否有效?

  提示:可以看到我们限制了最大用户数,对应kali攻击还是有效的;但对应dhcp丢包数据是正常的;

  在接口限制mac学习数量,看看是否能够防止kali的攻击呢?

  提示:可以看到我们现在了mac地址学习的数量以后,dhcp服务器过期地址就是我配置的限制接口最大用户数量5个,对应dhcp服务器的地址就不会被kali全部给拿走变为过期地址;有效防御了kali的攻击;

  开启dhcp客户端地址检查

  提示:开启客户端mac地址检查是指,检测DHCP Request报文帧头源MAC地址与CHADDR字段是否相同的功能,相同则转发,不相同则丢弃;

  开启dhcp客户端地址检查告警以及触发告警阀值

  开启检查dhcp-request

  提示:check-request是对DHCP报文进行绑定表匹配检查的功能。只有匹配成功的报文设备才将其转发,否则将丢弃。这将能有效的防止非法用户通过发送伪造的DHCP报文冒充合法用户续租或释放IP地址。

  开启检查dhcp-request告警和阀值配置

  开启 dhcp-giaddr检查

  提示:为了保证设备在生成DHCP Snooping绑定表时能够获取到用户MAC等参数,DHCP Snooping功能需应用于二层网络中的接入设备或第一个DHCP Relay上。故DHCP Snooping设备接收到的DHCP报文中GIADDR字段必然为零,若不为零则该报文为非法报文,设备需丢弃此类报文。

  开启 dhcp-giaddr检查告警和阀值设置

  开启限速告警和阀值配置

  提示:默认开启限速告警以后,对应告警阀值为100;

  配置用户下线清空对应用户mac表项

  提示:用户下线后,若设备上该用户对应的动态MAC表项没有达到老化时间,则设备在接收到来自网络侧以该用户IP地址为目的地址的报文时,将继续根据动态MAC表项处理此报文。在执行命令dhcp snooping user-offline remove mac-address之后,当DHCP Snooping表项清除时将移除对应的用户MAC表项;

HCNP Routing&Switching之DHCP安全的更多相关文章

  1. HCNP Routing&Switching之DHCP中继

    前文我们聊了下BFD相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16487842.html:今天来聊一聊DHCP中继相关话题: DHCP的作用 DH ...

  2. HCNA Routing&Switching之DHCP服务

    前文我们了解了STP的端口状态.计时器以及端口状态切换和网络拓扑变化相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15140672.html:今天我们 ...

  3. HCNP Routing&Switching之IS-IS报文结构和类型

    前文我们了解了IS-IS动态路由协议基础相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15249328.html:今天我们来聊一聊IS-IS动态路由协 ...

  4. HCNP Routing&Switching之组播技术-组播协议IGMP

    前文我们了解了组播地址相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15616740.html:今天我们来聊一聊组播协议中IGMP协议相关话题: 组播 ...

  5. HCNP Routing&Switching之IP安全

    前文我们了解了DHCP安全相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16637627.html:今天我们来聊一聊IP安全相关话题: 技术背景 随着 ...

  6. HCNP Routing&Switching之ARP安全

    前文我们了解了IP安全相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16652367.html:今天我们来聊一聊ARP安全相关话题: 什么是ARP? ...

  7. HCNP Routing&Switching之OSPF网络类型

    前文我们了解了PPPoE协议相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15182512.html:今天我们聊聊一聊OSPF中的网络类型相关话题: ...

  8. HCNP Routing&Switching之OSPF虚连接

    前文我们了解了OSPF的网络类型.帧中继交换机映射以及路由器帧中继映射相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15195762.html:今天我 ...

  9. HCNP Routing&Switching之OSPF LSA类型

    前文我们了解了OSPF中的虚连接相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15202348.html:今天我们来聊一聊OSPF数据包中LSA类型相 ...

随机推荐

  1. 重学ES系列之拓展运算符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. ASP.NET MVC之models_list传值view

    单个用户在查看个人信息时,一个model就能解决 但是如果是管理员,就需要查看多个用户,此时我们从数据库读一页的用户数据(大致十条) 此时返回的就可能是一个泛型列表 所以除了基本的用户model外(比 ...

  3. React技巧之发出http请求

    原文链接:https://bobbyhadz.com/blog/react-send-request-on-click 作者:Borislav Hadzhiev 正文从这开始~ 总览 在React中, ...

  4. Python自动化办公:27行代码实现将多个Excel表格内容批量汇总合并到一个表格

    序言 (https://jq.qq.com/?_wv=1027&k=GmeRhIX0) 老板最近越来越过分了,快下班了发给我几百个表格让我把内容合并到一个表格内去.还好我会Python,分分钟 ...

  5. jvm jni 及 pvm pybind11 大批量数据传输及优化

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  6. cenos 7 zookeeper Error contacting service. It is probably not running

    zkServer.sh status 命令查看zookeeper集群的状态,发现异常 Error contacting service. It is probably not running 最开始以 ...

  7. MQ系列2:消息中间件的技术选型

    1 背景 在高并发.高消息吞吐的互联网场景中,我们经常会使用消息队列(Message Queue)作为基础设施,在服务端架构中担当消息中转.消息削峰.事务异步处理 等职能. 对于那些不需要实时响应的的 ...

  8. AtCoder Beginner Contest 249 F - Ignore Operations // 贪心 + 大根堆

    传送门:F - Keep Connect (atcoder.jp) 题意: 给定长度为N的操作(ti,yi). 给定初值为0的x,对其进行操作:当t为1时,将x替换为y:当t为2时,将x加上y. 最多 ...

  9. MyBatis-Plus联表查询的短板,终于有一款工具补齐了

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是Hydra. mybatis-plus作为mybatis的增强工具,它的出现极大的简化了开发中的数据库操作,但是长久以来,它的 ...

  10. Matplotlib(基本用法)

    Matplotlib 是数据分析绘图的常见模块,可以算是 2D-绘图(Python)领域使用最广泛的套件,可以将数据图形化,并且提供多样化的输出格式,利于数据的显示并分析. 接下来展示的是Matplo ...