DHCP snooping
一
Dhcp
监听是一种安全特性,它能够过滤来自网络中主机或者其他设备的非信任
dhcp
报文,通过建立并维护
dhcp
监听绑定表。
思科交换机支持在每个
vlan
基础上启用
dhcp
监听,通过这种技术,交换机能够截获二层
vlan
域内所有的
dhcp
报文。通过启用
dhcp
监听,交换机限制用户非信任端口只能够发送
dhcp
请求,丢弃来自于端口的其他
dhcp
报文请求,例如
dhcp offer
报文,并且并非所有来自用户端口的
dhcp
请求都被许可通过,交换机还会比较
dhcp
报文源
mac
地址和客户端的硬件地址,只有两者相同,请求报文还会被转发,否则被抛弃,这样就防止了
dhcp
耗尽攻击,信任端口可以接受
dhcp
所有的报文,连接到
dhcp
服务器的端口设置为信任端口,其他的端口设置为非信任端口,这样就可以防止伪造的
dhcp
服务器来攻击网络了。
Dhcp
还可以对端口报文速度做限制,通过在非信任的端口限制报文速度,可以阻止合法的
dhcp
广播攻击,
dhcp
监听建立一个
dhcp
监听绑定表
(
DHCP Snooping Binding
)。,一旦一个非信任端口的客户端获得了合法的
dhcp offer
,交换机就会自动的在
dhcp
监听表里面添加一个绑定的条目,被容包括了非信任端口的
ip
地址,
mac
地址,端口号,
vlan
编号,租期等信息。
二、
DHCP snooping
配置
Switch(config)#ip dhcp snooping //
打开
DHCP Snooping
功能
Switch(config)#ip dhcp snooping vlan 10 //
设置
DHCP Snooping
功能将作用于哪些
VLAN
Switch(config)#ip dhcp snooping verify mac-adress
//
检测非信任端口收到的
DHCP
请求报文的源
MAC
和
CHADDR
字段是否相同,以防止
DHCP
耗竭攻击,该功能默认即为开启
Switch(config-if)#ip dhcp snooping trust
//
配置接口为
DHCP
监听特性的信任接口,所有接口默认为非信任接口
Switch(config-if)#ip dhcp snooping limit rate 15
//
限制非信任端口的
DHCP
报文速率为每秒
15
个包(默认即为每秒
15
个包)如果不配该语句,则
show ip dhcp snooping
的结果里将不列出没有该语句的端口,可选速率范围为
1-2048
建议:在配置了端口的
DHCP
报文限速之后,最好配置以下两条命令
Switch(config)#errdisable recovery cause dhcp-rate-limit
//
使由于
DHCP
报文限速原因而被禁用的端口能自动从
err-disable
状态恢复
Switch(config)#errdisable recovery interval 30
//
设置恢复时间;端口被置为
err-disable
状态后,经过
30
秒时间才能恢复
Switch(config)#ip dhcp snooping information option
//
设置交换机是否为非信任端口收到的
DHCP
报文插入
Option 82
,默认即为开启状态
Switch(config)#ip dhcp snooping information option allow-untrusted
//
设置汇聚交换机将接收从非信任端口收到的接入交换机发来的带有选项
82
的
DHCP
报文
Switch#ip dhcp snooping binding 000f.1fc5.1008 vlan 10 192.168.10.131 interface fa0/2 expiry 692000 //
特权模式命令;手工添加一条
DHCP
监听绑定条目;
expiry
为时间值,即为监听绑定表中的
lease
(租期)
Switch(config)#ip dhcp snooping database
flash:dhcp_snooping.db
//
将
DHCP
监听绑定表保存在
flash
中,文件名为
dhcp_snooping.db
Switch(config)#ip dhcp snooping database
tftp://192.168.2.5/Switch/dhcp_snooping.db
//
将
DHCP
监听绑定表保存到
tftp
服务器;
192.168.2.5
为
tftp
服务器地址,必须事先确定可达。
URL
中的
Switch
是
tftp
服务器下一个文件夹;保存后的文件名为
dhcp_snooping.db
,当更改保存位置后会立即执行
“
写
”
操作。
Switch(config)#ip dhcp snooping database write-delay 30
//
指
DHCP
监听绑定表发生更新后,等待
30
秒,再写入文件,默认为
300
秒;可选范围为
15-86400
秒
Switch(config)#ip dhcp snooping database timeout 60
//
指
DHCP
监听绑定表尝试写入操作失败后,重新尝试写入操作,直到
60
秒后停止尝试。默认为
300
秒;可选范围为
0-86400
秒
说明:实际上当
DHCP
监听绑定表发生改变时会先等待
write-delay
的时间,然后执行写入操作,如果写入操作失败(比如
tftp
服务器不可达),接着就等待
timeout
的时间,在此时间段内不断重试。在
timeout
时间过后,停止写入尝试。但由于监听绑定表已经发生了改变,因此重新开始等待
write-delay
时间执行写入操作
……
不断循环,直到写入操作成功。
Switch#renew ip dhcp snooping database flash:dhcp_snooping.db
/
特权级命令;立即从保存好的数据库文件中读取
DHCP
监听绑定表。