回顾了下,真是以前是一种感觉以后是一种感觉.

特点:

1.dhcp服务器上的配置的网关不一定要有这个ip

2.dhcp服务只是个类似数据库而已(如果不在一个lan).

3. 如果dhcp不在一个lan,pc广播所到交换机口的地方, 需要ip helper-address dhcp服务器地址, 广播转单播.
4. 协议弱点: 耗尽攻击+假冒攻击

dhcp数据包:

https://github.com/lannyMa/scripts/blob/master/pkgs/dhcp/

正常的dhcp机制学会了,更有意思的有dhcp攻击(1, dhcp耗尽攻击(交换机Port-Security防止) 2,dhcp假冒攻击,dhcp snooping解决)

正常的dhcp配置

dhcp实验环境

在server端
Router(config)#no ip dhcp conflict logging 关闭冲突记录信息
Router(config)#ip dhcp pool p1 启用DHCP功能,起个名字
Router(dhcp-config)#network 12.1.1.0 255.255.255.0 地址池
Router(dhcp-config)#default-router 12.1.1.1 配置网关
Router(dhcp-config)#dns-server 202.96.128.68 配置DNS
Router(dhcp-config)#lease 10 修改租期为10天
Router(config)#ip dhcp excluded-address 12.1.1.1 12.1.1.10 保留这十个地址,不下放,通常这些地址是给其它固定设备用的。 Debug ip dhcp server packet
Show ip dhcp binding 查看ip地址和mac地址的绑定 Router(config)#ip dhcp ping packets 3 DHCP服务器在分配一个地址之前,要先对这个地址PING一下(默认PING两个包),用来确定这个地址是否已被其他主机所用。 在client端:
Router(config-if)#ip address dhcp
show dhcp lease 显示学习到的地址
show dhcp server 显示学习到的其它信息

同一个广播域数据包



dhcp的ack报文必要性

参考:对比dns和dhcp,写的还挺不错的

dhcp中继-广播转单播

参考

R2(config)#intface f0/0
R2(config-if)#ip helper-address 23.1.1.3 这个地址是DHCP服务器的地址 R3(config)#ip dhcp pool p1
R3(dhcp-config)#network 12.1.1.0 255.255.255.0 注意:在DHCP服务器上还必须有去PC所在网段的路由 注意:ip helper-address 命令默认情况下会转发8种UDP广播包,会占用带宽,建议关掉其他7种广播包的转发。 R1(config)#no ip forward-protocol udp ***

中继数据包:

OPTION 82

所谓Option 82是DHCP报文中的一个选项,支持option 82的接入交换机在做DHCP Relay的时候会在DHCP请求报文中的Option 82字段写入信息,包括交换机的MAC地址(这是对交换机的定位),以及DHCP请求是从交换机的那个端口进入网络的。利用这一功能,DHCP不仅仅可以提供IP和MAC的关联,还可以成功的将IP地址和计算机的物理接入位置有机的结合在一起。这对Trouble shooting、攻击定位都给予了极大的帮助。

dhcp防攻

这个东西可以模拟, 利用了二层协议的一些漏洞

http://www.yersinia.net/index.htm

Yersinia is a network tool designed to take advantage of some weakeness in different network protocols. It pretends to be a solid framework for analyzing and testing the deployed networks and systems.

Currently, there are some network protocols implemented, but others are coming (tell us which one is your preferred). Attacks for the following network protocols are implemented (but of course you are free for implementing new ones):

Spanning Tree Protocol (STP)
Cisco Discovery Protocol (CDP)
Dynamic Trunking Protocol (DTP)
Dynamic Host Configuration Protocol (DHCP)
Hot Standby Router Protocol (HSRP)
IEEE 802.1Q
IEEE 802.1X
Inter-Switch Link Protocol (ISL)
VLAN Trunking Protocol (VTP)

dhcp耗尽攻击

另外阅读: 交换机原理/macof

参考

防范策略: 交换机端口安全. 通过Port-Security技术来限制交换机每个端口可以学习到的最大MAC地址数量, show mac-address-table

伪造dhcp服务器攻击

防范策略: 交换机开启dhcp snooping

关于无线ap自动发现控制器选项dhcp option43配置

dhcp消息类型

dhcp的一个典故

为了便于理解,我们把DHCP客户机比做餐馆里的客人,DHCP服务器比做服务员(一个餐馆里也可以有多个服务
员),IP地址比做客户需要的食物。那么可以这样描述整个过程:客人走进餐馆,问:“有没有服务员啊?”
(DHCPdiscover),多个服务员同时回答:“有,我这有鸡翅”“有,我这有汉堡”(DHCPoffer)。客人说:“好
吧,我要一份汉堡”(DHCPrequest,这个客人比较死板,总是选择第一次听到的食物),端着汉堡的服务员回应了
一声:“来啦”(DHCPack),并把食物端到客人面前,供其享用(将网卡和IP地址绑定)。客人下次来的时候,就
直接找上次那个服务员点自己喜欢的汉堡了(DHCPrequest),如果还有汉堡,服务员会再次确认并上菜(DHCPack)
而如果已经卖完了,服务员则会告诉客人:“不好意思,已经卖完了”(DHCPnack)。当然,服务员隔一段时间会
来收拾一次桌子,除非客人特别说明这菜还要继续吃的,服务员会将剩菜端走。

DHCPINFORM会什么时候发出呢?

我发现我的内网中有很多这类的数据包. 它们可能都有配了固定的ip,同时内网dhcp服务器(三层交换)上有dhcp,我查了下,这些ip里,没有dhcp分配记录.

但是我没自己模拟出来, 网上查了下何时会发这种包, 都说的不是很清晰.



参考

如果客户端通过其他方式获取了网络地址或具有手动配置的IP地址,则客户端工作站可能会使用DHCPINFORM请求消息来获取其他本地配置参数,例如域名和域名服务器(DNS)。接收DHCPINFORM消息的DHCP服务器使用适合于客户端的任何本地配置参数构造DHCPACK消息,而不分配新的IP地址。这个DHCPACK将被单播发送给客户端。

这里有讨论,但是没说清楚

DHCPINFORM: If a client has obtained a network address through some other means or has a manually configured IP address, a client workstation may use a DHCPINFORM request message to obtain other local configuration parameters, such as the domain name and Domain Name Servers (DNSs). DHCP servers receiving a DHCPINFORM message construct a DHCPACK message with any local configuration parameters appropriate for the client without allocating a new IP address. This DHCPACK will be sent unicast to the
client.

[na][dhcp]dhcp细枝末节&dhcp防攻的更多相关文章

  1. DHCP欺骗(DHCP Sproofing)

    DHCP欺骗(DHCP Sproofing)   DHCP Sproofing同样是一种中间人攻击方式.DHCP是提供IP地址分配的服务.当局域网中的计算机设置为自动获取IP,就会在启动后发送广播包请 ...

  2. 编写脚本实现DHCP服务与DHCP中继自动化执行

    编写脚本实现DHCP服务与DHCP中继自动化执行 本脚本是在liunx搭建DHCP服务器以及DHCP中继服务器实验环境下实现的https://www.cnblogs.com/yuzly/p/10539 ...

  3. liunx搭建DHCP服务器以及DHCP中继服务器

    liunx搭建DHCP服务器以及DHCP中继服务器 一.实验拓扑 二.实验条件 虚拟机取消VMnet1和VMnet8的dhcp动态获取ip地址,以免影响实验 DHCPserver 网关以及DHCP中继 ...

  4. Python的网络编程[4] -> DHCP 协议[0] -> DHCP 的基本理论

    DHCP协议 / DHCP Protocol 目录 DHCP 基本理论 DHCP 通信流程 DHCP 完整报文 DHCP 的 Optional 字段 DHCP 的报文类型 1 DHCP 基本理论 DH ...

  5. Python的网络编程[4] -> DHCP 协议[1] -> DHCP 的 Python 实现

    DHCP实现 / DHCP Implement 目录 DHCP 服务器建立过程 DHCP 报文加码实现过程 下面介绍建立一个简单的DHCP服务器,主要用于对基本的DHCP请求进行响应,目前只提供一个I ...

  6. DHCP snooping(DHCP监听)

    DHCP监听可以防范利用DHCP发起的多种攻击行为,如DHCP中间人攻击,伪造多台设备耗尽地址池 DHCP监听允许可信端口上的所有DHCP消息,但是却过滤非可信端口上的DHCP消息,DHCP监听还会在 ...

  7. CentOS-1810系统DHCP服务器ISC DHCP软件配置说明

    DHCP 全称Dynamic Host configuration protocol, 动态主机配置协议.是一个局域网的网络协议,使用UDP协议工作,它可以为客户机自动分配IP地址.子网掩码以及缺省网 ...

  8. Debian9.5系统DHCP服务器ISC DHCP软件配置说明

    DHCP 全称Dynamic Host configuration protocol, 动态主机配置协议.是一个局域网的网络协议,使用UDP协议工作,它可以为客户机自动分配IP地址.子网掩码以及缺省网 ...

  9. (五)Cisco dhcp snooping实例3-多交换机环境(DHCP服务器和DHCP客户端位于同VLAN)

    试验拓扑 环境:dhcp server和dhcp客户端属于同vlan,但是客户端属于不同的交换机,在L2和L3交换机开启dhcp snooping后得出如下结论 L3交换机的配置 ip dhcp po ...

随机推荐

  1. 【猿分享第10期】微信小程序Meetup扫盲专场回顾(转载)

    首先感谢答疑师:子慕 前端工程师,目前就职于医联,偶尔写点博客,吐槽总结,偶尔吟“湿”作对,润滑万物,江湖人称子慕大诗人. 直播间语音回放收听,请微信扫描下图二维码授权进入即可. 以下为本次直播的全部 ...

  2. go语言学习-接口

    Go语言中虽然没有传统面向对象语言中类.集成的概念,不过提供了接口的支持,可以使用接口来使用一些面向对象的特性. 在 go 语言中,的接口有下面几个特点: 可以包含0个或多个方法的签名 只定义方法的签 ...

  3. OutputStreramWriter和InputStreamReader类

    整个IO类中除了字节流和字符流还包括字节和字符转换流. OutputStreramWriter将输出的字符流转化为字节流 InputStreamReader将输入的字节流转换为字符流 但是不管如何操作 ...

  4. 利用Solr服务建立的站内搜索雏形

    最近看完nutch后总感觉像好好捯饬下solr,上次看到老大给我展现了下站内搜索我便久久不能忘怀.总觉着之前搭建的nutch配上solr还是有点呆板,在nutch爬取的时候就建立索引到solr服务下, ...

  5. BZOJ.2453.维护队列([模板]带修改莫队)

    题目链接 带修改莫队: 普通莫队的扩展,依旧从[l,r,t]怎么转移到[l+1,r,t],[l,r+1,t],[l,r,t+1]去考虑 对于当前所在的区间维护一个vis[l~r]=1,在修改值时根据是 ...

  6. ModelForm的使用

    from django.forms import Form,ModelForm,fields,widgets as wd class QueModelForm(ModelForm): class Me ...

  7. C++ 类模板基础知识

    类模板与模板类 为什么要引入类模板:类模板是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类 ...

  8. centos7环境下对防火墙的操作

    我是运行了systemctl stop firewalld.service && systemctl disabl e firewalld.service命令于是显示 [root@in ...

  9. webstorm更改字体大小

    webstorm是一款不错的开发软件,一起来看看webstorm怎么更改字体大小. 1,打开该软件后,点击上面菜单栏的“文件”/File,找到其子菜单中的“设置”/Setting,点击打开. 2,在新 ...

  10. C# 论接口的意义---共享协议

    我对接口的理解: 接口是一种协议.是一种模型. 我认为接口的意义: 接口更好的实现了项目资源共享 , 指定了可共享的范围 , 允许可使用而不可篡改的项目资源 . 我认为接口和模型是一类的: 接口一般与 ...