DHCP Snooping
DHCP监听(DHCP Snooping)是一种DHCP安全特性,通常在接入层交换机上采用。Cisco交换机支持在每个VLAN基础上启用DHCP监听,通过这种特性,交换机能够拦截第二层VLAN域内的所有DHCP报文。DHCP监听通过建立和维护DHCP Snooping Binding Table(DHCP监听绑定表)过滤来自不信任区域的DHCP信息。DHCP Snooping绑定表包含不信任区域用户的MAC地址、IP地址、租用期、VlanID、接口等信息,但是不保存信任区域设备的信息。
DHCP Snooping
DHCP监听将交换机端口划分为两类:
信任端口(Trust):连接合法DHCP服务器的端口或者连接汇聚交换机的上行端口;
非信任端口(Untrusted):通常为连接终端设备的端口,如PC,网络打印机等。
通过开启DHCP监听特性,交换机限制用户端口(非信任端口)只能够发送DHCP请求,丢弃来自用户端口的所有其它DHCP报文,例如DHCP Offer报文等。而且,并非所有来自用户端口的DHCP请求都被允许通过,交换机还会比较DHCP请求报文的(报文头里的)源MAC地址和(报文内容里的)DHCP客户机的硬件地址(即CHADDR字段),只有这两者相同的请求报文才会被转发,否则将被丢弃,这样就防止了DHCP耗竭攻击。信任端口可以接收并转发所有的DHCP报文。通过只将交换机连接到合法DHCP服务器的端口设置为信任端口,其他端口设置为非信任端口,就可以防止用户伪造DHCP服务器来攻击网络。DHCP监听特性还可以对端口的DHCP报文进行限速,超过速率的接口将被关闭。通过在每个非信任端口下进行限速,将可以阻止合法DHCP请求报文的广播攻击。DHCP监听还有一个非常重要的作用就是建立一张DHCP监听绑定表,这张表一是通过DHCP Request或Ack包中的IP和MAC地址生成的,二是可以手工指定。一旦一个连接在非信任端口的客户端获得一个合法的DHCP Offer,交换机就会自动在DHCP监听绑定表里添加一个绑定条目,内容包括了该非信任端口的客户端的MAC地址、IP地址、租用期、VlanID、接口等信息。
说明:
①非信任端口只允许客户端的DHCP请求报文通过,这里只是相对于DHCP报文来说的。其他非DHCP报文还是可以正
②交换机为了获得高速转发,通常只检查报文的二层帧头,获得目标MAC地址后直接转发,不会去检查报文的内
③DHCP监听绑定表不仅用于防御DHCP攻击,还为后续的DAI和IPSG技术提供动态数据库支持。
④DHCP监听绑定表里的Lease列就是每个客户端对应的DHCP租约时间。当客户端离开网络后,该条目并不会立即
⑤当交换机收到一个DHCP Decline或DHCP Release广播报文,并且报文头的源MAC地址存在于DHCP监听绑定表的
⑥DHCP监听绑定表中的条目可以手工添加。
⑦DHCP监听绑定表在设备重启后会丢失,需要重新绑定,但可以通过设置将绑定表保存在Flash或TFTP/FTP服务
⑧当前主流的Cisco交换机基本都支持DHCP Snooping功能。
DHCP Snooping的作用:
1.DHCP Snooping的主要作用就是通过配置非信任端口,隔绝非法的DHCP Server;
2.DHCP Snooping与交换机DAI的配合,防止ARP病毒的传播;
3.DHCP Snooping建立和维护一张DHCP Snooping监听绑定表,这张表是后续DAI(Dynamic Arp Inspect)和IPSG
Cisco开启DHCP Snooping后的一些默认值:
1.默认关闭,所有端口都为非信任端口,“no ip dhcp snooping trust”;
2.默认关闭,汇聚交换机丢弃从非信任端口收到的接入交换机发来的带有Option-82 Information的DHCP报文,
3.默认开启,为非信任端口收到的DHCP包插入Option 82,“ip dhcp snooping information option”;
4.默认开启,限制对非信任接口DHCP包的转发速率为15个/s,“ip dhcp snooping limit rate 15”;
5.默认开启,检测源MAC地址和CHADD字段是否相同,“ip dhcp snooping verify mac-address”;
6.默认开启,DHCP监听绑定表发生更新后,默认等待300s后再写入文件,
7.默认开启,DHCP监听绑定表尝试写入操作失败后,默认直到300s后停止尝试,
Option 82
它被称为DHCP Relay Agent Information Option(DHCP中继代理信息选项),选项号为82,故被称为Option 82,相关标准文档为RFC3046。当DHCP服务器和客户端不在同一个子网内时,客户端要想从DHCP服务器上分配到IP地址,就必须由DHCP中继代理(DHCP Relay Agent)来转发DHCP请求包。DHCP中继代理将客户端的DHCP报文转发到DHCP服务器之前,可以插入一些选项信息,以便DHCP服务器能更精确的得知客户端的信息,从而能更灵活地按相应的策略分配IP地址和其他参数。
DHCP中继代理(Option 82、DHCP Snooping)和DHCP Server之间的关系:
1.交换机开启了DHCP Snooping功能后,默认情况下,将对从非信任端口收到的DHCP请求报文插入选项82信息;
2.以Windows Server 2003为DHCP的服务器不认为Option 82的值为0的DHCP请求报文是错误的;
说明:
当一台开启DHCP监听的汇聚交换机和一台插入了选项82信息的边界交换机(接入交换机)相连时:
①如果边界交换机是连接到汇聚交换机的信任端口,那么汇聚交换机会接收从信任端口收到的插入选项82的DHCP
②如果边界交换机是连接到汇聚交换机的非信任端口,那么汇聚交换机会丢弃从该非信任端口收到的插入了选项
③在配置汇聚交换机下联口时,将根据从边界交换机发送过来的数据能否被信任而设置为信任或者非信任端口。
总之:要想支持选项82的扩展应用,则DHCP服务器本身必须支持选项82以及收到的DHCP报文必须被插入选项82信息。一般二层交换机都支持选项82功能,通常只支持一部分,完全支持的很少。
DHCP Snooping实验
配置命令
说明:“ip dhcp snooping binding 000f.1fc5.1008 vlan 10 192.168.10.131 int f1/2 expiry 692000”条
1、单机交换(DHCP服务器和DHCP客户端位于同一VLAN)
环境:Windows2003 DHCP服务器和客户端都位于Vlan 10;服务器接在F0/1,客户端接在F0/2。
2960交换机相关配置:
说明:
①本例中交换机对于客户端的DHCP请求报文将插入选项82信息,也可以通过配置“no ip dhcp snooping
②客户端端口推荐配置“spanning-tree portfast”命令,使得该端口不参与生成数计算,节省端口启动时间,
③开启DHCP监听特性的VLAN并不需要该VLAN的三层接口被创建。
2、单交换机(DHCP服务器和DHCP客户端位于同一VLAN)
环境:Cisco IOS DHCP服务器(2821路由器)和PC客户端都位于Vlan 10;路由器接在F0/1,客户端接在F0/2。
2960交换机相关配置:
2821路由器相关配置:
说明:
①需要注意的是路由器连接到交换机的端口需要配置“ip dhcp relay information trusted”命令,否则客户
②对于Cisco IOS DHCP服务器来说,如果它收到的DHCP请求被插入了选项82信息,那么它会认为这是一个从DHCP
③Cisco IOS里有一个命令,专门用来处理这类DHCP请求报文“ip dhcp relay information trusted”(接口命
④如果交换机不插入选项82信息,即配置了“no ip dhcp
⑤Windows DHCP服务器则不认为Option 82的值为0.0.0.0的DHCP报文是错误的,所以上一个实例中不论交换机是
3、单交换机(DHCP服务器和DHCP客户端位于不同VLAN)
环境:Cisco IOS DHCP服务器(2821路由器)的IP地址为192.168.2.2,位于Vlan 2;DHCP客户端位于Vlan 10;交换机为3560,路由器接在F0/1,客户端接在F0/2。
3560交换机相关配置:
2821路由器相关配置:
说明:
①本例中的路由器不需要配置“ip dhcp relay information trusted”命令,因为从交换机过来的DHCP请求经
4、多交换机环境(DHCP服务器和DHCP客户端位于不同VLAN)
环境:2611路由器作为DHCP服务器,IP地址为192.168.2.2,位于Vlan 2;PC位于Vlan 10;路由器接在3560的G0/2,PC接2960的F0/1口,两交换机互连口都是G0/1。
3560交换机相关配置:
2960交换机相关配置:
2611路由器相关配置:
说明:
①本例中3560没有开启DHCP监听功能,2960开启了该功能。需要注意的是int vlan 10需要配置“ip dhcp
5、多交换机(DHCP服务器和DHCP客户端位于同一VLAN)
环境:3560交换机自身作为DHCP服务器;PC1和PC2都位于Vlan 10;PC1接3560的F0/1口,PC2接2960的F0/1口;两交换机互连口都是G0/1。
3560交换机相关配置:
2960交换机相关配置:
说明:
①本例中3560和2960同时开启了DHCP监听功能。从2960过来的DHCP请求报文是已经被插入了选项82信息,如果将
②如果此时同时部署DAI,IPSG,由于2960不支持这两项功能,对于3560来说,从2960上过来的数据可能存在IP
③但是将3560的G0/1口设置为非信任端口以后,默认情况下,非信任端口将会丢弃收到的插入了82选项的DHCP请
④3560下联的G0/1口由于是非信任端口,默认限速为每秒15个DHCP请求报文,如果2960上的所有PC都同时发起
⑤2960上联的G0/1口必须被配置为信任端口,否则将丢弃从3560过来的DHCP应答报文,PC2将无法得到IP地址。
6、多交换机环境(DHCP服务器和DHCP客户端位于同一VLAN)
环境:4503交换机自身作为DHCP服务器;PC1和PC2都位于Vlan 10;PC1接4503的G2/1口,PC2接3560的F0/1口;两交换机互连口是4503 G1/1 -- 3560 G0/1。
4503交换机相关配置:
3560交换机相关配置:
说明:
①本例中4503和3560同时开启了DHCP监听功能。由于4503的下联口被设置为信任端口,所以从3560过来的DHCP请
②作为接入层交换机的3560支持DAI,IPSG,如果同时配置这两项功能,那么有理由相信从3560过来的数据是已