DHCP 安全——DHCP Snooping技术应用

DHCP 安全——DHCP Snooping技术应用


关于DHCP在之前的文章中也提到过,它是为网络中的终端提供IP地址的服务。DHCP为网络管理员在IP地址分配任务上减轻了很大的压力,而且DHCP服务也简化了对IP地址分发的管理。管理员可以很轻松直观地在DHCP服务器上查看IP地址的使用情况。但是DHCP天生有一个缺陷,就是在DHCP服务器与客户端在IP地址请求和分发的过程中,缺少认证机制。所以网络中如果出现一台非法的DHCP服务器为客户端提供非法的IP地址,那么就黑客就可以做一些中间人攻击的操作,给网络的安全性带来了隐患。为了消除这一隐患,我们可以通过DHCP Snooping技术,来过滤掉非法的DHCP服务器与客户端之间的DHCP交互数据。从而达到DHCP服务的安全、可靠。

下面我们就来聊聊DHCP Snooping是怎么一回事。

DHCP Snooping是 DHCP 的一种安全特性,主要应用在 交换机 上,作用是屏蔽接入网络中的非法的 DHCP 服务器。即开启 DHCP Snooping 功能后,网络中的客户端只有从管理员指定的 DHCP 服务器获取 IP 地址。启用 DHCP Snooping 功能后,必须将 交换机上的端口设置为信任(Trust)和非信任(Untrust)状态,交换机 只转发信任端口的 DHCP OFFER/ACK/NAK报文,丢弃非信任端口的 DHCP OFFER/ACK/NAK 报文,从而达到阻断非法 DHCP 服务器的目的。---摘自百度百科

DHCP Snooping是应用在交换机上的一种DHCP阻断技术,它通过信任和非信任端口的设置来阻断DHCP交互数据的流量。下面我们看一下,怎样在Cisco交换机上配置DHCP Snooping。

实验平台为EVE-NG,DHCP Server和 SpuriousDHCPServer 为Cisco 路由器模拟。拓扑图如下:


...


合法的DHCP服务器提供的IP地址为192.168.1.0/24,DNS 8.8.8.8

非法的DHCP服务器提供的IP地址为192.168.10.0/24,DNS 9.9.9.9


关于怎样在路由器中开启DHCP,这里就不做赘述,直接将配置给大家:

DHCP Server

DHCPServer# sh run | sec ip dhcp

ip dhcp excluded-address 192.168.1.2

ip dhcp pool vlan1

network 192.168.1.0 255.255.255.0

default-router 192.168.1.1

dns-server 8.8.8.8

lease 8

DHCPServer#sh run int e0/0

interface Ethernet0/0

ip address 192.168.1.2 255.255.255.0

end

SpuriousDHCPServer

SpuriousDhcpServer#sh run | sec ip dhcp

ip dhcp excluded-address 192.168.10.1

ip dhcp pool vlan1

network 192.168.10.0 255.255.255.0

default-router 192.168.10.1

dns-server 9.9.9.9

lease 8

SpuriousDhcpServer#sh run int e0/0

interface Ethernet0/0

ip address 192.168.10.2 255.255.255.0

no

这样两台DHCP服务器就算配置好了,接下来我们在Switch上不配置DHCP Snooping 看看会发生什么。

Switch的端口全部默认在VLAN1中,Switch不做任何配置。我们看看PC1和PC2 会获取到什么样的IP地址。

PC1:我们可以看到PC1在DHCP交互的过程中,两台DHCP都为它提供了IP地址,其中合法的DHCP提供的是192.168.1.8 而非法的DHCP提供的是192.168.10.6.但最终PC1选择了合法的DHCP提供的IP地址。


... ...


PC2:我们可以看到,同样的PC2在DHCP交互的过程中,两台DHCP也都提供了IP地址,但PC2选择了非法DHCP提供的IP地址192.168.10.7 DNS 9.9.9.9 那么PC2 可以说就收到了攻击。


... ...


接下来我们看一下在交换机中怎样配置DHCP Snooping来阻止非法的DHCP服务器与客户端的交互。


这里我们用到的最小化的DHCP Snooping配置,步骤如下:

1. 在交换机上开启DHCP Snooping 服务功能,ip dhcp snooping

2. 在VLAN中启用DHCP Snooping,默认是所有VLAN关闭。ip dhcp snooping vlan vlan-list

3. 在接入合法的DHCP服务器的端口上,开启信任模式,默认下所有端口都是非信任模式。ip dhcp snooping trust

4. 默认情况下Cisco交换机会开启ip dhcp snooping information option , DHCP option 82 DHCP中继。如果是Win、Linux的DHCP服务器这里不需要关闭,但本实验的DHCP服务器是由Cisco路由器模拟所以需要关闭。


下面我们就来配置一些switch:

Switch#conf t

Enter configuration commands, one per line. End with CNTL/Z.

Switch(config)#ip dhcp snooping

Switch(config)#ip dhcp snooping vlan 1

Switch(config)#no ip dhcp snooping information option


我们先不配置trust端口,看一下PC是否可以获取到ip地址


...


很明显PC并没有获取到IP地址。现在我们把Switch的e0/0也就是连接合法DHCP服务器的端口设置为trust,在看一下PC是否可以获取到IP地址。

Switch#conf t

Switch(config)#int e0/0

Switch(config-if)#ip dhcp snooping trust

我们可以看到PC1和PC2 都从合法的DHCP服务器192.168.1.2中获取到了合法的IP地址。


...


而且非法DHCP服务器并没有得到任何DHCP请求包,因为它的端口是untrust的状态。


我们也可以通过一些命令在switch上看到一些DHCP Snooping的信息。


... ...


至此,DHCP Snooping的配置就完成了。我们阻止了非法DHCP服务器的服务,为客户端的DHCP提供了安全可靠的请求。