周 创 王红林
(安徽国防科技职业学院, 安徽 六安 237011)
随着云计算应用的不断深入以及对大数据处理需求的不断扩大,服务器的服务能力越来越难以满足网络运行的需要。可以通过网络虚拟化、服务器虚拟化来满足相关需求,然而网络资源需要动态调配。于是,软件定义网络应运而生。与传统网络相比,软件定义网络相对简单,便于开发应用,同时因为它具有软件集中控制的特性,还能快速调整网络环境。在传统网络中,ARP欺骗行为防不胜防。在软件定义网络中,对大多数网络行为都可以通过软件来控制,因此也可以在不改变硬件结构的情况下,有效防止ARP欺骗。
软件定义网络(Software Defined Networking,缩写为“SDN”)是美国斯坦福大学Nick McKeown教授团队提出的一种新型网络创新架构,属于智能化网络。它以软件方式集中管理控制器和网络装置,通过OpenFlow核心技术将网络设备平面与数据平面相分离,从而实现对网络流量的灵活控制[1,2]。
SDN的架构分3层,从底层到上层分别为基础设施层、控制层、应用层。应用层包括各种不同的业务和应用;控制层主要为交换机和路由器控制平面,为SDN的核心部分;基础设施层负责基于物理交换机和路由器等进行数据处理、转发和状态收集。SDN采用了集中式的控制平面和分布式的转发平面,2个平面相互分离,控制平面利用控制—转发通信接口对转发平面上的网络设备进行集中式控制,因此具有控制和转发分离、设备资源虚拟化和通用硬件及软件可编程三大特性。
OpenFlow协议并不是一个产品或功能,而是一个具有API的沟通接口。它需要应用程序的协助,让控制器与网络设备之间进行互相通信。OpenFlow将封包传输路径视为一条Flow,网络工程师根据需要,可以通过软件设置网络的各项功能,建立逻辑网络,作出封包传输决策。这些决策会记录在OpenFlow路由表里。通过在控制平面与转发平面之间建立安全通道,将路由表内容传送给转发平面的网络设置。
ARP欺骗(又称ARP攻击、ARP病毒),是针对ARP(地址解析协议)的一种攻击技术。按攻击方式的不同,可将其分为中间人攻击和阻断攻击[3]。
中间人攻击,指攻击者通过发送假的ARP封包,让特定的流量发送给攻击者,篡改内容后再传送到目的地,使被攻击者接受到错误的信息。
阻断攻击,指攻击者发送大量假的ARP封包,让数据无法到达正确的网管,或将ARP数据包导到不存在的MAC地址,导致特定计算机或所有计算机无法正常连线。
在传统网络中,ARP封包在TCP/IP协议中属于网络层,是通过广播方式传输,成为交换机的学习对象。这样的封包如果提供的是错误的信息,那就会造成安全性漏洞,影响整个网络传输。
传统网络交换机的学习行为,是每当接受一个数据包时先学习源地址的位置,从而接受数据包的端口,然后把端口和MAC地址记录在表格里,网络传输以这个记录表为依据。因此,在交换机学习之前,如果能够确保ARP数据包是正确的,那么就可以避免ARP欺骗造成的影响。利用SDN控制器的特性,在学习之前,可以先判断ARP封包内容,然后再决定是否学习(见图1)。
图1 SDN控制器辨别和处理过程
利用Mininet仿真软件,建立交换机、路由器和主机等信息(见图2、图3和表1)。
图2 网络结构简图
主机IP地址MACHost110.0.0.100:00:00:00:00:11Host210.0.0.200:00:00:00:00:22Host310.0.0.300:00:00:00:00:33Host410.0.0.400:00:00:00:00:44
图3 交换机初始正确的路由表信息
假设Host2是攻击者。Host2发送假冒Host1的IP的封包,从dpid为1的交换机上发送出去。此攻击封包内容,会被交换机学习并转发出去。
受到Host2攻击后,交换机的路由表内容如图4所示。在每个交换机的PORT/MAC表中,real IP 10.0.0.1对应的real MAC原本为00:00:00:00:00:11,现在变成了00:00:00:00:00:22。这将导致交换机不能正确地将封包送至Host1,使得Host1不能正常通信。
使用SDN中的控制器来进行控制,交换机的记录如图5所示。图中Port为主机连接在交换机上的端口,real IP为封包的真实源IP,real Mac为封包的真实源MAC,forwardingip为转发时所用的IP,forwarding MAC为转发时采用的MAC。
SDN控制器会在学习任何一个封包前都对其进行检查,判断封包的内容是不是可靠的内容,诊断封包是否真实,而不是盲目学习每个送到控制器的封包内容。
图4 受到Host2攻击后的路由表信息
图5 各交换机的路由表
作为攻击者的Host2,发送假的Host1封包给dpid为1的交换机的Port2端口,经过交换上传到控制器。此时,控制器会甄别出此数据包是未注册的数据包,随后在dpid为1的路由表中查找forwarding IP,由此判断10.0.0.1是一个重复的IP地址。
受到Host2攻击后,各交换机的arpTable表中记录内容如图5所示。在dpid为1的表中,forwarding IP地址是10.255.255.1,而real IP为10.0.0.1,这就是由于Host2是假冒Host1的IP地址,控制器会利用Switch记录找到正确的传输路径,并且对封包做丢弃处理(见图6)。
图6 控制对假冒主机IP、交换机MAC的处理过程
如果Host2成为攻击者时,不是用Host2的MAC地址假冒Host1的IP,而是用交换机的MAC地址假冒Host1的IP,使用交换机的MAC来假装已经注册过。这时,Switch1从Port2收到假冒Switch2的MAC地址和Host1的IP的ARP封装包,并且上转发给控制器。这个控制器就会判断,此MAC地址是否是网络内的MAC地址,并且查看arpTable中forwarding IP是否为对应的IP,从而判断数据包的真实与否。通过比较,确定这个数据包是假的,系统就会将其丢弃。
云计算的发展,提高了对动态网络资源的需求,从而推动软件定义网络(SDN)发展,但新兴的网络架构仍然会受到ARP的攻击。根据SDN架构的可程序化特性,对控制器的规则进行重新设计,便可以避免局域网内出现ARP攻击,提高网络的效能和安全性。