美文网首页
DHCP协议及其安全防护

DHCP协议及其安全防护

作者: 又增加了奇奇怪怪的知识 | 来源:发表于2020-09-15 18:12 被阅读0次

文中大量参考TCP/IP协议详解。
我们应该有进一步的勇气,也要有退一步的从容。

1. DHCP作用

(Dynamic Host Configuration Protocol) 动态主机配置协议。DHCP服务器主要使用UDP67、68号端口进行通讯。其中UDP67号端口作用于客户端发起的请求,UDP68是服务器应答时使用。

2. DHCP原理

也成为DHCP租约过程,分为四个步骤:

  • Clinet发送DHCP DISCOVER广播包;
  • 所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文;DHCP Offer报文含有DHCP Server能够提供给DHCP Client使用的IP地址,且DHCP Server会将自己的IP地址也放在其中,用于区分不同DHCP Server;
  • DHCP Client只能处理其中的一个DHCP Offer报文,一般的原则是DHCP Client处理最先收到的DHCP Offer报文。DHCP Client会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址;
    • 部分未被选择的DHCP服务器会发送拒绝包(不再提供这个IP给clinet使用)。根据DHCP服务器的操作系统、软件版本不同做出的反应也不同;
  • DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息;
  • DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程;
  • DHCP Client在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址,DHCP Server收到DHCP Release报文后,会回收相应的IP地址并重新分配。

3. DHCP续约

  • 租期达到50%(T1)时,DHCP客户端会自动以单播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。
  • 当租期达到87.5%(T2)时,如果仍未收到DHCP服务器的应答,DHCP客户端会自动以广播的方式向DHCP服务器发送DHCP REQUEST报文,请求更新IP地址租期。如果收到DHCP服务器回应的DHCP ACK报文,则租期更新成功(即租期从0开始计算);如果收到DHCP NAK报文,则重新发送DHCP DISCOVER报文请求新的IP地址。windows:若租期达到T2阶段时,客户端发送DHCP REQUEST报文未得到响应,会释放该网络地址,重新发送DHCP DISCOVER请求,若还未能得到回应,那么网卡会给自己分配一个地址。(全球统一无效地址:169.254.0.0/16)
  • 如果租期时间到时都没有收到服务器的回应,客户端停止使用此IP地址,重新发送DHCP DISCOVER报文请求新的IP地址。
  • 当租约未到期时,客户端重启重新发起DHCP DISCOVER请求,服务器会按正常通讯流程将未过期的IP及其相关信息重新下发。

4. 攻击思路

  • 伪造MAC地址,持续发送Discovery包,获得IP地址后,进行确认。直到耗尽IP地址池。

  • 伪造DHCP服务器,提供错误的信息给客户端的网卡。

5. 防御思路

  • 硬件防护:在管理交换机的端口上做MAC地址动态绑定/静态绑定。防止不法客户端伪造MAC地址。

  • 网络防护:在管理交换机上,除合法的DHCP服务器所在接口外,全部设置为禁止发送DHCP OFFER包。

6.部署DHCP服务,Linux版部署,windows的太简单不宜演示。

6.1 初始化DHCP Server环境
  • 我使用的是克隆我的模板机器,我的模板机器目前已经将firewalld,SELinux已经禁用。
systemctl disable firewalld && sed -i #SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config && setenforce 0
6.2 安装DHCP Server
  • 这边常规yum安装即可。
yum install -y dhcp
  • 设置开机启动。
systemctl enable dhcpd
6.3 修改配置文件
  • 主配置文件在/etc/dhcp/dhcpd.conf
[root@localhost ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example      可以看到这里是有一个示例文件的
#   see dhcpd.conf(5) man page
#
  • 看看我们的示例配置文件。
# 以下配置为通用选项
option domain-name "ns.lqh.com";  #此项为DNS域名
option domain-name-servers 192.168.85.241, 192.168.84.241; #此项为DNS Server服务器选项

default-lease-time 600;  #此项为租约时间
max-lease-time 7200;   #此项为最大租约时间

# 是否启用动态DNS更新,通常被设置为interim(none:不支持动态更新/interim:互动更新模式/特殊更新模式)。
ddns-update-style none;

#是否为权威DHCP服务器
#authoritative;

#拷贝指向系统日志收集系统
log-facility local7;

# 定义子网  这里只能提供网卡所在网段的子网则否报错“提示没有配置任何监听端口”
subnet 192.168.85.0 netmask 255.255.255.0 {
  range 192.168.85.20 192.168.85.250;
  #option domain-name-servers ns1.internal.example.org;
  #option domain-name "internal.example.org";
  option routers 192.168.85.1;
  option broadcast-address 192.168.85.255;
  #default-lease-time 600;
  #max-lease-time 7200;
}

#作用于某台主机
host lqh_desktop {
  hardware ethernet 00:0c:29:e0:e8:a3;
  fixed-address 192.168.85.3;
}

6.4 启动服务,并检查端口情况。
systemctl start dhcpd && netstat -anulp | grep "67|68"

7.抓包验证整个协议通讯过程。

  • 字段太多不能一一细扣,容易把自己绕进去。

  • DHCP Release(客户端释放租约信息,其中重要信息:单播、客户端IP、mac地址、消息的类型、server的IP、server不做回应)。

release.png
  • DHCP Discover (客户端广播请求server的回应,包含有自己的mac地址,消息类型、ip地址、和参数请求列表)。
discover.png
  • DHCP offer(这里server发出的不仅包含分配给clinet的ip,还有子网掩码,dns等信息)。
offer.png
  • DHCP request (确认选择,广播形式)
request.png
  • DHCP ack(确认时会重新下发ip、子网掩码、网关、dns等信息)。
ack.png

相关文章

  • DHCP协议及其安全防护

    文中大量参考TCP/IP协议详解。我们应该有进一步的勇气,也要有退一步的从容。 1. DHCP作用 (Dynami...

  • DHCP原理与实现

    DHCP,DNS和HTTP是3种常见的高层协议。 一、动态主机配置协议DHCP 1、DHCP简介 DHCP(Dyn...

  • 第2章 TCP/IP协议族及其安全隐患

    考试大纲 掌握TCP/IP协议的内容 掌握网络层协议及其安全威胁 掌握TCP和UDP协议及其安全威胁 计算机网络 ...

  • DHCP

    DHCP是Bootstrap协议的一种扩展,基于UDP协议。 DHCP有3个端口: DHCP Server的端口号...

  • linux下DHCP服务原理总结

    DHCP(全称Dynamic host configuration protocol):动态主机配置协议 DHCP...

  • DHCP协议

    DHCP协议原理 DHCP动态主机配置协议TCP/IP协议想要运行正常的话,网络中的主机和路由器不可避免地需要配置...

  • DHCP协议

    前面介绍了IPv4地址和IPv6地址,但是一个主机是如何获取IP地址的呢?本文就介绍一个中动态获取IP地址的协议—...

  • DHCP协议

    概念 (动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动...

  • 💛TWO、DHCP安装和配置

    ?DHCP安装和配置 DHCP动态主机设置协议,是一个局域网的网络协议,使用UDP协议工作,可以快速分配IP...

  • 【网络】DHCP协议浅析

    动态主机配置协议(DHCP)是一个应用层协议,传输层使用了UDP协议。 交互过程 1. 发现阶段 由于不知DHCP...

网友评论

      本文标题:DHCP协议及其安全防护

      本文链接:https://www.haomeiwen.com/subject/kiwfyktx.html