Home 技术文章 通过更快的安全规则提高应用程序性能
Applications

通过更快的安全规则提高应用程序性能

About The Author

Outline

随着越来越多的应用程序开发团队将安全性集成到其工作流中,他们正在从应用程序管道,工作流和性能的角度审视安全性对其应用程序的影响。

由于合规性要求, Web应用程序和API保护(WAAP) 通常部署在应用程序堆栈中。 但是,随着组织将其工作负载迁移到云,并开始将安全性嵌入到其应用程序结构中,WAAP的角色正在不断发展。 组织需要能够扩展和适应不断变化的云架构和不断增长的安全威胁的WAAP平台。

在这篇文章中,我们将回顾WAAP引擎——更具体地说,是专为与该引擎配合使用而构建的规则集——如何进行调整,以适应云工作流并提高Web应用程序的性能,同时保持强大的在线威胁防护。‍

考虑WAAP引擎及其n ü ruleset‍

WAAP应该是应用程序堆栈和网络安全程序的重要组成部分。 传统上,WAAP与应用程序开发断开连接,被视为位于应用程序外部的安全层。 但现代WAAP架构和工具帮助SecOps在CI/CD流程中与DevOps协作,包括在开发应用程序时创建规则和进行测试。 当正确使用WAAP引擎分析遍历应用基础架构的流量时,WAAP引擎及其规则集在分析完成速度以及最终审计和阻止决策作为整个应用程序架构的一部分的执行情况方面起着重要作用。

就像汽车的引擎,电脑和传动系统,WAAP引擎,它的规则集, 它所保护的应用程序应该经过设计和优化以协同工作。 汽车制造商不会在气泡中设计引擎。 它必须针对汽车的其余车架和部件进行优化,以实现全面的最佳性能和效率。 WAAP引擎及其规则集也应如此。 不考虑这些变量的WAAP可能会过度工作和过载,并最终降低Web应用程序的性能和用户体验。‍

减少WAAP工作负载以提高速度和effectiveness‍

Edgio WAAP使用开源,行业和专有签名的组合来通知其规则集。 我们仔细评估每个签名对整个规则集性能的影响。

当我们设计和优化我们的WAAP引擎时 ,我们发现,通过收集和使用开放源代码和行业规则集而无需任何修改,(几乎)每一条规则都需要在流量穿过线缆时进行分析。 此模型在WAAP中相当常见,因此可以”轻松”地查看流量发生的情况。 但它还强制WAAP通过每个规则来评估与流量相关的风险。 这给WAAP带来了不必要的繁重工作负载,随着规则集的增长,工作负载会进一步加重。

当然,这并不总是关于速度。 WAAP的一个关键要素是它能够确定与流量关联的风险(危害)与奖励(成功交易),并决定是否将流量标记为恶意,可疑或良性。 WAAP将向组发送警报(审核/警报模式),并在认为太危险而无法通过时阻止或重新路由通信(生产/阻止模式)。

在检查所摄取的开放源代码和行业规则集时,这种分析将成为一个更大的挑战。 这是不可能的,他们的设计考虑到了速度和效率的每一个可能的WAAP发动机在市场上。 这并不意味着他们是坏的,而只是意味着他们首先关注风险,将绩效作为事后考虑。 换言之,还有改进的余地。

首先为完整性和准确性创建规则集后,许多WAAP发现无法处理在两种模式(审核和阻止)下分析的流量,迫使InfoSec团队选择一种模式: 从审计模式开始,将其移至生产模式或直接进入生产模式,几乎不需要进行实际测试,这会使他们容易错过威胁和误报。‍

Edgio如何增强其WAAP rulesets‍

开放源代码的OWASP规则集ModSecurity模型提供了一种标准的,一致的方式,通过该方式可以开发和实施WAAP规则集。 为了补充这一点,OWASP提供了一个行业通用规则集,该规则集可由遵循此模型的WAAP摄取。

然而,当我们的团队实施规则集时,他们意识到被摄取的规则集虽然完整且准确,但确实阻碍了WAAP引擎。 因此,该团队决定检查规则集是如何构建和处理的。 我们发现,许多规则会反复通过相同的数据来循环检查,以确定通过WAAP的流量的风险性,这一点不会让任何WAAP管理员感到意外。

某些协议实施规则相当简单,不必在规则集生态系统中”生存”。 为了解决这个问题,我们首先开发了规则集,通过以非ModSecurity格式将OWASP规则集直接实现到WAAP引擎中,从而有效地削减了OWASP规则集。 这可实现早期执行和更快检测。

接下来,我们将分析请求主体的规则作为目标。 我们构建了一个缓存层,可以减少在规则中重新计算相同表达式的性能开销。 以XML格式正文为例,我们搜索了表达式”XML:/*”出现在OWASP CRS规则集中的次数,以查看在没有缓存层的情况下处理单个请求时,可以重新计算XPath的次数,该数字很重要。

最后,在这里,大量的宏扩展/字符串替换和显式搜索, 我们从规则集中识别并删除了这些规则,并在引擎中使用更好的查找和搜索算法(如HashMap查找和短语匹配(PM)运算符,而不是在可能的情况下使用正则表达式(Rx)运算符实现这些规则。

通过对规则集的结构进行不同的处理,我们的WAAP引擎使用更快的数据结构和开放的标准格式(如JSON ),这些格式更易于配置和运行。 这不仅在速度方面,而且在精度方面都能带来更好的性能:

  • 低误报率:Edgio以确保准确性的方式排列和控制规则集
  • 增强的引擎性能:Edgio WAAP引擎以避免引擎负担过重的方式运行规则集

例如,对于OWASP IP阻止列表策略规则,ModSecurity引擎使用其自己的”msc_tree”算法来查看错误的IP列表。 或者,Edgio WAAP引擎使用另一种算法,这种算法的速度要快得多。 以下测试结果显示Edgio WAAP如何针对ModSecurity执行。 当对大IP列表执行一百万次查询时,ModSecurity会增加大约200ms到500ms的延迟。 Edgio WAAP每天在其网络上处理大约10B个请求。 这些小数字在如此大的规模上非常重要。

避免发出警报与阻止权衡

更好的WAAP引擎和规则集组合还意味着组织可以获得更快的性能,并且可以在双模式(块模式和审计模式)下运行WAAP。 这允许安全运营团队在审核/警报模式下针对生产流量试验新规则,并在将规则集提升到WAAP上的阻止模式之前微调规则。

高度自定义的Edgio规则集允许管理员在任意位置进行切片和切片,并在双模式下运行规则集。 通过对不同设置应用相同的规则,管理员可以在不影响性能的情况下运行两次—部分感谢智能引擎和规则集实施。

这里的价值超出了WAAP管理团队的范围。 许多Edgio客户在其DevOps生命周期中集成了此选项,使业务部门,工程团队和IT安全团队能够在将规则应用到生产阻止模式之前,在审计模式下进行协作和测试规则。

这一两步流程允许IT安全团队在防火墙配置更改被激活之前对其进行审核,从而为团队提供数据以测试实际生产流量的更改,从而在规则集投入生产后减少误报。 验证规则集后,将在几秒钟内部署更新的配置。 如有必要,可以在几分钟内回滚。 这使得有意义的规则集试验更加现实,动态,有影响力,有效和支持业务目标。

Edgio双WAF模式 方法还进一步提高了性能。 智能规则集可确保快速阻止已知的恶意流量,为WAF提供一些喘息空间,以便它可以处理持续呈现的其余流量。 这反过来又使管理员有更多时间专注于获得预测性可见性;换言之,他们可以在部署到生产站点之前通过审计模式查看应用程序中的内容。

如果您的企业需要能够适应不可预测的工作负载并仍然提供高度安全架构的应用程序堆栈,请考虑WAAP引擎和规则集设计。 优化后,这些因素可以增强Web应用程序的性能。

有关Edgio WAAP智能引擎和规则集如何快速,准确地保护您的Web应用程序的更多信息,请立即联系我们。