DHCP攻击和防御

2018年7月5日21:44:54 发表评论 649 views
DHCP的租约分为一下6个过程:

1.
客户机请求IP:客户机以广播的方式发送DHCP
Discover包来寻找DHCP服务器,广播中包含DHCP客户机的MAC和计算机名。

2.
服务器响应:DHCP服务器接收到来到客户机的请求IP地址信息时,服务器就在自己的IP地址池中查找是否有合法的IP提供给客户机,如果有,DHCP服务器就把此IP地址做上标记,加入到DHCP
Offer的消息中,然后DHCP服务器就广播一条Offer消息:DHCP客户机的MAC、提供的合法IP、子网掩码、默认网关、租约期限、DHCP服务器的IP地址。

3.
客户机选择IP:客户机接收到DHCP
Offer包后,提取里面的IP地址,然后广播DHCP
Resquest消息到所有DHCP服务器,表明他接受提供的内容。数据包里包含客户机提供IP配置的服务标识符(服务器IP地址)。服务器查看服务器标识字段,以确定提供的IP地址时候被接受。

4.
服务器确定租约:服务器收到DHCP
Resquest后,就向客户机广播DHCP
ACK消息成功确认。DHCP
ACK中包含
地址的有效租期和其它配置的消息。

5.
重新登录:DHCP客户机每次重新登录,不用再发送DHCP
DIscover消息,直接发送包含前一次所分配的IP地址的DHCP
Request
请求信息,DHCP服务器尝试让DHCP客户机继续使用原来的IP地址。如果此IP地址不能分配给原来的客户机,则服务器发送一个DHCP
Nack否认信息,客户机收到此消息后就会重新发送DHCP
Discover消息来请求新的地址。

6.
更新租约:客户机到了50%的时候就开始准备续约了,85%的时候是第二次了,如果85%的时候还没有能获取到dhcp服务器的地址续约,客户端得赶紧另谋出路了,发DHCP
discover包,找DHCP服务器

注:如果
DHCP客户机无法找到DHCP服务器,它将从TCP/IP的B类网段169.254.0.0中挑选一个
地址作为自己的
地址,并且每隔5
min
尝试与DHCP服务器进行通信。

下面我们来考虑怎样攻击DHCP服务器,看看如下拓扑图:

DHCP攻击和防御

我们可以通过攻击主机D,发送DHCP
Discover
包来瞬间耗尽DHCP服务器A的地址池,然后建立流氓DHCP服务器,再发送RELEASE包,这样主机C就会在网上寻找DHCP服务器,D就会告诉DHCP客户端虚假的地址和网关。就达到了攻击DHCP的目的。用到的攻击是基于Ubuntu下的yersinia
软件

DHCP攻击和防御

DHCP攻击和防御

那么我们来讲讲怎么防御DHCP攻击:我们可以在交换机上启用端口监听,设置信任端口和非信任端口,默认下交换机端口都是非信任端口。

非信任端口:连接终端设备的端口,该端口客户端只能发送DHCP请求报文,而丢弃来自该端口的其他所有DHCP报文(DHCP
offer等)

信任端口:连接合法的DHCP服务器或者汇聚接口,能够转发和接收所有DHCP报文

防御DHCP的拓扑图:

DHCP攻击和防御

开启交换机端口监听功能:
Switch(config)#ipdhcp
snooping

设置DHCP监听作用于那个VLAN:
Switch(config)#ipdhcp
snooping
vlannumber

配置端口信任或非信任:

Switch(config-if)#ipdhcp
snooping
trust

报文中插入选项82信息:Switch(config)#
ip
dhcp
snoopling
infornamation
option

限制DHCP报文速率,jianhuan
DHCP
耗尽攻击:Switch(config-if)#
ip
dhcp
snoopling
limit
rate
rate(速率)

这样就可以达到防御DHCP攻击的目的

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: