别让黑客悄悄侵入你的网络:深入解析DHCP Snooping

安全 数据安全 通信技术
为了保证网络通信业务的安全性,引入了DHCP Snooping技术,在DHCP Client和DHCP Server之间建立一道防火墙,以抵御网络中针对DHCP的各种攻击。

一、DHCP工作原理概述

在学习DHCP Snooping之前,我们需要先回顾一下DHCP的工作原理。下面从两个场景分析DHCP工作原理

1.DHCP无中继场景

DHCP无中继场景

(1) 发现阶段

DHCP客户端通过广播DHCP Discover报文来向局域网内的DHCP服务器请求服务。

(2) 提供阶段

DHCP服务器根据自身配置的IP地址池、相应的子网掩码和网关等信息,通过DHCP Offer报文应答客户端。

(3) 请求阶段

若接受DHCP Offer报文中的配置,DHCP客户端则广播DHCP Request报文以通告DHCP服务器和局域网内其他主机其生效的IP地址。

() 确认阶段

DHCP客户端收到DHCP ACK报文,会广播发送免费ARP报文,探测本网段是否有其他终端使用服务器分配的IP地址。

2.DHCP有中继场景

DHCP有中继场景

(1) 发现阶段

DHCP中继接收到DHCP客户端广播发送的DHCP DISCOVER报文后,进行如下处理:

  • 第1步:检查DHCP报文中的hops字段,如果大于16,则丢弃DHCP报文;否则,将hops字段加1(表明经过一次DHCP中继),并继续第2步的操作。
  • 第2步:检查DHCP报文中的giaddr字段。如果是0,将giaddr字段设置为接收DHCP DISCOVER报文的接口IP地址。如果不是0,则不修改该字段,继续第3步的操作。
  • 第3步:将DHCP报文的目的IP地址改为DHCP服务器或下一跳中继的IP地址,源地址改为中继连接客户端的接口地址,通过路由转发将DHCP报文单播发送到DHCP服务器或下一跳中继。

(2) 提供阶段

DHCP服务器接收到DHCP DISCOVER报文后,选择与报文中giaddr字段为同一网段的地址池,并为客户端分配IP地址等参数,然后向giaddr字段标识的DHCP中继单播发送DHCP OFFER报文。

DHCP中继收到DHCP OFFER报文后,会进行如下处理:

  • 第1步:检查报文中的giaddr字段,如果不是接口的地址,则丢弃该报文;否则,继续下面的操作。
  • 第2步:DHCP中继检查报文的广播标志位。如果广播标志位为1,则将DHCP OFFER报文广播发送给DHCP客户端;否则将DHCP OFFER报文单播发送给DHCP客户端。

(3) 请求阶段

中继接收到来自客户端的DHCP REQUEST报文的处理过程同"发现阶段"。

(4) 确认阶段

中继接收到来自服务器的DHCP ACK报文的处理过程同"提供阶段"。

二、DHCP Snooping概述

为了保证网络通信业务的安全性,引入了DHCP Snooping技术,在DHCP Client和DHCP Server之间建立一道防火墙,以抵御网络中针对DHCP的各种攻击。

DHCP Snooping是DHCP的一种安全特性,用于保证DHCP客户端从合法的DHCP服务器获取IP地址。DHCP 服务器记录DHCP客户端IP地址与MAC地址等参数的对应关系,防止网络上针对DHCP攻击。

目前DHCP协议在应用的过程中遇到很多安全方面的问题,网络中存在一些针对DHCP的攻击,如DHCP Server仿冒者攻击、DHCP Server的拒绝服务攻击、仿冒DHCP报文攻击等。

DHCP Snooping主要是通过DHCP Snooping信任功能和DHCP Snooping绑定表实现DHCP网络安全。

DHCP Snooping信任功能

DHCP Snooping的信任功能,能够保证客户端从合法的服务器获取IP(Internet Protocol)地址。

如下图所示,网络中如果存在私自架设的DHCP Server仿冒者,则可能导致DHCP客户端获取错误的IP地址和网络配置参数,无法正常通信。DHCP Snooping信任功能可以控制DHCP服务器应答报文的来源,以防止网络中可能存在的DHCP Server仿冒者为DHCP客户端分配IP地址及其他配置信息。

DHCP Snooping信任功能示意图

DHCP Snooping信任功能将接口分为信任接口和非信任接口:

  • 信任接口正常接收DHCP服务器响应的DHCP ACK、DHCP NAK和DHCP Offer报文。
  • 非信任接口收到的DHCP Server发送的DHCP OFFER、DHCP ACK、DHCP NAK报文会被直接丢弃。
  • 配置dhcp snooping enable命令的接口,收到DHCP请求报文后,转发给所有的信任接口;收到DHCP响应报文后丢弃。
  • 配置dhcp snooping trusted命令的接口,收到DHCP请求报文后,转发给所有的信任接口,如果没有其他信任接口,则丢弃该DHCP请求报文;收到DHCP响应报文后,只转发给连接对应客户端的并且配置命令dhcp snooping enable的接口,如果查不到上述接口,则丢弃该DHCP响应报文。

三、DHCP Snooping绑定表

DHCP Snooping绑定表功能示意图

二层接入设备使能了DHCP Snooping功能后,从收到DHCP ACK报文中提取关键信息(包括PC的MAC地址以及获取到的IP地址、地址租期),并获取与PC连接的使能了DHCP Snooping功能的接口信息(包括接口编号及该接口所属的VLAN),根据这些信息生成DHCP Snooping绑定表。

由于DHCP Snooping绑定表记录了DHCP客户端IP地址与MAC地址等参数的对应关系,故通过对报文与DHCP Snooping绑定表进行匹配检查,能够有效防范非法用户的攻击。

DHCP Snooping绑定表根据DHCP租期进行老化或根据用户释放IP地址时发出的DHCP Release报文自动删除对应表项。

四、DHCP Snooping 的作用

DHCP Snooping功能用于防止:

  • DHCP Server仿冒者攻击
  • 中间人攻击与IP/MAC Spooping攻击
  • 改变CHADDR值的DoS攻击

根据不同的攻击类型,DHCP Snooping提供不同的工作模式,如下表:

1.DHCP Server仿冒者攻击

(1) 攻击原理:

由于DHCP请求报文以广播形式发送,所以DHCP Server仿冒者可以侦听到此报文。DHCP Server仿冒者回应给DHCP Client仿冒信息,如错误的网关地址、错误的DNS服务器、错误的IP等,达到DoS(Deny of Service)的目的。

(2) 解决方法:

  • 为防止DHCP Server仿冒者攻击,可使用DHCP Snooping的“信任(Trusted)/不信任(Untrusted)”工作模式。
  • 把某个物理接口或者VLAN的接口设置为“信任(Trusted)”或者“不信任(Untrusted)”。
  • 凡是从“不信任(Untrusted)”接口上收到的DHCP Reply(Offer、ACK、NAK)报文直接丢弃,这样可以隔离DHCP Server仿冒者攻击。

2.改变CHADDR值的DoS攻击

(1) 攻击原理:

攻击者持续大量地向DHCP Server申请IP地址,直到耗尽DHCP Server地址池中的IP地址,导致DHCP Server不能给正常的用户进行分配。

(2) 解决方法:

为了避免受到攻击者改变CHADDR值的攻击,可以在设备上配置DHCP Snooping功能,检查DHCP Request报文中CHADDR字段。如果该字段跟数据帧头部的源MAC相匹配,转发报文;否则,丢弃报文。从而保证合法用户可以正常使用网络服务。

3.DHCP中间人攻击

(1) 攻击原理:

攻击者利用ARP机制,让Client学习到DHCP Server IP与Attacker MAC的映射关系,又让Server学习到Client IP与Attacker Mac的映射关系。如此一来,Client与Server之间交互的IP报文都会经过攻击者中转。从本质上讲,中间人攻击是一种Spoofing IP/MAC攻击,中间人利用了虚假的IP地址与MAC地址之间的映射关系来同时欺骗DHCP的客户端和服务器。

(2) 解决方法:

为防御中间人攻击与IP/MAC Spoofing攻击,可使用DHCP Snooping的绑定表工作模式,当接口接收到ARP或者IP报文,使用ARP或者IP报文中的“源IP+源MAC”匹配DHCP Snooping绑定表。如果匹配就进行转发,如果不匹配就丢弃。

五、DHCP Snooping配置命令介绍

(1) 全局使能DHCP Snooping功能:

[Huawei] dhcp snooping enable [ ipv4 | ipv6 ]

(2) VLAN视图下使能DHCP Snooping功能:

[Huawei-vlan2] dhcp snooping enable

在VLAN视图下执行此命令,则对设备所有接口接收到的属于该VLAN的DHCP报文命令功能生效。

(3) VLAN视图下配置接口为“信任”状态\

[Huawei-vlan2] dhcp snooping trusted interface interface-type interface-number

在VLAN视图下执行此命令,则命令功能仅对加入该VLAN的接口收到的属于此VLAN的DHCP报文生效。

(4) 接口视图下使能DHCP Snooping功能

[Huawei-GigabitEthernet0/0/1] dhcp snooping enable

(5) 接口视图下配置接口为“信任”状态

[Huawei-GigabitEthernet0/0/1] dhcp snooping trusted

缺省情况下,设备接口为非信任状态。

(6)(可选)配置丢弃GIADDR字段非零的DHCP报文

[Huawei] dhcp snooping check dhcp-giaddr enable vlan { vlan-id1 [ to vlan-id2 ] }

使能检测DHCP Request报文中GIADDR字段是否非零的功能。此命令同时可以在VLAN视图或接口视图下进行配置。在VLAN视图下执行此命令,则对设备所有接口接收到的属于该VLAN的DHCP报文命令功能生效;在接口下执行该命令,则对该接口下的所有DHCP报文命令功能生效。

六、DHCP Snooping配置举例

如图所示,DHCP和VLAN基础配置已完成,在Switch配置DHCP Snooping功能。

(1) 配置方式一:接口视图

[Switch] dhcp snooping enable ipv4
[Switch] interface GigabitEthernet 0/0/1
[Switch-GigabitEthernet0/0/1] dhcp snooping enable
[Switch] interface GigabitEthernet 0/0/2
[Switch-GigabitEthernet0/0/2] dhcp snooping enable
[Switch] interface GigabitEthernet 0/0/3
[Switch-GigabitEthernet0/0/3] dhcp snooping enable
[Switch-GigabitEthernet0/0/3] dhcp snooping trusted

(2) 配置方式二:VLAN视图

[Switch] dhcp snooping enable ipv4	
[Switch] vlan 2
[Switch-vlan2] dhcp snooping enable	
[Switch] interface GigabitEthernet 0/0/3
[Switch-GigabitEthernet0/0/3] dhcp snooping trusted	

配置验证执行命令display dhcp snooping interface,查看接口下的DHCP Snooping运行信息。

[Switch]display dhcp snooping interface GigabitEthernet 0/0/3
 DHCP snooping running information for interface GigabitEthernet0/0/3 :
 DHCP snooping                            	: Enable   
 Trusted interface                        	: Yes     
 Dhcp user max number                     	: 1024     (default)
 Current dhcp user number                 	: 0       
 Check dhcp-giaddr                        	: Disable  (default)
 Check dhcp-chaddr                        	: Disable  (default)
 Alarm dhcp-chaddr                        	: Disable  (default)
 Check dhcp-request                       	: Disable  (default)
 Alarm dhcp-request                       	: Disable  (default)
-----  more ------
责任编辑:赵宁宁 来源: 攻城狮成长日记
相关推荐

2010-08-31 16:57:13

DHCP SNOOPI

2010-09-29 15:52:15

2010-09-01 15:32:02

DHCP Snoopi

2015-11-16 23:49:39

2010-09-01 09:26:08

2010-09-02 14:39:34

2010-08-31 17:01:31

dhcp snoopi

2010-09-06 14:46:43

2010-09-01 16:11:46

显示DHCP snoo

2010-09-03 11:21:57

2010-08-30 09:15:37

DHCP Snoopi

2010-09-26 14:52:22

DHCP Snoopi

2010-08-30 17:27:43

DHCP Snoopi

2013-11-04 09:15:58

2010-09-27 12:42:31

静态IP dhcp s

2010-09-27 10:40:21

DHCP Snoopi

2010-09-01 09:31:15

2010-09-01 15:42:39

DHCP SnoopiARP

2010-09-01 16:03:51

DHCP Snoopi

2010-08-31 10:17:14

点赞
收藏

51CTO技术栈公众号