数据连接层安全之dhcp监听

为什么使用dhcp监听

网络中经常出现有人私接路由器导致部分电脑获取到的IP地址是路由器上面的IP地址,而不是公司的IP地址,导致部分电脑无法上网,使用dhcp监听可以避免有人在网络中私接路由器。

dhcp监听还可以避免dhcp服务器欺骗和地址耗尽。

DHCP服务器欺骗

即客户端将自己配置为DHCP服务器,分派虚假的IP地址及其信息或者直接响应DHCP请求

DHCP地址耗尽

即客户端不断的冒充新客户发送DHCP请求,请求服务器分派IP地址,这样很快耗尽DHCP配置的IP地址池,其他计算机无法使用

dhcp监听将交换机分为两种:信任端口和非信任端口。

比如说客户机2、3、4是正常的工作电脑,但是客户机1接入到了网络中,想冒充dhcp服务器来分发地址,但是由于它连接的交换机端口是非信任端口所以无法发出dhcp服务器响应的数据包,只能发送客户端请求地址的数据包。

dhcp服务器连接的端口是信任端口,那么他就可以发送dhcp响应请求,为请求IP地址的客户机分发IP地址。

使用dhcp监听会建立一个dhcp绑定表,一旦一个连接在非信任端口的客户端获得一个合法的IP地址,则交换机就会在dhcp绑定表中添加一个条目,主要包括客户端的IP地址、MAC地址、端口号、vlan、绑定类型和租期等信息。dhcp绑定表是为了进一步部署IP源防护和动态arp检测做的基础。

在启用dhcp监听的交换机上,交换机可以为dhcp报文插入一些选项信息,以便dhcp服务器可以更精准地知道客户端的信息,在dhcp中包含的这些信息的选项为82。

选项82主要包括dhcp请求报文中进入设备的端口,属于的VLAN、交换机的MAC地址等信息。交换机在dhcp请求报文中插入这些信息,然后发送给dhcp服务器,dhcp服务器可以根据这些信息更加精确的为客户端分配IP地址、设置策略等。

注意:是否启用dhcp报文插入选项82并不影响dhcp原有功能,使用选项82信息可以使dhcp服务器策略设置更加灵活。另外,如果dhcp服务器不支持82,服务器收到dhcp报文中携带选项82信息也不会影响dhcp服务器的原有功能。

默认情况下,启用dhcp监听的交换机对所有非信任端口收到的dhcp请求报文插入选项82信息。

dhcp监听配置:

1)启用监听

Switch(config)#ip dhcp snooping

2)设置dhcp监听作用于那个vlan的命令如下。

Switch(config)#ip dhcp snooping vlan 1

如果设置多个vlan 如,1,3~5

3)配置端口信任或非信任

启用dhcp监听后,默认所有端口为非信任端口,若要配置端口为信任端口,命令如下

Switch(config)#ip dhcp snooping trust

4)报文中插入选项82信息

Switch(config)#ip dhcp snooping information option

5)配置预防dhcp耗尽攻击

通过限制非信任端口dhcp报文速率,减缓dhcp耗尽攻击,在非信任端口配置。

Switch(config-if)#ip dhcp snooping limit rate 15

速率的单位是pps,cisco 2960交换机的范围为1~2048,默认配置为15,如果接口连接的是交换机,可以加大这个数值。

另外,还可以在全局模式下启用核实MAC地址功能,避免dhcp耗尽攻击,配置命令如下

Switch(config)#ip dhcp snooping verify mac-address

启用MAC地址核实功能之后,交换机会检查从非信任端口收到的dhcp请求报文中的源Mac地址和dhcp客户端的mac地址相同,避免虚假MAC地址请求IP实现dhcp耗尽攻击。

当非信任端口的dhcp报文速率大于规定值时就会出现违规情况,端口将进入err-disabled状态,默认情况下不会自动恢复。

手动恢复:现关闭端口在开启端口。

自动恢复:设置一个计时器,即端口进入err-disabled状态后,多长时间自动恢复。命令如下:

Switch(config)#errdisablerecovery cause dhcp-rate-limit

Switch(config)#errdisablerecovery interval 300

需要注意,err-disabled计时器是全局唯一,即无论何种原因使端口进入err-disabled状态,其恢复时间都相同。

6)dhcp监听状态查询

查看当前dhcp监听状态以及各端口情况

Switch#show ip dhcp snooping

查看当前dhcp监听绑定表

Switch#show ip dhcp snooping binding

7)清除dhcp监听绑定表

Switch#clear ip dhcp snooping binding

需要注意:dhcp报文的选项82为dhcp中继使用,dhcp监听使用选项82添加相关客户端信息。

当使用Cisco设备作为dhcp服务区时,如果交换机为dhcp请求报文添加了选项82信息,路由器在收到dhcp报文中发现报文中存在82信息但是,没有发现中继代理,就会认为收到dhcp报文非法,而丢弃改报文,最终导致客户端无法获得IP地址。

让允许被插入选项82信息但无中继的信息通过,命令如下

接口设置

Router(config-if)#ip dhcp relay information trusted

全局设置

Router(config)#ip dhcp relary information trust-all

时间: 2024-08-28 17:15:09

数据连接层安全之dhcp监听的相关文章

SSIS常用的包—WMI数据读取任务和WMI事件监听任务

Windows Management Instrumentation (WMI)是Windows的最高机密之一,它允许你通过一个脚本界面来管理Windows平台.WMI数据读取任务通过WQL语言(WMA专用语言)来 接触管理服务器或者工作平台(例如查看系统日志).查询语句可以将结果输出到变量中.WMI数据读取任务可以完成下面的工作. 在事务日志中查询可能的错误信息 查询正在运行的应用程序 查询在包运行过程中有多少可用RAM 判断有多少可用的磁盘空间 在编辑界面中可以配置WMI数据读取任务,如图3

Oracle几个基础配置问题:ORA-12154: TNS: 无法解析指定的连接标识符、ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务、ORA-12516 TNS监听程序找不到符合协议堆栈要求的可用处理程序

转载地址:http://www.cnblogs.com/zhaoguan_wang/p/5505701.html 问题1:ORA-12154: TNS: 无法解析指定的连接标识符 在一台服务器上部署了Oracle客户端,使用IP/SID的方式访问,老是报ORA-12154错误,而使用tnsnames访问却没有问题,对比了我本机的配置并查阅了一下资料,Easy Connect Naming Method这个东西是Oracle 10g推出的,需要在sqlnet.ora文件中添加EZCONNECT,如

Python黑客编程基础3网络数据监听和过滤

Python黑客编程3网络数据监听和过滤 课程的实验环境如下: •      操作系统:kali Linux 2.0 •      编程工具:Wing IDE •      Python版本:2.7.9 •      涉及到的主要python模块:pypcap,dpkt,scapy,scapy-http 涉及到的几个python网络抓包和分析的模块,dpkt和scapy在kali linux 2.0 中默认已经被安装,如果你的系统中没有需要手动安装一下,下面是软件包安装的简单说明. 在kali下

Python黑客编程3网络数据监听和过滤

Python黑客编程3网络数据监听和过滤 课程的实验环境如下: ?      操作系统:kali Linux 2.0 ?      编程工具:Wing IDE ?      Python版本:2.7.9 ?      涉及到的主要python模块:pypcap,dpkt,scapy,scapy-http 涉及到的几个python网络抓包和分析的模块,dpkt和scapy在kali linux 2.0 中默认已经被安装,如果你的系统中没有需要手动安装一下,下面是软件包安装的简单说明. 在kali下

1-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(来看一下怎么样监听网络数据,监听电脑上位机软件的数据)

首先安装网络监听软件 运行这个软件 这个软件安装到电脑上,默认是监听咱电脑上的网络通信 咱们先监听电脑的软件的网络通信数据,然后再说怎么监听Wi-Fi和APP的软件的网络通信数据 咱就监听咱基础篇的 打开这个上位机 假设这个软件不是咱做的,IP什么信息都不知道,咱为了获取IP地址,咱不停的点击连接和断开 知道ip是 47.93.14.37以后咱设置一下过滤 ip.addr == 47.93.14.37 全部过滤出来了 咱清理软件的数据,同时断开上位机的连接,咱看一下这个上位机从一开始连接到发送和

Angularjs【监听数据的变化】和【如何修改数据】和【数据变化的传播】

一:监听数据的变化: 由于编译仅仅在启动引导时执行一次,这意味着我们的link函数只会被调用一次,那么, 如果数据变化,在界面上将不会有任何反馈,即界面和数据将变得不同步了. 这需要持续监听数据的变化. 好在AngularJS的scope对象可以使用$watch()方法,对建立在其上的变量的变化进行监听: watch(watchExpression,listener,[objectEquality]);watch方法要求传入三个参数: watchExpression - 要监听的表达式,比如:"

安卓实训第十四天---使用ContentProvider共享数据,并且利用ContentResolver监听共享数据

ContentProvider: 一.当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据,但数据访问方式会因数据存储的方式而不同,如:采用文件方式对外共享数据,需要进行文件操作读写数据:采用sharedpreferences共享数据,需要使用sharedpreferences API读写数据.而使用ContentProvider共享数据的好处是统一了数据访问方式. 第二步需要在AndroidManif

vue.js之过滤器,自定义指令,自定义键盘信息以及监听数据变化

一.监听数据变化 1.监听数据变化有两种,深度和浅度,形式如下: vm.$watch(name,fnCb); //浅度 vm.$watch(name,fnCb,{deep:true}); //深度监视 2.实例用法 2.1-1浅度监听:当点击页面,弹出发生变化了,a的值变为1,b的值变为101 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

Vue数据的监听

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="x-ua-compatible" content="IE=edge"> 6 <meta name="viewport" content="width=d