基于Raspberry Pi的ARP欺骗检测保护方案1

2019-08-17 08:05吴栋淦
惠州学院学报 2019年3期
关键词:网段交换机数据包

吴栋淦

(福建信息职业技术学院 计算机工程系,福建 福州 350003)

1 背景介绍

1.1 ARP攻击介绍

ARP地址解析协议是一种以太网技术中非常重要的协议,该协议用于将IP地址映射为硬件MAC地址.由于ARP协议本身存在的缺陷,导致以太网络中针对ARP协议的攻击层出不穷.ARP协议的漏洞可被利用来进行网络监听[1]、网络欺骗,由于以太网协议简单,相应设备种类较少,要对以太网严防死守存在较大困难.近年来以太网技术的发展主要集中在速度的提升上,安全协议并没有根本改善,而随着入侵难度的不断下降,最终导致了以太网的安全事件愈演愈烈.根据一份调查指出[2],ARP攻击能够在20-30秒的时间使超过200台计算机离线,某学院也曾经发生过几次ARP攻击,期间都导致了大量计算机无法上网,日常工作几乎停滞的状态.ARP欺骗[3]是ARP攻击的主要代表技术,常常被黑客用于局域网攻击和数据监听.

1.2 ARP欺骗

ARP欺骗可以分为主动和被动两种方式[4],攻击者主动发送ARP请求报文,利用ARP协议的漏洞让受害主机更新IP和硬件MAC地址映射表的方法叫做主动方式;攻击者处于被动监听状态,只在必要的时候对ARP查询报文进行响应的方式叫做被动方式.按照类型来分,ARP欺骗攻击有拒绝服务攻击、中间人攻击、克隆攻击、网关攻击、泛洪攻击以及DHCP伪装攻击.ARP欺骗攻击由来已久,但因为协议本身存在的缺陷导致难以根治,过去十几年中,多种类型的解决方案被提出来,但都无法有效解决问题.本文在不改变网络原有拓扑结构的前提下,提出了一种以成本低廉的Raspberry Pi作为检测节点,检测局域网ARP欺骗并通过干预恢复网络的方案.

2 ARP欺骗的解决方案

2.1 已有方案分析

自从ARP欺骗出现以来,出现了不少解决方案,其中有代表性的有静态ARP缓存、使用ARP服务器、网关广播ARP数据包、加密ARP、内核补丁、端口安全以及ARP检测软件.静态ARP缓存是低成本方法,通过管理员手工指定ARP缓存的方式来避免ARP欺骗,但这种方式被证明低效且不易管理[5].使用专用的ARP服务器成本投入不低,并且服务器本身的安全问题也面临挑战[6].网关广播ARP数据包被认为会加重网络负载[7],且网关本身往往也是ARP欺骗的首要目标.加密ARP就是对现有的ARP协议进行改进,使用加密协议对ARP数据包进行认证,主流代表有SARP[8]和 TARP[9],但加密 ARP 与现有的协议无法兼容,性能开销大.内核补丁则是通过给操作系统打补丁的方式修补ARP漏洞,比如以anticap和antidote为代表的方案就是此类,两种方案都是通过抑制更新ARP缓存[10]来达到目的,但只能适用于特定的操作系统内核,并且无法与未打补丁的内核兼容.端口安全其实是最有效的解决方案,该方案通过交换机的Port Security功能检测ARP欺骗,可以防止未经授权和ARP欺骗的设备接入网络,能有效防止MAC地址泛洪.但由于该方案需要将现有的交换机全部更换为带Port Security功能的设备,代价太大,因此实际应用起来存在困难.以ARPWatch和XARP为代表的ARP检测软件的实际应用效果不理想,只能实现检测功能而无法进行保护.

2.2 应用需求分析

综上所述,以上解决方案均无法较好解决现有ARP欺骗问题,因此,目前急需一种部署灵活,不影响现有网络和应用,成本不高,且行之有效的解决方案.文献[4]中提出的ARP欺骗攻击多层模块探测策略是一种可行的方案,代表ARP欺骗保护的一个研究方向.

3 基于Raspberry Pi的ARP欺骗检测保护方案

3.1 方案架构

论文根据ARP欺骗疫苗[11]的思路提出了一种基于Raspberry Pi的ARP欺骗检测保护方案,该方案拓扑结构如图1所示,其中网段A、网段B和网段C分别通过接入层交换机连接到汇聚层交换机,汇聚层交换机是具备Port Security功能的三层交换机,控制服务器直接连接到汇聚层交换机,每个网段都设置一个检测节点P1、P2和P3.

检测节点是一种由英国开发的卡片式电脑Raspberry Pi[12],拥有电脑的基本功能,该电脑可以运行Linux,支持Python、C、Java等开发语言,具有成本低(约25美元)、体积小(只有信用卡大小)、功耗低(2W)的特点[13],已被广泛用于各类物联网应用中.方案使用Raspberry Pi作为检测节点,每个节点上部署ARP欺骗检测保护软件,负责本网段的ARP数据监听、检测和保护.控制服务器是一台运行CentOS Linux 7.0的主机,负责收集各网段检测节点的网络信息、下发ARP地址表及对三层交换机发布管理指令.为了保护控制服务器的安全性,三层交换机上做访问控制权限,只允许指定节点访问控制服务器,其他计算机不允许访问.

3.2 工作原理

基于Raspberry Pi的ARP欺骗检测保护方案的工作原理如图2所示,检测节点启动时通过主动和被动的方式收集本网段的地址信息,并将此信息上传到控制服务器,控制服务器保存了局域网中所有的IP--MAC数据.检测节点随后定期向本网段发布ARP疫苗,ARP疫苗是网络经过较长时间稳定运行后的IP—MAC数据,可以认为此数据是正确的.其他主机接收到ARP疫苗后将使用其中的IP—MAC数据更新本地的ARP缓存,从而避免ARP地址表被污染.检测节点还要通过监听本地网段的形式来发现ARP欺骗,重点对ARP查询/应答、RARP查询/应答以及DHCP请求/应答进行分析,一旦发现ARP欺骗,则向受害主机发布正确的地址信息,同时上报数据到控制服务器.控制服务器对异常信息进行分析,一旦发现大规模ARP欺骗,影响到网络性能和安全性,则向三层交换机发布指令停用指定端口,避免攻击扩大化,同时向管理员发布警告.控制服务器稍后会进行延缓检测,检查ARP欺骗是否继续存在,如果欺骗已经减弱或者消失,则启用端口正常工作.

图1 基于Raspberry Pi的ARP欺骗检测保护方案拓扑

图2 工作原理

3.3 关键技术

3.3.1 网络监听和数据捕包

网络监听是方案的一个关键技术,是指捕获网络中的数据包进行分析的一种技术,常被用于网络监控和入侵检测当中[14].在交换环境下进行网络监听可以通过ARP欺骗、地址泛洪等手段实现,或者是利用交换机的端口镜像功能.ARP欺骗和地址泛洪通常是在没有网络管理权限的情况下使用,会在一定程度上扰乱网络的正常工作,降低性能和安全性.端口镜像是在交换机或路由器上通过配置将一个或多个端口的数据流量镜像到指定端口,从而实现网络监听的目的.本方案最大化利用原有网络设备,保留原有交换机的端口镜像功能,在没有端口镜像交换机的网段中,则被动捕获数据包进行分析(捕获数据包的数量会减少).

Linux下比较常见的数据捕包方案有Raw Socket、libpcap[15]以及 scapy.Raw Socket是直接通过创建原始套接字的方式来访问底层接口,libpcap是一个比较成熟的捕获数据方案,scapy是一种使用Python开发的强大的网络数据包处理工具[16],能快速方便地分析和构造各种网络协议数据包,本文使用scapy作为网络捕包方案.

3.3.2 ARP疫苗

ARP疫苗的作用是给主机打“预防针”,从而在一定程度上预防由于ARP欺骗造成的网络瘫痪,尤其是当网关MAC地址被冒用的时候,ARP疫苗的作用特别明显.ARP疫苗主要有两个过程,分别是创建疫苗和发布疫苗.创建疫苗是检测节点在网络稳定运行一段时候之后(比如30分钟)生成的ARP缓存信息,这部分信息被检测节点记录下来,并被上传到控制服务器数据库中.ARP疫苗创建成功后将会被检测节点周期性发布给本网段其他主机.发布疫苗可以通过检测节点构造ARP请求或应答数据来完成.

3.4 方案实现

本方案的实现包括Raspberry Pi节点部分和控制服务器部分,下文分别进行讨论.

3.4.1 Raspberry Pi节点

Raspberry Pi节点选用了3B+基础版,此版本使用Broadcom BCM2837B0芯片(1.4GHz四核),提供了1个千兆以太网接口、1个802.11AC无线接口和1个蓝牙4.2模块,部署的系统版本为raspberrypi 4.9.80,开发环境为Python 2.7.13.该节点的主要功能是监听数据包、ARP疫苗生成和发布、ARP欺骗发现和上传数据,这四个功能在ServiceEntry类中实现,该类的关键代码实现如下.

pkts=sniff(iface="eth0",filter=pkt_filter,prn=packet_callback)#从eth0接口捕获数据包,设置捕获的过滤器,并将捕获的数据交给packet_callback回调函数处理

def vaccine_generate(self):#生成ARP疫苗

self.generateHostList(net,mask)#根据网段和子网掩码生成本网段所有主机列表

3.4.2 控制服务器

控制服务器同样使用Python实现,主要功能包括收集ARP地址信息、开启及关闭交换机端口以及数据分析(拟在二阶段实现).控制服务器部署MySQL 5.5进行数据存储,并通过比对数据库中最近30分钟的ARP数据发现攻击,关键代码如下.

控制服务器使用ssh协议连接到三层交换机,为了简化代码,本方案使用paramiko模块作为ssh实现方案,并使用SecureConnection类进行了封装,关键代码如下.

return ssh.exec_command(com)#执行此指令

3.5 模拟攻击及实验效果

由于本方案基于实际生产环境,不允许进行真实攻击测试,因此模拟了小型网络环境进行测试.ARP攻击工具使用了arpspoof,arpspoof是一种有效的ARP欺骗工具,允许攻击者修改网络路由,以及实施中间人攻击.模拟测试的步骤分为三步,首先测试受害主机的连通性,这主要是通过访问网关来进行测试;其次在攻击机上执行arpspoof对受害主机进行欺骗,并观察受害主机的连通性,此时发现受害主机完全处于断网状态;最后启动检测节点上部署的检测保护程序,发现ARP欺骗,并向受害主机持续发布ARP疫苗,此时观察受害主机的网络已基本恢复.

为了测试ARP疫苗的有效性,对受害主机的连通性进行了采样并求取平均值,每次采样由受害主机向网关连续发送100个ICMP回应请求,并根据返回的应答数量记录成功率,结果如表1所示,总共进行10次测试,并对每次测试的成功率进行了记录,最后计算出成功率的平均值.实验数据表明,ARP疫苗对于网络恢复已经产生作用.

表1 实验测试结果

4 结语

通过验证得出,文中提出的ARP欺骗检测保护方案是可行的.方案部署完全不影响原有网络拓扑结构,不需在局域网主机上安装额外软件,每个网段只需增加一个价格低廉的检测节点.方案仍然还存在一些问题,比如检测节点遭受大规模DOS攻击将失效,控制服务器遭受到数据篡改会造成检测节点被用作黑客的攻击助力,这些将在今后研究中进行讨论.

猜你喜欢
网段交换机数据包
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
单位遭遇蠕虫类病毒攻击
更换汇聚交换机遇到的问题
配置局域网访问方式
可变编组动车组制动系统TCN网络信号传输需求研究*
基于地铁交换机电源设计思考
C#串口高效可靠的接收方案设计
缔造工业级的强悍——评测三旺通信IPS7110-2GC-8PoE工业交换机
罗克韦尔自动化交换机Allen-Bradley ArmorStratix 5700