常见的DHCP攻击防范

一、DHCP原理

DHCP用来自动分配ip地址,每一个DHCP service(DHCP服务器)都有一个DHCP pool(分配池),每一个终端对DHCP service发送请求时,DHCP service会从池中给终端分配IP,分配的方式会因为OS不同而不同,从前往后,从后往前,或者随机分配

终端开启DHCP服务后向网段内广播发送discover请求,DHCP service接收到discover后,记录下discover请求中的CHADDR(硬件地址)和IP地址,回应offer,然后主机在对其发送request请求,服务器ack回应,如下图:

常见的DHCP攻击防范_第1张图片

 下面在eNSP中简单展示DHCP请求的发送过程,如下为拓扑

常见的DHCP攻击防范_第2张图片

 DHCP service中开启DHCP服务

dhcp enable //开启dhcp
int g0/0/0 //进入端口
ip address 192.168.11.254 24 //配置ip
quit
ip pool test //进入dhcp pool
 gateway-list 192.168.11.254
 network 192.168.11.0 mask 255.255.255.0
 dns-list 8.8.8.8
quit
int g0/0/0
dhcp select global //全局启用

 我们在两者之间进行抓包可以发现终端经过dhcp服务取得ip的过程,其中discover报文中就蕴含着后面提到的DHCP饿死攻击中利用的点。上面的地址为以太网II协议中包含的主机MAC地址,而下面的则是写入到Discover中的CHADDR地址

常见的DHCP攻击防范_第3张图片

 二、DHCP攻击

DHCP饿死攻击1

DHCP饿死攻击是利用修改discover报文中的CHADDR地址,不断的向DHCP service发送请求,以此来耗尽DHCP pool中的地址。

我们可以利用kali-linux中的dhcpstarv工具来复现这一攻击模式,如图为拓扑

常见的DHCP攻击防范_第4张图片

先把终端切换回静态IP,然后重置ip pool

常见的DHCP攻击防范_第5张图片

 在kali中使用dhcpstarv工具攻击

常见的DHCP攻击防范_第6张图片

 此时在DHCP service端口处抓到的包如图所示,可见CHADDR地址和MAC地址并不统一

常见的DHCP攻击防范_第7张图片

 

 如图所示IP pool中的ip被消耗完了

常见的DHCP攻击防范_第8张图片

 当其他终端在此想使用DHCP服务时,收到的ip为空

DHCP饿死攻击2

像上文这种仅伪造CHADDR地址的饿死攻击会被DHCP snooping(下文攻击防范时提到)防御下来,于是就有了另一种同时伪造MAC地址和CHADDR地址的方式,可以通过kali中的yersinia工具实现

a32cb0b525cb4450a6e0ff256c408a62.png

 现象如下:常见的DHCP攻击防范_第9张图片

 其会同时伪造mac和chaddr常见的DHCP攻击防范_第10张图片

 DHCP 仿冒攻击

在DHCP资源池耗尽的时候,如果还有终端发送广播的discover消息,可以使用kali伪造DHCP服务器,那么终端访问外界都需通过kali进行,kali对其进行了嗅探

在kali-linux中我们可以用yersinia来形成DHCP仿冒攻击:

常见的DHCP攻击防范_第11张图片

 当终端开启DHCP服务时,kali便能开始嗅探

常见的DHCP攻击防范_第12张图片

 三、DHCP攻击防范

DHCP仿冒攻击防范

使用DHCP snooping中的设置信任端口

/*在交换机SW1中*/
dhcp enable
dhcp snooping enable
vlan 1
dhcp snooping enable //开启vlan 1 中的dhcp snooping
/*设置信任端口*/
dhcp snooping trusted interface g0/0/24

只向信任端口转发discover,只接收信任端口的offer和ack,如此便挡住了仿冒攻击

DHCP饿死攻击1防范

开启DHCP snooping和DHCP snooping check chaddr(用于比较MAC和CHADDR地址是否一致,若不一致则直接丢弃。

/*需要在组内进行*/
port group 1 //创建组1
group-member g0/0/1 to g0/0/24 //1到24端口一同开启
dhcp snooping check dhcp-chaddr enable

DHCP饿死攻击2防范

对于同时仿冒mac和chaddr的攻击,无法仅仅使用check chaddr的方式阻挡,需要通过端口安全方式实现,通过设置使交换机的一个access接口只允许通过设定数量的MAC学习,若是学习到多个给予惩罚

port-security enable //开启端口安全
port-security max-mac-num 1 //最大可学习的mac为1
shutdown
undo shutdown   //重启
port-security protect-action shutdown //惩罚为重启

 

 

你可能感兴趣的:(服务器,网络,网络安全,网络协议,wireshark)