zoukankan      html  css  js  c++  java
  • DHCP协议

    0x00:前言

    DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP client)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址和域名等信息,并能够提升地址的使用率。简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。

    0x01:地址分配方式

    (1)手动分配:一般用在固定主机,管理员手动分配IP地址,一般不会再改变

    (2)动态分配:注意每次登录的地址都不一样,随机,每次使用完后,DHCP客户端就得释放这个IP地址,以给其他客户端使用

    (3)自动分配:自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址。IP地址于MAC地址绑定,只要交换机不重启,绑定关系不变。IP地址和MAC绑定,可一定程度上防止DHCP欺骗。

    :如果局域网中有两台相同IP地址的主机,那么先上线的那个可以上网,原因:基于ARP缓存表,先上线的更新了网关的ARP映射表。经常断网

    0x02:流程

    (1)DHCP Discover     

    DHCP Discover,客户端广播请求IP地址

    计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。

    源地址:0.0.0.0

    目标地址:255.255.255.255  (目标是广播地址)

    源MAC:主机的物理地址

    目的MAC:ff:ff:ff:ff:ff:ff:ff

    (2)DHCP Offer

     服务器的DHCP响应

     源地址:192.168.1.1

    目的:255.255.255.255    (广播地址,因为主机还没有地址)    

     源MAC:服务器的物理地址

     目的MAC:ff:ff:ff:ff:ff:ff:ff

    报文内容:分配的IP、网关、DNS服务器和域名、租约时间和续约时间(续约:当时间在50%客户端会request服务器 进行续约,如服务器没有回应,则在租期87.5%时间再次request)

    :再次之前,服务器可能会,用ICMP ECHO REQUEST 报文进行检查该IP地址是否被占用

    (3)DHCP Request

    客户端以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。

    源地址:0.0.0.0

    目的地址:255.255.255.255

    (4)DHCP ACK

    当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户端可以使用它提供的IP地址。然后,DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除了DHCP客户机选中的DHCP服务器外,其他的DHCP服务器将收回曾经提供的IP地址。

    源地址:192.168.1.1

    目的地址:255.255.255.255

    :以上全部是广播方式,后面续约是单播方式

    0x03:Cisco 路由器配置DHCP

    Router>en
    Router#config t

    Router(config)#ip dhcp pool aaa (创建地址池)
    Router(dhcp-config)#network 192.168.1.0 255.255.255.0 (地址池范围)
    Router(dhcp-config)#default-router 192.168.1.1 (默认网关)
    Router(dhcp-config)#dns-server 192.168.1.2 (dns-server服务)
    Router(dhcp-config)#int fa 0/0
    Router(config-if)#ip address 192.168.1.1 255.255.255.0 (路由端口IP)
    Router(config-if)#no shutdown
    Router(config-if)#exit
    Router(config)#ip dhcp excluded-address 192.168.1.200 192.168.1.253 (表示某一段IP地址不由DHCP分配)
    Router(config)#ip dhcp excluded-address 192.168.1.254 (表示某一个IP地址不由DHCP分配)

    PC:

    0x04:DHCP欺骗

    DHCP欺骗(DHCP Sproofing)

    DHCP Sproofing同样是一种中间人攻击方式。DHCP是提供IP地址分配的服务。当局域网中的计算机设置为自动获取IP,就会在启动后发送广播包请求IP地址。DHCP服务器(如路由器)会分配一个IP地址给计算机。在分配的时候,会提供DNS服务器地址。

    攻击者可以通过伪造大量的IP请求包,而消耗掉现有DHCP服务器的IP资源。当有计算机请求IP的时候,DHCP服务器就无法分配IP。这时,攻击者可以伪造一个DHCP服务器给计算机分配IP,并指定一个虚假的DNS服务器地址。这时,当用户访问网站的时候,就被虚假DNS服务器引导到错误的网站。

    DHCP Sproofing成功的前提是有计算机请求IP。如果计算机使用静态IP,或者在攻击前就获取IP,就不会遭受这类攻击。

    Kali Linux很多工具都提供支持DHCP Sproofing,如Ettercap。

    攻击命令式:
    [root@localhost dhcpstarv-0.2.1]# dhcpstarv -i eth0
    后面的eth0是你的网卡接口,一般第一个网卡是eth0
    开始不断申请IP地址

    DHCP欺骗的解决方案(DHCP SNOOPING)
    DHCP SNOOPING截获交换机端口的DHCP应答报文,建立-张包含有用户MAC地址、IP地址、 租用期、VLAN ID、交换机端口等信息的一张表,组DHCP SNOOPING还将交换机的端口分为可信任端口和不可信任端口,当交换机从一个不可信任端口收到DHCP服务器的报文时,比如DHCPOFFER报文、DHCPACK报文、DHCPNAK报文,交换机会直接将该报文弃;对信任端口收到的DHCP服务器的报文,交换机不会丢弃而直接转发。一般将与用户相连的端口定义为不可信任端口,而将与DHCP服务器或者其他交换机相连的端口定义河信任端口,也就是说,当在一个不可信任端口连接有DHCP服务器的话,该服务器发出的报文将不能通过交换机的端口。因此只要将用户端口设置为不可信任端口,就可以有效地防止非授权用户私自设置DHCP服务而引起的DHCP欺骗。

    IP地址冲突 

    在同一个局域网中,如果两台计算机同时使用了相同的IP地址,或者其中一台计算机已经通过DHCP获得IP地址了,同时其他计算机手动分配了与此相同的IP地址。其中一台计算机无法正常上网。IP地址冲突也是ARP攻击的一部分,这种攻击可以在局域网中产生大量的ARP通信,造成局域网闭塞。黑客只要不断地发出伪造的ARP响应数据,就能更改目标计算机ARP缓存中的IP/MAC地址信息,造成目标计算机不断显示IP地址冲突,无法正常上网。

  • 相关阅读:
    zabbix监控docker
    Ubuntu下Zabbix结合percona监控mysql数据
    centos7安装ftp
    Ubuntu 16.04 搭建 ELK
    ubuntu网卡配置及安装ssh服务
    CentOS7.5二进制安装MySQL-5.6.40
    生产环境MySQL数据库集群MHA上线实施方案
    Mysql主从复制
    GIt+jenkins代码自动上线
    虚拟机网卡丢失解决方法
  • 原文地址:https://www.cnblogs.com/liqik/p/12343655.html
Copyright © 2011-2022 走看看