前言
为什么想写这个系列的文章呢?人生在世过半时间都在与网络打交道,一直热爱甚至有点沉迷,沉淀积累了许多年也掌握不少经验和技巧,而这些经验和技巧的获得离不开互联网上各路网友发布过的经验技术文章和行内网友的启发,而对于我自己的积累却从来没整理过,也不热衷发论文。但人总得有点BT精神,不能一味地索取不分享。暑假遇上疫情,无所事事那就写吧,有时会想万一某天睡着睡着就起不来了是不是就可惜了呢?
第一章 《dhcp-snoping + ipsg 拒绝非法DHCP服务器、拒绝用户随意修改IP地址》
** 第二章 《dhcp snooping + DAI(arp detection)杜绝ARP攻击》**
第三章 《dhcp snooping + dhcp option 82获取设备接入信息》
第四章 《dhcp vander class按终端类型分配地址》
第四章 《dhcp option 识别终端类型》
第五章 《dhcp option 249,121,33下发路由》
第六章 《IPoE认证与 dhcp option 60》
摘要
本系列第一章中介绍过DHCP Snooping + IPSG限制用户随意修改IP地址信息,既然用户只能使用由DHCP服务器分配的IP地址为什么还需要对ARP进行限制呢?源于IPSG是对IP协议的数据包进行合法性校验,而ARP协议的数据包不在IPSG的处理范围内,ARP协议作为以太网通信里的一个重要协议,决定主机发送的数据能不能被交换机正确转发。DAI可以通过DHCP Snooping生产的IP-MAC表项对进入交换机的ARP数据包进行合法性校验,保证LAN内所有主机及路由器网关等设备ARP缓存信息不被恶意修改,杜绝ARP欺骗攻击、IP地址冲突。
以太网交换机转发原理
以太网交换机的工作原理十分简单,在收到以太网帧时主要会对帧头的两个字段进行操作,源MAC地址及目标MAC地址, 前者用于产生或更新MAC转发表的“行数据”,把源客户端的MAC与对应接收端口作为“一行”数据插入或更新行数据的老化时间; 后者用于匹配交换机自身的MAC转发表找到转发端口,如果找不到把以太网帧泛洪(广播)到其他接口,如果后者是一个广播地址FF:FF:FF:FF:FF:FF同样会被转发到其他端口。
ARP协议的作用
假设主机A的IP为10.0.0.1/24,主机B的IP为10.0.0.2/24,A,B两主机同属一个LAN内。
在主机A使用ping命令ping 主机B,ping操作触发生产的ICMP回显请求IP包头部分的源和目标地址将分别被设置成10.0.0.1和10.0.0.2;但由于以太网交换机只根据MAC地址转发,所以数据在被送往交换机前还必须加上帧头,在帧头中附上源和目标MAC,源MAC是A本身的网卡地址,这个操作系统可以获取到,至于目标目标主机B的MAC则需要通过ARP协议进行转换,大概过程就是主机A会有一个ARP缓存表存放着一些IP-MAC的关系,先在缓存找,找不到的话通过ARP请求发送广播在LAN内喊一声谁是10.0.0.2,主机B收到后通过ARP回复告诉A(同时也保存A的IP-MAC信息到本地ARP缓存中),A收到后把得到的IP-MAC信息存到缓存,至此帧头信息填充完成开始发送。
ARP协议的缺陷
一、ARP协议**没有规定系统在自身发送ARP请求后才会接受ARP回复**,也就是只要系统收到ARP回复便会根据ARP包内的信息去更新本地缓存
二、系统**不会检查帧头的源MAC和ARP包里的源MAC信息是否一致**,而直接按照ARP里的信息更新本地ARP缓存
利用ARP协议缺陷的典型网络攻击
假设场景存在有,并且交换机没启用IPSG功能:
主机A(IP:10.0.0.1/24 MAC:00-00-00-00-00-01)
主机B(IP:10.0.0.2/24 MAC: 00-00-00-00-00-02)
网 关(IP:10.0.0.3/24 MAC: 00-00-00-00-00-03)
并且三者各有相互通信过,那么此时各自ARP缓存 都会有另外两个设备的信息:
主机A(10.0.0.2->00-00-00-00-00-02 ; 10.0.0.3->00-00-00-00-00-03)
主机B(10.0.0.1->00-00-00-00-00-01 ; 10.0.0.3->00-00-00-00-00-03)
网 关(10.0.0.1->00-00-00-00-00-01 ; 10.0.0.2->00-00-00-00-00-02)
一、恶意切断目标通信
切断目标主机与网关的通信造成断网,代表软件《网络剪刀手》,基本原理是利用ARP协议的缺陷同时向主机和网关发送精心构造的ARP回复数据,修改目标主机和网关的ARP缓存,比如攻击主机A要切断主机B和网关的通信(切断网关通常就是断网),可以随机把对方缓存修改成一个错误的MAC,当然也可以是攻击主机A的MAC或者其他主机的MAC,本例选用一个LAN内不存在的00-11-22-33-44-55,那么被攻击主机和网关ARP缓存会被修改成以下的状态:
主机B(10.0.0.1->00-00-00-00-00-01 ; 10.0.0.3->00-11-22-33-44-55)
网 关(10.0.0.1->00-00-00-00-00-01 ; 10.0.0.2->00-11-22-33-44-55)
当主机B和网关之间再次尝试通信时因为帧头目标MAC会根据本地ARP缓存查询到结果填充成不存在的00-11-22-33-44-55,交换机收到后在MAC转发表查询不到目标端口的话会泛洪广播到其他接口,实际上对方是能收到的,但是由于目标地址并不是网关或则主机B本身,网卡不会把数据送到系统处理。(网卡正常情况下只会接收目标MAC为自身、广播、组播三种类型的帧)
二、中间人攻击(数据窃听,通信控制)
对目标主机之间的通信进行窃听及控制,代表软件《聚生网管》;过程与上一个例子手法类似,诱导被攻击双方把数据都转发到攻击者主机,由攻击者再转发给通信双方,所以称之为“中间人攻击”,因为被攻击双方的数据都由攻击者代为中转,所以攻击者可以窃听、切断、限流、甚至篡改被攻击主机之间的数据。
例如还是主机A作为攻击者,试图控制主机B和网关的通信(通俗来讲就是监听或控制主机B上网行为),那么攻击者主机A会通过ARP回复数据把被攻击者的缓存修改成如下状态,和前一个例子不同的就是必须修改成攻击者自身的MAC地址,也就是00-00-00-00-00-01。
主机B(10.0.0.1->00-00-00-00-00-01 ; 10.0.0.3->00-00-00-00-00-01)
网 关(10.0.0.1->00-00-00-00-00-01 ; 10.0.0.2->00-00-00-00-00-01)
应对ARP攻击的完美策略
对于ARP攻击的防护功能,在各大厂家的交换机操作文档中会给出许多种防护方法,看的人眼花缭乱,光H3C就在操作文档里面给了10种防御配置,我曾逐个分析思考过,根据前面对ARP攻击的分析会发现,实际是攻击者对外发送的ARP数据包中声称的源IP-源MAC关系信息与实际情况不符导致的,只要确保ARP数据包中生产的IP-MAC信息是正确的就可以避免被攻击的可能,那么在有了第一章IPSG的基础配置后,因为用户无法自行配置IP地址,所有IP由DHCP服务器统一分配,交换机通过DHCP Snooping得到接入主机的IP-MAC信息,对进入交换机的ARP数据包内声称的源IP-源MAC信息进行对比,丢弃不符合的ARP数据包。
DAI就是利用DHCP Snooping嗅探到的的IP-MAC信息表项对进入交换机的ARP数据包进行合法性校验
应对ARP攻击,DHCP Snooping + IPSG + DAI 无疑是一个完美的解决方案。
配置实例
根据第一章《dhcp-snooping + ipsg 拒绝非法DHCP服务器、拒绝用户随意修改IP地址》的配置基础,在已启用DHCP Snooping 和 IPSG的基础上,对客户端所在的VLAN启用DAI(ARP Detection)
一、配置信任接口
因为网关也需要发送ARP数据包请求获取客户端的MAC信息,而网关作为DHCP客户端,所以交换机DHCP Snooping不会嗅探到网关的IP-MAC信息,所以需要对连接到网关一侧的端口设置为信任端口,不对由信任端口发送过来的ARP数据包进行校验。
[Switch] interface gigabitethernet 1/0/1
[Switch-GigabitEthernet1/0/1] arp detection trust
二、在客户端所在的VLAN启用DAI(ARP Detection),假设拓扑图中两个客户端和网关均属VLAN1
[Switch] vlan 1
[Switch-vlan1] arp detection enable
其他信息
一、只启用DAI其实也能实现类似IPSG限制用户手工设置IP地址强制使用DHCP服务器分配的功能,只是用户仍然可以伪造IP源地址进行DOS类的攻击,对上层设备带来安全隐患,所以建议IPSG和DAI一同开启。
二、本章在解析“利用ARP协议缺陷的典型网络攻击”是的场景为什么要假设交换机没启用IPSG功能的原因是,当开启了IPSG后,例子中的“中间人攻击“实际上无法实现,因为攻击者尝试转发数据时会因为帧头源MAC和IP包头源IP地址与DHCP Snooping记录的IP-MAC信息不匹配而被丢弃,直接造成被攻击主机断网。
版权归原作者 weixin_44645270 所有, 如有侵权,请联系我们删除。