(一)Cisco DHCP Snooping原理(转载)
采用DHCP服务的常见问题
架设DHCP服务器可以为客户端自动分配IP地址、掩码、默认网关、DNS服务器等网络参数,简化了网络配置,提高了管理效率。但在DHCP服务的管理上存在一些问题,常见的有:
●DHCP Server的冒充
●DHCP Server的DOS攻击,如DHCP耗竭攻击
●某些用户随便指定IP地址,造成IP地址冲突
DHCP Server的冒充
由于DHCP服务器和客户端之间没有认证机制,所以如果在网络上随意添加一台DHCP服务器,它就可以为客户端分配IP地址以及其他网络参数。只要让该DHCP服务器分配错误的IP地址和其他网络参数,那就会对网络造成非常大的危害。
DHCP Server的拒绝服务攻击
通常DHCP服务器通过检查客户端发送的DHCP请求报文中的CHADDR(也就是Client MAC address)字段来判断客户端的MAC地址。正常情况下该CHADDR字段和发送请求报文的客户端真实的MAC地址是相同的。攻击者可以利用伪造MAC的方式发送DHCP请求,但这种攻击可以使用Cisco 交换机的端口安全特性来防止。端口安全特性(Port Security)可以限制每个端口只使用唯一的MAC地址。但是如果攻击者不修改DHCP请求报文的源MAC地址,而是修改DHCP报文中的CHADDR字段来实施攻击,那端口安全就不起作用了。由于DHCP服务器认为不同的CHADDR值表示请求来自不同的客户端,所以攻击者可以通过大量发送伪造CHADDR的DHCP请求,导致DHCP服务器上的地址池被耗尽,从而无法为其他正常用户提供网络地址,这是一种DHCP耗竭攻击。DHCP耗竭攻击可以是纯粹的DOS攻击,也可以与伪造的DHCP服务器配合使用。当正常的DHCP服务器瘫痪时,攻击者就可以建立伪造的DHCP服务器来为局域网中的客户端提供地址,使它们将信息转发给准备截取的恶意计算机。甚至即使DHCP请求报文的源MAC地址和CHADDR字段都是正确的,但由于DHCP请求报文是广播报文,如果大量发送的话也会耗尽网络带宽,形成另一种拒绝服务攻击。
客户端随意指定IP地址
客户端并非一定要使用DHCP服务,它可以通过静态指定的方式来设置IP地址。如果随便指定的话,将会大大提高网络IP地址冲突的可能性。
DHCP Snooping技术介绍
DHCP监听(DHCP Snooping)是一种DHCP安全特性。Cisco交换机支持在每个VLAN基础上启用DHCP监听特性。通过这种特性,交换机能够拦截第二层VLAN域内的所有DHCP报文。
DHCP监听将交换机端口划分为两类:
●非信任端口:通常为连接终端设备的端口,如PC,网络打印机等
●信任端口:连接合法DHCP服务器的端口或者连接汇聚交换机的上行端口
通过开启DHCP监听特性,交换机限制用户端口(非信任端口)只能够发送DHCP请求,丢弃来自用户端口的所有其它DHCP报文,例如DHCP Offer报文等。而且,并非所有来自用户端口的DHCP请求都被允许通过,交换机还会比较DHCP 请求报文的(报文头里的)源MAC地址和(报文内容里的)DHCP客户机的硬件地址(即CHADDR字段),只有这两者相同的请求报文才会被转发,否则将被丢弃。这样就防止了DHCP耗竭攻击。
信任端口可以接收所有的DHCP报文。通过只将交换机连接到合法DHCP服务器的端口设置为信任端口,其他端口设置为非信任端口,就可以防止用户伪造DHCP服务器来攻击网络。DHCP监听特性还可以对端口的DHCP报文进行限速。通过在每个非信任端口下进行限速,将可以阻止合法DHCP请求报文的广播攻击。
DHCP监听还有一个非常重要的作用就是建立一张DHCP监听绑定表(DHCP Snooping Binding)。一旦一个连接在非信任端口的客户端获得一个合法的DHCP Offer,交换机就会自动在DHCP监听绑定表里添加一个绑定条目,内容包括了该非信任端口的客户端IP地址、MAC地址、端口号、VLAN编号、租期等信息。如:
|
Switch#show ip dhcp snooping binding |
这张DHCP监听绑定表为进一步部署IP源防护(IPSG)和动态ARP检测(DAI)提供了依据。说明:
I. 非信任端口只允许客户端的DHCP请求报文通过,这里只是相对于DHCP报文来说的。其他非DHCP报文还是可以正常转发的。这就表示客户端可以以静态指定IP地址的方式通过非信任端口接入网络。由于静态客户端不会发送DHCP报文,所以DHCP监听绑定表里也不会有该静态客户端的记录。
信任端口的客户端信息不会被记录到DHCP监听绑定表里。如果有一客户端连接到了一个信任端口,即使它是通过正常的DHCP方式获得IP地址,DHCP监听绑定表里也不有该客户端的记录。如果要求客户端只能以动态获得IP的方式接入网络,则必须借助于IPSG和DAI技术。
II.交换机为了获得高速转发,通常只检查报文的二层帧头,获得目标MAC地址后直接转发,不会去检查报文的内容。而DHCP监听本质上就是开启交换机对DHCP报文的内容部分的检查,DHCP报文不再只是被检查帧头了。
III. DHCP监听绑定表不仅用于防御DHCP攻击,还为后续的IPSG和DAI技术提供动态数据库支持。
IV. DHCP监听绑定表里的Lease列就是每个客户端对应的DHCP租约时间。当客户端离开网络后,该条目并不会立即消失。当客户端再次接入网络,重新发起DHCP请求以后,相应的条目内容就会被更新。如上面的00F.1FC5.1008这个客户端原本插在Fa0/1端口,现在插在Fa0/3端口,相应的记录在它再次发送DHCP请求并获得地址后会更新为:
|
Switch#show ip dhcp snooping binding |
V.当交换机收到一个DHCPDECLINE或DHCPRELEASE广播报文,并且报文头的源MAC地址存在于DHCP监听绑定表的一个条目中。但是报文的实际接收端口与绑定表条目中的端口字段不一致时,该报文将被丢弃。
●DHCPRELEASE报文:此报文是客户端主动释放IP 地址(如Windows 客户端使用ipconfig/release),当DHCP服务器收到此报文后就可以收回IP地址,分配给其他的客户端了
●DHCPDECLINE报文:当客户端发现DHCP服务器分配给它的IP地址无法使用(如IP地址发生冲突)时,将发出此报文让DHCP服务器禁止使用这次分配的IP地址。
VI. DHCP监听绑定表中的条目可以手工添加。
VII. DHCP监听绑定表在设备重启后会丢失,需要重新绑定,但可以通过设置将绑定表保存在flash或者tftp/ftp服务器上,待设备重启后直接读取,而不需要客户端再次进行绑定
VIII. 当前主流的Cisco交换机基本都支持DHCP Snooping功能。
DHCP Option 82
当DHCP服务器和客户端不在同一个子网内时,客户端要想从DHCP服务器上分配到IP地址,就必须由DHCP中继代理(DHCP Relay Agent)来转发DHCP请求包。DHCP中继代理将客户端的DHCP报文转发到DHCP服务器之前,可以插入一些选项信息,以便DHCP服务器能更精确的得知客户端的信息,从而能更灵活的按相应的策略分配IP地址和其他参数。这个选项被称为:DHCP relay agent information option(中继代理信息选项),选项号为82,故又称为option 82,相关标准文档为RFC3046。
Option 82是对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报文信息。但在IOS 12.2(25)SE版本之后,汇聚交换机可以通过在全局模式下配置一条ip dhcp snooping information allow-untrusted命令。这样汇聚交换机就会接收从边界交换机发来的插入选项82的DHCP报文信息,并且也为这些信息建立DHCP监听绑定表条目。
在配置汇聚交换机下联口时,将根据从边界交换机发送过来的数据能否被信任而设置为信任或者非信任端口。
(一)Cisco DHCP Snooping原理(转载)的更多相关文章
- Cisco DHCP Snooping + IPSG 功能实现
什么是DHCP? DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,前身是BOOTP协议, 使用UDP协议工作,常用的2个端口 ...
- (四)Cisco dhcp snooping实例2-多交换机环境(DHCP服务器和DHCP客户端位于不同VLAN)
试验拓扑 环境:dhcp server和客户端处于不同网段的情况 dhcp server的配置 no ip routing ip dhcp pool vlan27 network 172.28.27. ...
- (三)Cisco dhcp snooping实例1-单交换机(DHCP服务器和DHCP客户端位于同一VLAN)
环境:cisco dhcp server和客户端都属于vlan27,dhcp server 接在交换机G0/1,客户端接在交换机的G0/2 cisco dhcp server相关配置 ip dhcp ...
- (五)Cisco dhcp snooping实例3-多交换机环境(DHCP服务器和DHCP客户端位于同VLAN)
试验拓扑 环境:dhcp server和dhcp客户端属于同vlan,但是客户端属于不同的交换机,在L2和L3交换机开启dhcp snooping后得出如下结论 L3交换机的配置 ip dhcp po ...
- (二)Cisco dhcp snooping配置解释
#配置dhcp snooping相关命令 Switch(config)#ip dhcp snooping //打开DHCP Snooping功能Switch(config)#ip dhcp snoo ...
- DHCP、DHCP Snooping及DHCP relay工作原理入门及实践(转)
原文https://blog.51cto.com/5167020/2312718 序:DHCP服务相对简单,写本文的目的是为了讲一些DHCP安全方面的技术. 1.DHCP基础 DHCP 全称动态主机配 ...
- DHCP snooping
DHCP snooping 技术介绍 DHCP监听(DHCP Snooping)是一种DHCP安全特性.Cisco交换机支持在每个VLAN基础上启用DHCP监听特性.通过这种特性,交换机能够拦截第 ...
- linux下DHCP服务原理总结
DHCP(全称Dynamic host configuration protocol):动态主机配置协议DHCP工作在OSI的应用层,可以帮助计算机从指定的DHCP服务器获取配置信息的协议.(主要包括 ...
- DHCP snooping(DHCP监听)
DHCP监听可以防范利用DHCP发起的多种攻击行为,如DHCP中间人攻击,伪造多台设备耗尽地址池 DHCP监听允许可信端口上的所有DHCP消息,但是却过滤非可信端口上的DHCP消息,DHCP监听还会在 ...
随机推荐
- 【转载】使用宝塔对Linux系统进行界面化管理操作
腾讯云服务器和阿里云服务器的Centos系统都是没有Linux系统的一个版本,Centos系统的操作都是在没有类似Windows图形化操作界面的黑框框命令窗口进行操作的,需要使用到很多Linux操作命 ...
- 【强烈推荐】ok-admin 一个好看又好用的后台模版!!!
ok-admin 一个很赞的,扁平化风格的,响应式布局的后台管理模版,旨为后端程序员减压! 目前一共有两个版本:ok-admin v1.0和ok-admin v2.0可自由选择! 源码地址:https ...
- 三星手机使用应用沙盒一键修改路由mac数据
之前文章介绍了怎么在安卓手机上安装激活xposed框架,xposed框架的极强的功能大家都知道,能够不修改apk的前提下,修改系统底层的参数,打比方在某些应用情景,大家需要修改手机的某个系统参数,这情 ...
- mysql DDL数据定义语言
DDL数据定义语言 本节涉及MySQL关键字:create.alter(rename,add,chang,modify,drop).drop.delete.truncate等. -- 创建表:-- 数 ...
- 最佳移动端h5自适应rem适配方案
一.利用lib-flexible.postcss-plugin-px2rem插件 进行移动端rem适配. 1.第一 引入lib-flexible . 安装lib-flexible: npm i lib ...
- 【Docker】docker的安装和常用命令
一.docker安装和启动 1.yum 命令 yum install docker 2.docker启动命令 sudo systemctl start docker 二.docker常用命令 dock ...
- bat文件中运行python脚本方法
在脚本中使用start命令: @echo off start python xxx.py 注: start命令:启动单独的“命令提示符”窗口来运行指定程序或命令.如果在没有参数的情况下使用,start ...
- Java中的乐观锁
1.前言 之前好几次看到有人在面经中提到了乐观锁与悲观锁,但是一本<Java Concurrency In Practice>快看完了都没有见到过这两种锁,今天终于在第15章发现了它们的踪 ...
- C++(四十七) — 文件输入、输出流
1.文件输入.输出流 由于文件设备并不像显示器屏幕与键盘那样是标准默认设备,不能像cout那样预先定义的全局对象,所以我们必须自己定义一个该类的对象. ifstream类,它是从istream类派生 ...
- 关于缩短cin时间的方法
std::ios::sync_with_stdio(false);