ROS软路由论坛 ROSABC.com 网络方案网络工程交流

 找回密码
 会员注册

QQ登录

只需一步,快速开始

Cisco交换机DHCP Snooping功能

2014-10-13 13:02| 发布者: admin| 查看: 2149| 评论: 0

摘要:   由于DHCP服务器和客户端之间没有认证机制,所以如果在网络上随意添加一台DHCP服务器,它就可以为客户端分配IP地址以及其他网络参数。只要让该DHCP服务器分配错误的IP地址和其他网络参数,那就会对网络造成非常大 ...

  由于DHCP服务器和客户端之间没有认证机制,所以如果在网络上随意添加一台DHCP服务器,它就可以为客户端分配IP地址以及其他网络参数。只要让该DHCP服务器分配错误的IP地址和其他网络参数,那就会对网络造成非常大的危害。

  通常DHCP服务器通过检查客户端发送的DHCP请求报文中的CHADDR(也就是ClientMACaddress)字段来判断客户端的MAC地址。正常情况下该CHADDR字段和发送请求报文的客户端真实的MAC地址是相同的。者可以利用伪造MAC的方式发送DHCP请求,但这种可以使用Cisco交换机的端口安全特性来防止。端口安全特性(PortSecurity)可以每个端口只使用唯一的MAC地址。但是如果者不修改DHCP请求报文的源MAC地址,而是修改DHCP报文中的CHADDR字段来实施,那端口安全就不起作用了。由于DHCP服务器认为不同的CHADDR值表示请求来自不同的客户端,所以者可以通过大量发送伪造CHADDR的DHCP请求,导致DHCP服务器上的地址池被耗尽,从而无法为其他正常用户提供网络地址,这是一种DHCP耗竭。DHCP耗竭可以是纯粹的DOS,也可以与伪造的DHCP服务器配合使用。当正常的DHCP服务器瘫痪时,者就可以建立伪造的DHCP服务器来为局域网中的客户端提供地址,使它们将信息转发给准备截取的恶意计算机。甚至即使DHCP请求报文的源MAC地址和CHADDR字段都是正确的,但由于DHCP请求报文是报文,如果大量发送的话也会耗尽网络带宽,形成另一种服务。

  3、客户端随意指定IP地址

  客户端并非一定要使用DHCP服务,它可以通过静态指定的方式来设置IP地址。如果随便指定的话,将会大大提高网络IP地址冲突的可能性。

  (snooping)是一种DHCP安全特性。Cisco交换机支持在每个VLAN基础上启用DHCP特性。通过这种特性,交换机能够拦截第二层VLAN域内的所有DHCP报文。

  将交换机端口划分为两类:

  ●非信任端口:通常为连接终端设备的端口,如PC,网络打印机等

  通过DHCP特性,交换机用户端口(非信任端口)只能够发送DHCP请求,丢弃来自用户端口的所有其它DHCP报文,例如DHCPOffer报文等。而且,并非所有来自用户端口的DHCP请求都被允许通过,交换机还会比较DHCP请求报文的(报文头里的)源MAC地址和(报文内容里的)DHCP客户机的硬件地址(即CHADDR字段),只有这两者相同的请求报文才会被转发,否则将被丢弃。这样就防止了DHCP耗竭。信任端口可以接收所有的DHCP报文。通过只将交换机连接到DHCP服务器的端口设置为信任端口,其他端口设置为非信任端口,就可以防止用户伪造DHCP服务器来网络。DHCP特性还可以对端口的DHCP报文进行限速。通过在每个非信任端口下进行限速,将可以DHCP请求报文的。DHCP还有一个非常重要的作用就是建立一张DHCP绑定表(snoopingBinding)。一旦一个连接在非信任端口的客户端获得一个的DHCPOffer,交换机就会自动在DHCP绑定添加一个绑定条目,内容包括了该非信任端口的客户端IP地址、MAC地址、端口号、VLAN编号、租期等信息。如:

  这张DHCP绑定表为进一步部署IP源防护(IPSG)和动态ARP检测(DAI)提供了依据。说明:

  I.非信任端口只允许客户端的DHCP请求报文通过,这里只是相对于DHCP报文来说的。其他非DHCP报文还是可以正常转发的。这就表示客户端可以以静态指定IP地址的方式通过非信任端口接入网络。由于静态客户端不会发送DHCP报文,所以DHCP绑定也不会有该静态客户端的记录。信任端口的客户端信息不会被记录到DHCP绑定。如果有一客户端连接到了一个信任端口,即使它是通过正常的DHCP方式获得IP地址,DHCP绑定也不有该客户端的记录。如果要求客户端只能以动态获得IP的方式接入网络,则必须借助于IPSG和DAI技术。

  II.交换机为了获得高速转发,通常只检查报文的二层帧头,获得目标MAC地址后直接转发,不会去检查报文的内容。而DHCP本质上就是交换机对DHCP报文的内容部分的检查,DHCP报文不再只是被检查帧头了。

  绑定表不仅用于防御DHCP,还为后续的IPSG和DAI技术提供动态数据库支持。

  绑定的Lease列就是每个客户端对应的DHCP租约时间。当客户端离开网络后,该条目并不会立即消失。当客户端再次接入网络,重新发起DHCP请求以后,相应的条目内容就会被更新。如的00F.1FC5.1008这个客户端原本插在Fa0/1端口,现在插在Fa0/3端口,相应的记录在它再次发送DHCP请求并获得地址后会更新为:

  V.当交换机收到一个DHCPDECLINE或DHCPRELEASE报文,并且报文头的源MAC地址存在于DHCP绑定表的一个条目中。但是报文的实际接收端口与绑定表条目中的端口字段不一致时,该报文将被丢弃。

  ●DHCPRELEASE报文:此报文是客户端主动IP地址(如Windows客户端使用ipconfig/release),当DHCP服务器收到此报文后就可以收回IP地址,分配给其他的客户端了

  ●DHCPDECLINE报文:当客户端发现DHCP服务器分配给它的IP地址无法使用(如IP地址发生冲突)时,将发出此报文让DHCP服务器使用这次分配的IP地址。

  绑定表中的条目可以手工添加。

  绑定表在设备重启后会丢失,需要重新绑定,但可以通过设置将绑定表保存在flash或者tftp/ftp服务器上,待设备重启后直接读取,而不需要客户端再次进行绑定

  当DHCP服务器和客户端不在同一个子网内时,客户端要想从DHCP服务器上分配到IP地址,就必须由DHCP中继代理(DHCPRelayAgent)来转发DHCP请求包。DHCP中继代理将客户端的DHCP报文转发到DHCP服务器之前,可以插入一些选项信息,以便DHCP服务器能更精确的得知客户端的信息,从而能更灵活的按相应的策略分配IP地址和其他参数。这个选项被称为:DHCPrelayagentinformationoption(中继代理信息选项),选项号为82,故又称为option82,相关标准文档为RFC3046。Option82是对DHCP选项的扩展应用。选项82只是一种应用扩展,是否携带选项82并不会影响DHCP原有的应用。另外还要看DHCP服务器是否支持选项82。不支持选项82的DHCP服务器接收到插入了选项82的报文,或者支持选项82的DHCP服务器接收到了没有插入选项82的报文,这两种情况都不会对原有的基本的DHCP服务造成影响。要想支持选项82带来的扩展应用,则DHCP服务器本身必须支持选项82以及收到的DHCP报文必须被插入选项82信息。从非信任端口收到DHCP请求报文,不管DHCP服务器和客户端是否处于同一子网,了DHCP功能的Cisco交换机都可以选择是否对其插入选项82信息。默认情况下,交换机将对从非信任端口接收到的DHCP请求报文插入选项82信息。

  路由器地址租期当一台DHCP的汇聚交换机和一台插入了选项82信息的边界交换机(接入交换机)相连时:

  ●如果边界交换机是连接到汇聚交换机的信任端口,那么汇聚交换机会接收从信任端口收到的插入选项82的DHCP报文信息,但是汇聚交换机不会为这些信息建立DHCP绑定表条目。

  ●如果边界交换机是连接到汇聚交换机的非信任端口,那么汇聚交换机会丢弃从该非信任端口收到的插入了选项82的DHCP报文信息。但在IOS12.2(25)SE版本之后,汇聚交换机可以通过在全局模式下配置一条ipsnoopinginformationallow-untrusted命令。这样汇聚交换机就会接收从边界交换机发来的插入选项82的DHCP报文信息,并且也为这些信息建立DHCP绑定表条目。

  limitrate15//非信任端口的DHCP报文速率为每秒15个包(默认即为每秒15个包)如果不配该语句,则showipsnooping的结果里将不列出没有该语句的端口,可选速率范围为1-2048

  :在配置了端口的DHCP报文限速之后,最好配置以下两条命令

  //设置恢复时间;端口被置为err-disable状态后,经过30秒时间才能恢复

  说明:实际上当DHCP绑定表发生改变时会先等待write-delay的时间,然后执行写入操作,如果写入操作失败(比如tftp服务器不可达),接着就等待timeout的时间,在此时间段内不断重试。在timeout时间过后,停止写入尝试。但由于绑定表已经发生了改变,因此重新开始等待write-delay时间执行写入操作……不断循环,直到写入操作成功。

  1、单交换机(DHCP服务器和DHCP客户端位于同一VLAN)

  2960交换机相关配置:

  说明:

  ●本例中交换机对于客户端的DHCP请求报文将插入选项82信息;也可以通过配置noipsnoopinginformationoption命令选择不插入选项82信息。两种情况都可以。

  ●DHCP特性的vlan并不需要该vlan的三层接口被创建。

  2、单交换机(DHCP服务器和DHCP客户端位于同一VLAN)

  这是因为交换机配置了(默认情况)ipsnoopinginformationoption,此时交换机会在客户端发出的DHCP请求报文中插入选项82信息。另一方面由于DHCP服务器(这里指CiscoIOSDHCP服务器)与客户端处于同一个VLAN中,所以请求实际上并没有经过DHCP中继代理。

  对于CiscoIOSDHCP服务器来说,如果它收到的DHCP请求被插入了选项82信息,那么它会认为这是一个从DHCP中继代理过来的请求报文,但是它检查了该报文的giaddr字段却发现是0.0.0.0,而不是一个有效的IP地址(DHCP请求报文中的giaddr字段是该报文经过的第一个DHCP中继代理的IP地址,具体请参考DHCP报文格式),因此该报文被认为“非法”,所以将被丢弃。可以参考由器上的DHCP的debug过程。

  III、WindowsDHCP服务器应该没有检查这类DHCP请求的机制,所以上一个实例中不论交换机是否插入选项82信息,客户端总是可以得到IP地址。

  3、单交换机(DHCP服务器和DHCP客户端位于不同VLAN)

  说明:

  4、多交换机(DHCP服务器和DHCP客户端位于不同VLAN)

  说明:

  5、多交换机(DHCP服务器和DHCP客户端位于同一VLAN)

  3560交换机相关配置:

  说明:

  本例中3560和2960同时了DHCP功能。从2960过来的DHCP请求报文是已经被插入了选项82信息,如果将3560的Gi0/1设置为信任端口,那么插入了82选项的DHCP请求报文是允许通过的,但不会为其建立DHCP绑定表。即3560上只有PC1的绑定条目,而没有PC2的绑定条目。

  如果此时同时部署DAI,IPSG,由于2960不支持这两项功能,对于3560来说,从2960上过来的数据可能存在IP和ARP等,是不安全的。另一方面,由于3560没有PC2的绑定条目,而DAI和IPSG必须依赖DHCP绑定表。因此如果需要在3560上再部署DAI或者IPSG,就不能将3560的Gi0/1设置为信任端口。

  但是将3560的Gi0/1口设置为非信任端口以后,默认情况下,非信任端口将会丢弃收到的插入了82选项的DHCP请求报文。而从2960过来的DHCP请求报文又正好是被插入了选项82信息的。因此必须配置ipsnoopinginformationoptionallow-untrusted命令,否则3560将丢弃这些DHCP请求报文,接在2960上的PC2将得不到IP地址。只有配置了该命令以后,3560才会接收从2960发送的插入了选项82的DHCP报文,并为这些信息建立绑定条目。

  3560下联的Gi0/1口由于信任端口,默认限速为每秒15个DHCP请求报文,如果2960上的所有PC都同时发起DHCP请求,可能此端口会被errdisable掉。这里假设2960为24口,因此简单的设置限速为2415=360。

  6、多交换机(DHCP服务器和DHCP客户端位于同一VLAN)

  4503交换机相关配置:

  说明:

  本例中4503和3560同时了DHCP功能。由于4503的下联口被设置为信任端口,所以从3560过来的DHCP请求报文即使已经被插入了选项82信息,也允许通过的,但不会为其建立DHCP绑定表。所以4503上只有PC1的绑定条目,而没有PC2的绑定条目。

  作为接入层交换机的3560支持DAI,IPSG,如果同时配置这两项功能,那么有理由相信从3560过来的数据是已经经过检验的安全数据,因此将4503的下联口设置为信任端口是可行的。另外,4503没有PC2的绑定条目,也减少了系统运行时所需的内存空间。

不良信息举报Q:2000617

软路由

不良信息举报Q:2000617|Archiver|ROS软路由论坛 ROSABC.com 网络方案网络工程交流

GMT+8, 2024-5-15 02:50 , Processed in 0.194606 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部