适用于微型物联网设备的慢速DoS防御系统设计
2021-05-20苏维涓郑龙德赵政源
陈 旖,苏维涓,郑龙德,赵政源
(1.福建警察学院计算机与信息安全管理系,福建 福州 350007;2.网络安全与执法技术福建省高校工程研究中心,福建 福州 350007)
0 引言
随着物联网(internet of things, IoT)技术的发展,以智能门禁、智能快递柜、网络视频监控为代表的民用IoT产品已广泛地应用于智慧小区、智慧办公等场景,为社会大众的生活带来了极大的便利[1]。这类民用IoT产品为了适配应用场景中已有的接入网关设备,往往放弃了传统IoT产品中广泛使用的ZigBee、6LoWPAN等通讯技术,而直接使用有线以太网或WiFi技术来连接已有的接入网关,并直接使用IP协议来连入互联网。此外,部分IoT设备还嵌入了微型的WEB服务器,可支持外部主机直接通过HTTP接口来进行设备配置和数据访问[2-3]。
然而,由于成本和能耗的限制,这类内嵌WEB服务的IoT设备虽然能够提供互联网访问的功能,却无法有效防御来自互联网的攻击。DoS攻击是这类IoT设备面临的常见威胁之一[4]。其中,针对HTTP协议的慢速拒绝服务攻击(slow HTTP denial of service, SHDoS)对这类IoT设备的攻击效果尤为明显。SHDoS是近年出现的新型攻击手段,其通过构造畸形报文或低速收发报文,来长期占据服务器连接,达到耗尽服务器连接资源的目的,从而导致服务器无法响应正常用户的连接请求[5-6]。实验显示,对于未进行SHDoS防护的IoT设备而言,仅需一台攻击主机即可造成IoT设备无法继续对外提供服务。因此,如何针对资源受限的微型IoT设备进行SHDoS攻击防御是具有实际应用价值的研究课题。
1 相关研究
针对SHDoS防御的问题,文献[7]提出了一种基于一维卷积神经网络的SHDoS流量检测方法,该方法通过一维卷积运算的特性,可对不同攻击频率的SHDoS流量都具有较好的检测效果。文献[8]提出了一种基于数据包大小检查的检测方法,对基于POST报文的SHDoS攻击流量具有一定的检测效果。文献[9]在分析了SHDoS的攻击原理后,提出在特定的WEB服务器上通过修改其配置来限制客户端发起请求的频率,从而提升了服务器抵抗攻击的能力。
上述研究成果各有特点,但应用于IoT场景时,也存在一定的局限性。文献[8]提出的方案仅对SHDoS攻击中基于POST报文的子集类型有效,无法对其他的攻击类型进行检测。文献[9]提出的方案只能在特定的WEB服务器软件上进行配置,而IoT产品往往使用精简定制的服务器,且不同厂商的服务器类型众多,该方案无法针对众多的IoT产品进行统一配置。文献[7]提出的方案可对不同的SHDoS攻击流量进行检测,且不需要针对不同产品进行适配,但该方案使用的一维卷积神经网络的运算代价较高,适合部署于专用的防火墙设备中。而IoT场景中,由于设备分布广且部署成本受限,难以通过部署大量的防火墙来抵抗攻击。
在上述研究与分析的基础上,本文提出一种基于TCP连接资源占用率的轻量级SHDoS防御系统,该系统部署于接入网关中,仅占用少量的运算资源即可有效地防御SHDoS攻击。系统工作时,首先在网络层监听双向的IP报文,并重建出对应的TCP连接信息;之后,使用基于TCP连接资源占用率的检测算法检测出远程的攻击主机;最后,系统通过发送伪造的RST报文来主动关闭已有的攻击连接,并通过防火墙规则禁止恶意主机建立新连接,从而达到阻断SHDoS攻击的目的。
相较于文献[7-9]提出的方案,本系统的优势在于:基于TCP连接资源占用率的检测算法可对不同类型的SHDoS攻击都具有较好的检测效果;可支持任意类型的WEB服务器软件,可解决IoT产品多样化,难以逐一适配的问题;对设备的资源占用小,可直接部署于原有的接入网关中,无需新增专用设备,满足IoT产品对部署成本的限制。
2 系统设计
2.1 系统应用场景
图1 典型应用场景Fig.1 Typical application scenarios
本系统典型的应用场景如图1所示,其中包含由智能门禁、视频监控等IoT设备组成的物联网感知层环境;由互联网或局域网组成的物联网传输层环境;由服务器、PC及手机等远程主机组成的物联网应用层环境[10]。其中,感知层设备通过接入网关连接传输层网络;远程主机通过中间的传输层网络来访问感知层的IoT设备。当攻击者进行SHDoS攻击时,互联网中的恶意主机或受感染的内网主机可经由传输层网络对IoT设备发起SHDoS攻击,通过耗尽IoT设备上WEB服务器的并发连接资源,导致IoT设备无法处理正常远程主机的访问请求,从而实现DoS攻击效果。本系统部署于感知层的接入网关中,可直接在网关转发IP报文的过程中,统一对SHDoS攻击主机进行有效的检测和屏蔽,从而实现对感知层中所有IoT设备进行SHDoS攻击防御。
2.2 模块划分与工作流程设计
图2 系统模块设计Fig.2 System module design
如图2所示,本系统可分为4个模块。其中,TCP连接监听模块用于从网卡中读取双向的IP报文,并还原出内外网之间TCP连接的状态信息。攻击检测模块使用基于TCP连接资源占用率的检测算法,根据连接的状态信息来检测攻击主机。攻击阻断模块用于主动关闭攻击主机现有的TCP连接,并配置防火墙阻断其他新连接。运行状态监控模块从各模块中收集运行状态并提供显示和配置命令。管理员可通过命令监控系统的运行情况,适时调整系统的运行参数。
2.3 TCP连接监听模块设计
图3 TCP连接状态机Fig.3 TCP connection state machine
TCP连接监听模块从系统的网络接口中直接读取IP报文,并从报文中获取“本地IP地址、本地端口号、远程IP地址、远程端口号”组成的4元组信息,作为键值来唯一标识一条TCP连接。在模块中,每个TCP连接都存在一个对应的状态机,用于记录TCP连接当前的运行状态,其结构如图3所示。
状态机启动后自动进入初始化状态,当读取到双向带有SYN标志位的3次握手报文之后,状态机由初始化状态切换到活动状态。在活动状态下,状态机将记录下该连接传输报文的时间、长度、总数量等信息,直到收到带有FIN或RST标志的报文时,才将状态切换到非活动状态。在非活动状态下,状态机不再记录普通报文信息,直到收到TCP的4次挥手报文或等待超时之后,才将状态转为初始化状态。另外,在活动状态下,如果收到RST报文或者发现连接开始重新握手,则将状态直接转为初始化状态,以重新处理新连接。
2.4 攻击检测模块设计
2.4.1 攻击原理分析
由于操作系统资源有限,WEB服务器往往都存在“最大并发连接数”的限制。服务器在运行过程中,如果发现当前客户端的TCP连接数超过该限制,则不再响应新客户端的连接请求[11]。
SHDoS利用了服务器存在“最大并发连接数”的特性发起攻击。首先,攻击工具往往创建大量的线程,并循环向服务器发起TCP连接请求;其次,在建立连接后,各线程通过构造畸形的HTTP头部报文、构造低速POST报文或构造TCP拥塞等方式,尽可能地延长连接的生存周期;最后,大量的攻击连接导致服务器的并发连接数超过最大限制阈值,促使其不再响应正常主机的访问请求,造成了DoS攻击的效果。
2.4.2 检测算法设计
通过对攻击原理的分析可以发现,虽然各种工具构造攻击报文的手法不同,但它们都需要尽可能地延长TCP连接的生存周期,从而冲高服务器的并发连接数。根据这一特征,本文设计了一种基于TCP连接资源占用率的SHDoS攻击检测算法,该算法将服务器的最大并发连接数和检测周期时间跨度的乘积视为“TCP连接资源”的总量,将目标主机占用的连接数和连接在检测周期时间段内的生存时间的乘积视为该主机占用的“TCP连接资源”量,通过计算该主机对连接资源的占用率是否超过阈值的方法,来判断主机是否为恶意主机,其运算过程如算法1的伪代码所示。
算法1 SHDoS攻击检测算法伪代码
算法的输入内容为目标主机的TCP状态集合linkSet、检测周期时间段的起止时间(T1~T2)、服务器的最大并发连接数MaxLink、判定为攻击主机的资源占用率阈值f;算法的输出内容为目标主机是否为攻击主机。算法工作时,首先将遍历linkSet中的每一个TCP连接,并计算每个连接的生存起止时间(link.start~link.end)和检测周期起止时间(T1~T2)的重合时间,所有连接的重合时间的和为use_time,代表该主机在检测周期内占用的连接资源。同理,该检测周期内,服务器所拥有的连接资源总量既为(MaxLink×(T2-T1))。将use_time除以资源总量即可算出该目标主机的连接资源占用率use_rate。若use_rate大于阈值f,则将该主机判定为攻击主机并返回“真”,否则返回“假”。
攻击检测模块工作时,将周期性地从TCP连接监听模块中读取所有远程主机的TCP连接信息,再将连接信息和其他参数输入检测算法。若检测到攻击主机,则将主机信息传递给攻击阻断模块进行进一步处理。
2.5 攻击阻断模块设计
攻击阻断模块收到攻击主机信息后,需根据预设规则来阻断攻击主机创建的所有TCP连接。对于已握手完成的TCP连接而言,模块需分别向连接两端的主机发送伪造的RST报文,从而促使双方的TCP协议栈主动还原连接,以到达清理已有连接的目的。对于攻击主机新发起的连接请求而言,模块可通过主动丢弃其握手报文来限制其创建新连接。
2.6 运行状态监控模块设计
运行状态监控模块主要分为信息收集和状态显示两个部分。其中,信息收集部分作为独立的线程运行于防御系统的进程内部,用于从其他模块收集信息并通过域套接字(Domain Socket)发送给状态显示部分。状态显示部分是一个独立的程序,可在终端上通过命令启动,用于定时获取状态信息并在终端上动态刷新显示。其显示的信息包括各主机的TCP连接数量与状态、连接资源占用情况、攻击主机及相关配置等信息。
3 系统测试与分析
3.1 硬件环境与软件实现
在实验环境中,存在一台基于Mediatek-MT7620芯片方案的无线路由器作为IoT设备的接入网关;一台运行Kali系统的PC作为攻击机;一台树莓派设备作为IoT设备靶机。其中,树莓派设备是一款基于ARM处理器和Linux系统的微型嵌入式开发板,常用于IoT设备的原型开发[12]。接入网关使用主频为580 MHz的MIPS架构处理器,内存为120 M,支持两个以太网口和2.4 G频段的WiFi接入,其运行的OpenWrt是基于Linux构建的嵌入式网络设备操作系统,可支持第三方在其系统上进行软件开发[13]。
本防御系统使用C语言进行编程实现,代码在交叉编译后生成的可执行程序可部署于OpenWrt系统中,并支持启动自动运行。其中,连接监听模块使用了原始套接字(Raw Socket)直接从特定网卡上获取IP报文,攻击阻断模块使用了Libnet库向上行和下行网卡中发送伪造的RST报文,并使用了系统的Iptable防火墙来过滤攻击主机的握手报文。
3.2 对SHDoS攻击的防御能力测试
为验证本系统具有抵抗SHDoS攻击的能力,在树莓派靶机上使用IoT环境常用的轻量级WEB服务器LightHttpd构建了测试页面,该页面返回一张由摄像头定时拍摄的环境照片,设置服务器最大支持256个TCP并发连接,并使用Netstat工具以1 s为周期记录服务器TCP连接数的变化情况。实验使用网页测试工具和服务器建立20个HTTP长连接,用以模拟用户访问视频资源的情况。实验使用Shell脚本配合Wget工具以5 s为周期访问网页,用于模拟用户创建新的TCP连接,以观察服务器当前的可用性状态。
第一组实验用于验证SHDoS攻击可对靶机生效。实验开始后,先使服务器及测试工具正常运行。在30 s后,使用攻击工具Pyloris发起攻击,在攻击发起120 s后停止实验。实验结果如图4所示,其中横轴表示实验进行时间,左侧纵轴和右侧纵轴分别表示服务器当时的TCP连接数和可用性情况。从图4中实线可以看出,在30~110 s期间,攻击工具会持续占用服务器连接,直至约110 s时连接资源耗尽。在连接资源耗尽之后,服务器无法响应新的连接请求,产生SHDoS攻击的效果,表示服务器可用性的虚线由True变为False。
图4 未启动防御时服务器状态变化情况Fig.4 Server status when defense is not activated
第二组实验用于验证本系统可为靶机防御SHDoS攻击。在第一组实验的基础上,在实验开始前启动本文设计的防御系统,并重做实验。其中系统检测周期设为5 s,连接资源占用率的阈值设为50%,并禁止攻击主机创建新连接。实验结果如图5所示,在30~70 s期间,虽然攻击工具也在持续占用连接资源,但在约70 s时,防御系统检测到连接资源占用率超过阈值,触发对资源占用最高的攻击主机的TCP连接进行阻断操作。在90 s时,攻击连接都被断开,连接数回归到攻击前的水平。实验中服务器的可用性始终为True。对比第一、二组实验可以看出,本防御系统具有抵抗SHDoS攻击的能力。
另外,在30 s之前,服务器TCP连接数稳定在20左右,说明防御系统不会将正常的长连接误判为攻击主机。
图5 启动防御时服务器状态变化情况Fig.5 Server status when defense is activated
3.3 对多种攻击工具的防御性能测试
第三组实验用于进一步评估本系统对不同SHDoS攻击工具的防御性能。在第二组实验的基础上,为更准确的观察攻击工具对连接数的影响,重新设置靶机服务器最大支持1 000个TCP并发连接,并关闭HTTP长连接和Wget工具,再使用Slowhttptest、Tor’s Hammer、Pyloris、Slowloris、R.U.D.Y,共5种攻击工具分别对靶机进行攻击实验。实验结果如图6所示。
图6 启动防御时服务器状态变化情况Fig.6 Server status during multiple tool attacks
如图6所示,其中横轴表示实验进行的时间,纵轴表示服务器当时的TCP连接数,每条曲线代表一种攻击工具对应的连接数变化情况。从图6中可以看出,所有曲线基本都存在两个阶段:第一阶段中,曲线逐步上升,该过程反映了攻击工具开始批量的和靶机建立TCP连接,逐步占用连接资源;第二阶段中,曲线出现明显下降直至归零,该过程反映出防御系统检测到攻击主机,并开始主动阻断攻击连接,促使已占用的连接资源被快速释放。另外,第二阶段开始的时间与攻击工具自身的攻击速度相关,按本实验的配置,大约可在60 s内检测到攻击主机。从第三组实验可以看出,本文设计的防御系统可以快速的检测并阻断多种工具发起的SHDoS攻击。
3.4 资源占用情况评估
第四组实验用于评估防御系统对运算资源的占用情况,在空闲和受到攻击两种情况下,使用命令定时获取防御系统对应进程的CPU及内存使用量。在基于Mediatek-MT7620芯片的接入网关上的实验结果显示,空闲情况下CPU使用率均值约为0.28%,内存用量约为728 kB;受攻击情况下,CPU使用率均值约为19.6%,内存用量约为1 004 kB。第四组实验结果说明,该系统对运算资源的占用较少,可满足IoT环境对运算资源的限制条件。
4 结语
本文针对当前微型IoT设备难以抵抗SHDoS攻击的问题,设计了一种轻量级的防御系统。该系统可通过监听IP报文来跟踪TCP连接状态,并可直接在接入网关中阻断攻击连接,因此可支持任意类型的WEB服务器软件,解决IoT产品众多导致的难以逐一适配的问题。同时,该系统仅占用少量的运算资源,可直接部署于原有的接入网关中,满足IoT产品部署成本受限的问题。实验结果表明,该系统使用的基于TCP连接资源占用率的攻击检测算法可对多种类型的SHDoS攻击工具都具有较好的检测效果,能满足在运算资源受限的IoT环境中抵抗SHDoS攻击的需求。