赵旭涛
(电子科技大学,四川成都,611731)
Intel DPDK和Hyperscan的网络防御系统
赵旭涛
(电子科技大学,四川成都,611731)
针对系统并发访问用户数量急剧提升,后端的安全验证对服务器消耗日益突出的问题,提出了一种Intel DPDK和Hyperscan的网络安全防御系统,系统基于并行处理机制,在数据经过的网关处进行安全验证,以有效的避免子后端服务器可能遭受的DDoS的攻击,减轻了子后端服务器的压力和保护服务器的健康运行。
DPDK;Hyperscan;HTTP DDoS;网络安全
随着互联网的高速发展以及云计算的出现,原本只能由大型组织才能发动的DDoS攻击,现在只要通过控制大量的虚拟机主机就能由普通的攻击者完成。由于越来越多的网络服务或信息以Web方式提供,因此Web服务器成了各种DDoS攻击的首要目标。在网络层DDoS攻击难以达到效果的情况下,应用层DDoS攻击成为近年来攻击者常用的手段。通过建立正常的tcp连接模拟正常用户浏览网页的行为,向Web服务器发送大量合法的HTTP Get请求,耗尽Web服务器资源,使其无法响应其他正常用户的请求。由于系统后端业务的快速增加和并发访问量的提升,无论是对软件还是硬件系统都有了更高的性能和可承受的压力要求。传统的安全防御大多数都由提供服务的目标服务器来完成,即服务程序和防御程序位于同一台主机。目标服务器不仅用来完成用户正常的请求,还需要同时具备有安全防护的功能。这样做的一个弊端就是如果攻击者直接攻击目标服务器,目标服务器就会因为不停的进行安全验证而消耗大量的资源,从而造成正常的用户活动无法进行。如果能在数据到达目标服务器之前进行安全防护,这样就可以极大的保护目标服务器,使其避免遭受DDoS的攻击而更好的向用户提供服务。
图1 系统总体结构图
目前HTTP DDoS防御措施主要为数据数据经过系统的协议栈之后,在采用一定的安全校验算法来对数据进行检测。本文提出了一种基于Intel DPDK和Hyperscan的HTTP DDoS安全的防护措施,在数据经过目标服务器的网关处进行安全验证,从而不必进过操作系统的协议栈之后在进行安全验证,这极大的提升了系统的性能。
2.1 系统总体结构
系统总体结构图如图1所示。
图中的DPDK和Hyperscan运行于网关处,数据经过DPDK,在内部通过Hyperscan对报文的数据部分进行正则表达式匹配,对于匹配到的结果采取相应的操作,如丢包、放行或进行白名单验证等。
2.2 Intel DPDK数据包捕获方式
英特尔数据平面开发套件(Intel DPDK)是由 Intel 公司为x86平台的报文快速处理所提供的一系列库和驱动的集合,DPDK的主要目标是提供一个简单的、完整的框架,用于快速数据包处理数据平面应用程序,用户可以在DPDK的基础上开发出自己的协议栈。其通过环境抽象层提供数据面功能以取代内核的系统调用,轮询模式数据包读取替代中断,旁路内核协议栈,优化内存及队列管理等技术,实现用户空间下的高速网络数据包处理。DPDK基本框架如图1所示,底层硬件网络适配器实现对数据帧的接收;内核态的三个模块中,KNI 模块提供传统的网络工具,UIO模块实现将网卡硬件寄存器映射到用户态,在用户空间运行驱动设备,VFIO是用户态的PCI设备驱动开发的框架,它向用户态提供访问硬件设备的接口,也向用户态提供配置IOMMU的接口;EAL(环境抽象层)作为 DPDK 关键模块,为底层资源的访问提供用户层入口,完成资源的分配及初始化;此外,DPDK核心部件库提供内存池、缓冲区管理、轮询模式、定时等接口,服务于上层应用程序。其依赖于如下关键技术:
1)Hugepage
通过预留的 Hugepage 实现对内存池的管理,设置 256kb、512kb、2M、4M、16M、1G、4G和16G的页表大小较默认的 4K配置可大幅度减少了页表的查找,降低TLB miss。提高内存的访问效率。
2)UIO (User space I/O)
利用UIO支持,提供应用空间下驱动程序的支持,也就是说网卡驱动是运行在用户空间的,减少了报文在用户空间和应用空间的多次拷贝。
3)CPU affinity
运用 CPU 亲和力机制,将控制线程以及数据处理线程绑定到不同的核,避免来回调度产生的资源消耗。
4)环形缓冲区
提供内存池和无锁环形缓存管理,加快内存访问效率。
5)内存池
为应用程序和其它组件提供分配内存池的接口,内存池是一个由固定大小的多个内存块组成的内存容器,可用于存储相同对像实体,如报文缓存块等。内存池由内存池的名称(一个字符串)来唯一标识,它由一个环缓中区和一组核本地缓存队列组成,每个核从自已的缓存队列分配内存块,当本地缓存队列减少到一定程度时,从内存环缓冲区中申请内存块来补充本地队列。
2.3 正则表达式匹配引擎Hyperscan
Hyperscan是一个高性能的正则表达式匹配的C库,它支持大部分libpcre正则表达式的语法。Hyperscan使用混合自动机技术,而不是单纯的一种DFA或者NFA技术,这不同于常见的正则表达式引擎的实现算法,因此Hyperscan在多种不同的场合下的性能都表现的很出色。除此之外Hyperscan还支持同时匹配上万条数的正则表达式,同时支持GB级别的大文本查找和支持序列化等功能。
3.1 控制进程流程。主线程运行入口是main函数,调用了rte_eal_init入口函数,启动基础运行环境。DPDK面向多核设计,程序会试图独占运行在逻辑核(lcore)上。main函数调用环境抽象层初始化函数 rte_eal_init()对DPDK 底层结构进行初始化,完成的工作有 hugepage 初始化、mbuf_pool 创建、pci设备驱动加载等,同时完pc地址空间至用户空间的映射。main函数里重要的是启动多核运行环境,RTE_LCORE_FOREACH_SLAVE(lcore_id)如名所示,遍历所有EAL指定可以使用的lcore,然后通过rte_eal_remote_launch在每个lcore上,启动被指定的线程。rte_eal_remote_launch中的第一个参数指定了要执行的处理函数main_loop。
图2 DPDK主要模块分解图
图3 控制进程执行流程图
3.2 数据进程流程。数据处理流程主要从从线程执行main_ loop()的主要步骤如下:
1)读取自己的lcore信息完成配置;
2)读取关联的接收与发送队列信息;
3)进入循环处理:
{
向指定队列批量发送报文;
从指定队列批量接收报文;
批量转发接收到报文:l3fwd_lpm_send_packets;
}
在循环中批量转发报文,进入转发报文的函数l3fwd_lpm_ send_packets。在l3fwd_lpm_send_packets会依次处理从网口接收的每一个报文,获取报文的rte_mbuf结构并从中取出报文的源MAC、目的MAC、源IP、目的IP、源端口、目的端口、接收序列号和确认序列号等。如果目标IP为要访问的目标服务器的IP,且源IP不在白名单中或者白名单过期,则取出报文的数据部分,通过Hyperscan对该数据部分进行匹配,找到符合条件的报文,之后伪造一个服务器响应的数据包,要求源IP对应的客户端输入验证码。其中通过Hyperscan可以设置多种匹配规则,每次匹配到一个正则表达式,就会触发Hyperscan提供给用户自定义的回调函数中,在该回调函数中,根据匹配到的不同的正则表达式,采取不同的行为。对于没有通过认证的要求其输入验证码,对于报文中含有违法关键字进行丢包,对于通过验证的直接放行转发出去等。
验证码的生成,利用DPDK的库函数,通过数据包的源IP哈希生成一个验证码。验证码生成之后,通过后台伪造一个HTML输入验证码的页面构造相应的伪造目标服务器回应的数据包并返回给客户端。如果客户端提交的数据中含有验证码,则通过比对判断掩码是否输入正确。在输入正确的情况下且验证码还没有过期,就把该源IP加入白名单并记录下加入的时间。否则一直向该客户反弹验证码输入的页面,直到其成功输入为止或者超过一定的阈值之后就禁用该源IP一定时间。
本文提出基于Intel DPDK和Hyperscan的网络安全防御方案。Intel DPDK 开源套件实现高性能数据包分析处理系统的的设计,系统采用多核并行处理机制,采用一系列性能优化措施,显著提高了数据包处理性能。Hyperscan采用混合自动机技术,在正则表达式的匹配性能和数量上都远远高于采用单一算法实现的正则表达式引擎。本文生成验证码的部门比较容易被识别出来,在接下来的工作中,如何提高验证码的安全性使其难以被第三方工具识别是后续研究的重点。
[1] http://dpdk.org/
[2] https://01.org/zh/hyperscan?langredirect=1
[3] 朱河清. 深入浅出DPDK[M]. 北京: 机械工业出版社, 2016-5.
[4] 何佳伟,江舟. 基于 Intel DPDK 的高性能网络安全审计方案设计[J]. 电子测试,2016
Intel DPDK and Hyperscan network defense system
Zhao Xutao
(UESTC,Chengdou Sichuan,611731)
The number of the concurrent user is dramatic increasing,which increases consumption of server resources.Thus,a network security defense system based on Intel DPDK and Hyperscan is proposed in this paper in response to solve the problem.The network packets will be verified when they though the gateway,which can effectively avoid DDoS attack and ease the pressure of server.
DPDK;Hyperscan; HTTP DDoS;Network security