网络原理DHCP 安全

动态主机配置协议(DHCP:Dynamic Host Configuration Protocol),提供了一种动态分配网络配置参数的机制。
DHCP协议是一种client/server模式的网络协议
DHCP基本工作流程:发现阶段、提供阶段、请求阶段、确认阶段。
网络原理DHCP 安全_第1张图片
DHCP的6种报文
DHCP discover、DHCP offer、DHCP request、DHCP Ack、DHCP nak、DHCP release。
DHCP discover:DHCP client寻找DHCP sever的阶段。
报文 UDP报文,目的端口号为67,源端口号为68。目的IP地址为有限广播地址255.255.255.255,源IP地址为0.0.0.0.UDP通信无连接不可靠,所以DHCP有消息重传机制。
DHCP offer:提供阶段是DHCP Server 向 DHCP cliednt提供ip地址的阶段。封装在目的端口号为68、源端口号为67的UDP报文中,UDP封装在单播IP报文中,目的ip255.255.255.255源IP为主机ip。协议字段0x11,IP报文封装在广播帧中,MAC地址为sever所对应的地址类型字段0x800。
携带DHCP CLIENT,交易号,transaction id。
DHCP request,广播帧源MAC地址为PC1 mac地址,类型字段0x800,荷载数据广播ip报文。Ip广播目的地址255.255.255.255,源ip地址0.0.0.0,协议字段0x11,荷载数据udp,目的端口号67,源端口号68。荷载DHCPREQUEST,携带DHCP sever标识(sever identifier)。
DHCPACK 确认阶段,R1上的DHCP sever会向PC1上的DHCP client发送一个DHCPACK消息。DHCPACK消息封装在目的端口号为68,源端口号为67的udp报文中,udp又封装在广播ip报文中。Ip报文封装在单播帧里,帧的源mac地址对应dhcp sever所对应的单播mac地址,目的mac地址为pc1的mac地址,类型字段值为0x800.PC1收到DHCPACK消息后,意味着PC首次获得IP地址。PC会检验ip唯一性。
Pc重启后,只需要直接进入第3阶段(请求阶段),以广播帧及广播IP报文的方式发送DHCPREQUEST消息(携带sever identifier)表示希望继续使用上次分配给自己的地址,收到DHCPACK后可以开始继续使用IP地址。若SEVER不能够让PC1继续使用IP地址,回应DHCPNACK。PC1重新从发现阶段开始申请IP地址。

续租:
T1 租期一半,开始单播向sever发送DHCPREQUEST,直到87.5%T2
T2 租期87.5%,广播方式发送DHCPREQUEST,继续请求续租。
租约到期,重新从开始阶段申请IP。

DHCP安全
DHCP Snooping部署在交换机上,其作用类似于在DHCP客户端与DHCP服务器端之间构筑了一道虚拟的防火墙。
DHCP Snooping将交换机上的端口分为两种类型,即信任端口(Trusted端口)和非信任端口(Untrusted端口);与合法的DHCP Server相连接的端口应配置为Trusted端口,其他端口应配置为Untrusted端口。
交换机从Trusted端口接收到DHCP响应报文(例如DHCP Offer报文、DHCP Ack报文等等)后,会转发这些报文,从而保证合法的DHCP Server可以正常地分配IP地址及提供其他网络参数;交换机从Untrusted端口接收到DHCP响应报文(例如DHCP Offer报文、DHCP Ack报文等等)后,会丢弃这些报文,从而阻止仿冒的DHCP Server分配IP地址及提供其他网络参数。

针对dhcp攻击行为:
DHCP饿死攻击:攻击者持续大量地向DHCP Server申请IP地址,直到耗尽DHCP Server地址池中的IP地址,导致DHCP Server不能给正常的用户进行分配。
漏洞分析:DHCP Server是针对CHADDR来分配IP地址的,对于不同的CHADDR,DHCP Server会分配不同的IP地址;DHCP Server无法区分什么样的CHADDR是合法的,什么样的CHADDR是非法的。利用这个漏洞,攻击者每申请一个IP地址时,就在DHCP消息的CHADDR字段中填写一个不同的值,以此来冒充是不同的用户在申请IP地址。
阻止饿死攻击,DHCP Snooping技术支持在端口下对DHCP Request报文的源MAC地址与CHADDR进行一致性检查:如果二者相同,则转发报文;如果二者不相同,则丢弃。如果要在某端口下实施源MAC地址与CHADDR的一致性检查,可以在该端口下使用命令dhcp snooping check dhcp-chaddr enable。
还可能存在这样一种饿死攻击,就是攻击者不断同时变换MAC地址和CHADDR,并且每一次变换时,都让CHADDR与MAC地址相同,如此一来,便可以躲过上述源MAC地址与CHADDR的一致性检查!
全局模式下:DHCP snooping enable
全局模式下:dhcp snooping check dhcp-chaddr enable vlan 1

仿冒DHCP Server攻击:攻击者仿冒DHCP Server,向客户端分配错误的IP地址及提供错误的网关地址等参数,导致客户端无法正常访问网络。
漏洞分析:DHCP客户端接收到来自DHCP Server的DHCP消息后,无法区分这些DHCP消息是来自仿冒的DHCP Server,还是来自合法的DHCP Server。
DHCP Snooping将交换机上的端口分为两种类型,即信任端口(Trusted端口)和非信任端口(Untrusted端口);与合法的DHCP Server相连接的端口应配置为Trusted端口,其他端口应配置为Untrusted端口。
交换机从Trusted端口接收到DHCP响应报文(例如DHCP Offer报文、DHCP Ack报文等等)后,会转发这些报文,从而保证合法的DHCP Server可以正常地分配IP地址及提供其他网络参数;交换机从Untrusted端口接收到DHCP响应报文(例如DHCP Offer报文、DHCP Ack报文等等)后,会丢弃这些报文,从而阻止仿冒的DHCP Server分配IP地址及提供其他网络参数。
关键配置命令:交换机的端口默认是Untrusted端口。如果需要将交换机的某个端口配置为Trusted端口,可以在该端口视图下使用命令dhcp snooping trusted。如果需要将某个Trusted端口恢复为Untrusted端口,可以在该端口视图下使用命令undo dhcp snooping trusted。

DHCP中间人攻击:攻击者利用ARP机制,让PC-A学习到IP-S与MAC-B的映射关系,又让Server学习到IP-A与MAC-B的映射关系。如此一来,PC-A与Server之间交互的IP报文都会经过攻击者中转。
漏洞分析:从本质上讲,中间人攻击是一种Spoofing IP/MAC攻击,中间人利用了虚假的IP地址与MAC地址之间的映射关系来同时欺骗DHCP的客户端和服务器。
我们已经知道,DHCP中间人攻击本质上是一种Spoofing IP/MAC攻击。要想防止DHCP中间人攻击,其实就是要防止Spoofing IP/MAC攻击。
运行了DHCP Snooping的交换机会“侦听(Snooping)”往来于用户与DHCP Server之间的DHCP消息,并从中收集用户的MAC地址(这里的MAC地址是指DHCP消息中CHADDR字段的值)、用户的IP地址(这里的IP地址是指DHCP Server分配给相应CHADDR的IP地址)等信息,这些信息会集中存放在一个数据库中,该数据库也被称为DHCP Snooping绑定表。运行了DHCP Snooping的交换机会建立并动态维护DHCP Snooping绑定表,绑定表中除了包含了用户的MAC地址、用户的IP地址外,还包括IP地址租用期、VLAN-ID等等信息。
假设DHCP Server给PC-A分配了IP地址IP-A,给PC-B分配了IP地址IP-B,那么IP-A与MAC-A就形成了绑定关系,IP-B与MAC-B也形成了绑定关系,这种绑定关系都存放于DHCP Snooping绑定表中。攻击者为了让Server学习到IP-A与MAC-B的映射关系,会发送ARP请求报文(将ARP报文中的源IP地址填为IP-A,源MAC地址填为MAC-B)。交换机接收到ARP请求报文后,会检查该ARP请求报文中的源IP地址和源MAC地址,发现该IP/MAC(IP-A/MAC-B)映射关系不能匹配DHCP Snooping绑定表中的条目,于是会丢弃该ARP请求报文,这样就有效地防止了Spoofing IP/MAC攻击。
如果需要使用上面所描述的防止Spoofing IP/MAC攻击(进而防止中间人)的方法,就必须在交换机的系统视图下执行配置命令arp dhcp-snooping-detect enable。

你可能感兴趣的:(计算机原理,深信服网络竞赛,网络原理,华为网络竞赛,华为深信服网络竞赛网络协议原理)