一种nginx-modsecurity安全规则智能匹配方法
【技术领域】
[0001] 本发明涉及Nginx的模块开发领域,具体地说是一种NGINX-MODSE⑶RITY安全规 则智能匹配方法。
【背景技术】
[0002] Nginx(〃engine x〃)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/ P0P3/SMTP代理服务器。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗 而闻名。
[0003] Modsecurity是一个入侵侦测与防护引擎,主要用于Web应用程序。
[0004] 据统计超过70%的攻击发生在网络应用层,各级组织急需要能够保证他们的系统 安全性的帮助。WAF系统的部署,可以为web应用增加一个外部安全层来检测或防止攻击。 针对一系列的攻击,Modsecurity为web应用提供了强大的保护,并对HTTP流量进行监测 和实时分析,这些都只是很少或是根本没有影响系统的基础设施。
[0005] Nginx支持Modsecurity模块是一项比较新的技术,因为Nginx是开源的,可以扩 展与Modsecurity的模块。Apache和Modsecurity的结合目前是比较成熟的,Modsecurity 作为一个独立的模块与服务器进行通信,通过研宄Nginx的源码,可以获取到请求http和 应答的http,通过对请求内容的分析可以做扩展的处理,不过不能影响Nginx本身的性能, 只有并行扩展低能耗的功能。所以在处理阶段可以自己开发的回调函数进行功能拓展。
[0006] 现有技术中,Nginx匹配Modsecurity安全规则是通过创建一种选择树然后通过 遍历整棵树来匹配,即顺序匹配所有的规则,创建的进程对网络上访问来的数据包进行拆 包分析,具体动作即将数据包信息跟安全规则进行比对,这种比对方式是逐条进行的,是从 前往后的顺序匹配,这就出现了资源浪费的情况,比如在最后部分的规则被触发的情况下, 前面的规则匹配是无用的,直接影响了 Web应用防护系统WAF的效率。
【发明内容】
[0007] 本发明的技术任务是针对上述现有技术的不足,提供一种NGINX-M0DSE⑶RITY安 全规则智能匹配方法。
[0008] 本发明的技术任务是按以下方式实现的:一种NGINX-M0DSE⑶RITY安全规则智能 匹配方法,包括以下步骤:
[0009] (1)将安全规则按着防御阶段、防御范围进行动态分类;
[0010] (2)利用改进的粒子群优化算法选择访问最可能触发的规则分类;
[0011] (3)在步骤(2)得到的规则分类内,通过折半查找法对安全规则进行匹配。
[0012] 传统的结构模式中,Nginx和Modsecurity直接结合,但是,为了使上述方法得到 更好的应用,可将上述方法与核心模块modsecurity结合,单独开发一个安全规则智能匹 配模块,进行规则匹配时,Nginx只需要将数据传给该模块,并接受该模块返回的值即可。
[0013] 为了进一步提高匹配效率,合理的利用硬件的资源,在进行规则匹配时,可根据并 发访问数量进行内核动态绑定和释放。
[0014] 作为优选,进行内核动态绑定和释放的实现方法为:在静态访问分析的基础上,获 取访问的流量状态和CPU内核的繁忙程度,绕过配置文件的静态分配,根据访问量和动态 算法指向不同的CPU内核。
[0015] 所述动态算法优选为轮询算法或随机算法。
[0016] 所述轮询算法指将访问轮流的交给不同的内核处理;
[0017] 所述随机算法指将访问随机交给内核处理。
[0018] 所述改进的粒子群优化算法,是由传统的PSO算法改进得到的模糊搜索算法,之 所以叫模糊搜索,是因为在运行中不用精确的找出具体规则,而是找到规则的分类即可。在 原来的PSO算法的基础上添加了随机的粒子和随机的阈值,另外修改了权值,将检测的包 的特征值、阶段、访问的阶段作为目的地,分类的特征值作为粒子群的当前值,多个分类就 是多个粒子群,经过优化,在确保正确的情况下,最接近该目的位置的类即为目标类。
[0019] 改进的粒子群优化算法包括以下计算公式:
[0020] Rand_single_value = trast*Experience+rand_val (v [i]) 公式(I)
[0021] v [] = v []+cl*rand () * (pbest []-present [])+c2*rand () * (gbest []-present []) (a) +Rand_single_value 公式(2)
[0022] present [] = persent []+v [] (b) 公式(3)
[0023] Experience = rand ()* (gbest-v[n])+rand ()* (pbest-Present[n]) 公式 ⑷;
[0024] 所述公式I为改进的通过修正值和经验值获取随机粒子修正速度公式;
[0025] 所述公式2为改进的速度优化公式;
[0026] 所述公式3、公式4为位置优化公式。
[0027] 上述算法公式中各参数的含义如下:
[0028]
【主权项】
1. 一种NGINX-M孤SECURITY安全规则智能匹配方法,其特征在于包括W下步骤: (1) 将安全规则按着防御阶段、防御范围进行动态分类; (2) 利用改进的粒子群优化算法选择访问最可能触发的规则分类; (3) 在步骤(2)得到的规则分类内,通过折半查找法对安全规则进行匹配。
2. 根据权利要求1所述的NGINX-M孤SECURITY安全规则智能匹配方法,其特征在于,进 行规则匹配时,根据并发访问数量进行内核动态绑定和释放。
3. 根据权利要求2所述的NGINX-M孤SECURITY安全规则智能匹配方法,其特征在于,进 行内核动态绑定和释放的实现方法为;在静态访问分析的基础上,获取访问的流量状态和 CPU内核的繁忙程度,绕过配置文件的静态分配,根据访问量和动态算法指向不同的CPU内 核。
4. 根据权利要求3所述的NGINX-M孤SECURITY安全规则智能匹配方法,其特征在于,所 述动态算法为轮询算法或随机算法。
5. 根据权利要求1或2所述的NGINX-M孤SECURITY安全规则智能匹配方法,其特征在 于,所述改进的粒子群优化算法包括W下计算公式: Rand_single_value = trast*Experience+rand_val (v[i]) 公式(1); V [] = V [] +cl*rand 0 * (pbest [] -present []) +c2*rand 0 * (gbest [] -present []) (a) +Rand_single_value 公式(2); present [] = persent []+v □化) 公式(3); Experience = rand () * (gbest-v [n]) +rand () * (pbest-Present [n]) 公式(4); 所述公式1为改进的通过修正值和经验值获取随机粒子修正速度公式; 所述公式2为改进的速度优化公式; 所述公式3、公式4为位置优化公式。
【专利摘要】本发明公开了一种NGINX-MODSECURITY安全规则智能匹配方法,属于Nginx的模块开发领域。该方法首先按照防御阶段、防御范围等因素将安全规则分类,然后通过智能学习算法在最短的时间内,判断该访问最接近的那一类规则,找到分类以后再通过折半查找法匹配分类内的小范围的规则。与现有技术相比,本发明的匹配方法具有匹配效率高,准确性好等特点,具有很好的推广应用价值。
【IPC分类】H04L29-08, H04L29-06, G06N3-00
【公开号】CN104618392
【申请号】CN201510087661
【发明人】路廷文, 刘刚, 戴纯兴
【申请人】浪潮电子信息产业股份有限公司
【公开日】2015年5月13日
【申请日】2015年2月25日