随着越来越多的应用程序开发团队将安全性集成到其工作流中,他们正在从应用程序管道,工作流和性能角度来研究安全性对其应用程序的影响。
由于合规性要求,Web应用程序和API保护(WAAP)通常部署在应用程序堆栈中。 但是,随着组织将其工作负载迁移到云,并开始将安全性嵌入其应用程序的结构中,WAAP的角色正在不断演变。 组织需要能够扩展和适应不断变化的云架构和不断增长的安全威胁的WAAP平台。
在本文中,我们将回顾如何调整WAAP引擎(更具体地说,专为该引擎而构建的规则集),以扩展到云工作流,并提高Web应用程序的性能,同时保持对在线威胁的强大防护。
考虑WAAP引擎及其ruleset
WAAP应该是应用程序堆栈和网络安全计划的重要组成部分。 传统上,WAAP与应用程序开发断开连接,被视为应用程序外部的安全层。 但是,现代WAAP架构和工具帮助SecOps在CI/CD流程中与DevOps协作,包括在开发应用程序时创建规则和进行测试。 当正确用于分析遍历应用程序基础结构的流量时,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管理员感到惊讶。
有些协议实施规则相当简单,不必在规则集生态系统中”活”。 为了解决这一问题,我们首先开发了一个规则集,该规则集通过将OWASP规则集直接实施到非ModSecurity格式的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应用程序的更多信息,请立即联系我们。