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

特点:

  1. 1.dhcp服务器上的配置的网关不一定要有这个ip
  2. 2.dhcp服务只是个类似数据库而已(如果不在一个lan).
  3. 3. 如果dhcp不在一个lan,pc广播所到交换机口的地方, 需要ip helper-address dhcp服务器地址, 广播转单播.
  4. 4. 协议弱点: 耗尽攻击+假冒攻击

dhcp数据包:

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

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

正常的dhcp配置

dhcp实验环境

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

同一个广播域数据包



dhcp的ack报文必要性

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

dhcp中继-广播转单播

参考

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

  1. 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.
  2. 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):
  3. Spanning Tree Protocol (STP)
  4. Cisco Discovery Protocol (CDP)
  5. Dynamic Trunking Protocol (DTP)
  6. Dynamic Host Configuration Protocol (DHCP)
  7. Hot Standby Router Protocol (HSRP)
  8. IEEE 802.1Q
  9. IEEE 802.1X
  10. Inter-Switch Link Protocol (ISL)
  11. VLAN Trunking Protocol (VTP)

dhcp耗尽攻击

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

参考

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

伪造dhcp服务器攻击

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

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

dhcp消息类型

dhcp的一个典故

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

DHCPINFORM会什么时候发出呢?

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

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



参考

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

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

  1. 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
  2. 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. C#介绍

    1.c#与.net框架 c#属于.net框架的一个子集. 2..net框架 3.BCL 基类库 4.编译过程 5.运行过程 6.总结 7.CLR

  2. Sea Battle CodeForces - 729D

    题意: 有n个格子,a条船,每条船占b个格子.事先已经射击了k个格子,且这k次射击不会射到船上,求再射击几次可以射到某一条船的某一部分 思路: 观察样例可以发现,如果五个0,船的长度是3,那么这五个0 ...

  3. python tkinter-布局

      包装布局pack() 目前对它的感觉是,当一个窗体的对象都设置完属性后,最后用它来绑定到窗体上.之后就不能再设置属性了 名称 描述 取值范围 expand 当值为“yes”时,side选项无效.组 ...

  4. Chameleon

    # -*- coding: utf-8 -*- """ Created on Tue Dec 18 09:55:16 2018 @author: Mark,LI &quo ...

  5. 一个基于C++11的定时器队列(timerfd,poll实现)

    目录 前言 优点 test 源代码 @ 前言 最近小程序要用到定时器,找了一圈也没找到合适的,最后还是绕回来选择了muduo里面的TimerQueue,整理了下它的代码,独立了出来,因为实在懒得从头写 ...

  6. FastDFS_v4.06安装简记

    提前准备所需4个包:FastDFS_v4.06.tar.gzfastdfs-nginx-module_v1.16.tar.gzlibevent-2.0.20-stable.tar.gznginx-1. ...

  7. php创建udp Server

    <?php//服务器信息$server = 'udp://127.0.0.1:7002';//----UDP Server$msgEof = "\n";$socket = s ...

  8. Java并发程序设计(五)JDK并发包之线程复用:线程池

    线程复用:线程池 一.为什么需要线程池 为了避免系统频繁地创建和销毁线程,使用线程池让线程进行复用.(即创建线程变成了从线程池中获取空闲线程,销毁线程变成了把线程放回线程池中.) 二.JDK对线程池的 ...

  9. pycharm引入numpy报错:ImportError: Importing the multiarray numpy extension module failed. Most likely you are trying to import a failed build of numpy.

    软件为pycharm,安装了anaconda. 我一开始的报错为,PyCharm中无法调用numpy,报错ModuleNotFoundError: No module named 'numpy',这个 ...

  10. android studio 中去除应用标题栏

    android studio 中去除应用标题栏 ㈠ ⒈ mainifests中设置: android:theme="@style/AppTheme"(即默认设置). ⒉ value ...