美文网首页
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协议及其安全防护

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