云原生网关:将平安、流量和微服务三合一
作为面向南北向的公网网关,应用 Waf 防护异样流量是很惯例的需要,而且随着互联网环境变得越来越简单,用户对防护的诉求是继续加强的,惯例做法是将流量先接入 Waf 平安网关,过滤后再将流量转发给流量网关,最初达到微服务网关,一个典型的多层网关架构如下图所示:
在这个架构中,用 WAF 网关实现平安能力,Ingress 网关实现集群入口网关能力(非 K8s 场景或会部署一层 Nginx),SCG(Spring Cloud Gateway)实现微服务网关能力。这样的架构下,须要对每一层网关都进行容量评估,每一层网关都是潜在的瓶颈点,都可能须要进行扩容。这样造成的资源老本和运维人力老本都是微小的。并且每多一层网关,就多一层可用性危险。一旦呈现可用性问题,多层网关会导致问题定位复杂度显著回升,对应的均匀故障复原工夫(MTTR)将大幅减少。
云原生网关提出了将平安、流量、微服务网关三合一的概念,架构如下图所示:
采纳云原生网关三合一的架构,能够显著降低成本,并进步零碎整体可用性。同时这也合乎 DevSecOps 的微服务演进趋势,微服务开发者能够更多地从业务接口视角关注安全性,而不是采纳所有路由一刀切的 WAF 防护模式。
云原生网关技术架构演进的过程如下图所示:
技术架构演进的背地是组织架构演进,这也是微服务 DevOps 始终在强调的,要围绕开发者为外围,从而晋升微服务开发效率。向 DevSecOps 演进并没有捷径,仍然须要开发角色和运维角色之间的双向奔赴,突破传统开发与运维之间的壁垒,造成从开发、部署、平安经营这样一个全功能化的麻利团队。
云原生网关平安防护实际
云原生网关以 WAF 插件模式提供平安能力,实现了基于 ModSecurity 的规定防护引擎,能够依据用户配置的规定屏蔽可疑申请,并反对 OWASP CRS,为站点提供根底的防护性能。
插件配置阐明
插件应用简略,并且反对路由级 / 域名级细粒度防护,配置字段包含:
配置示例如下:
- 启用默认配置,进行拦挡
useCRS: true
- 启用默认配置,仅观测,不拦挡
useCRS: true
secRules:
- "SecRuleEngine DetectionOnly"
- 自定义防护规定
useCRS: true
secRules:
- "SecRule REQUEST_URI \"@streq /admin\"\"id:101,phase:1,t:lowercase,deny\""-"SecRule REQUEST_BODY \"@rx maliciouspayload\" \"id:102,phase:2,t:lowercase,deny\""
依据该配置,以下申请将被禁止拜访:
curl http://example.com/admin
curl http://example.com -d "maliciouspayload"
- 对特定路由或域名开启
useCRS: true
secRules:
- "SecRule REQUEST_URI \"@streq /admin\"\"id:101,phase:1,t:lowercase,deny\""-"SecRule REQUEST_BODY \"@rx maliciouspayload\" \"id:102,phase:2,t:lowercase,deny\""
_rules_:
- _match_route_:
- "route-1"
secRules:
- "SecAction \"id:102,phase:1,deny\""
- _match_domain_:
- "*.example.com"
- test.com
secRules:
- "SecAction \"id:102,phase:1,pass\""
此例 match_route 中指定的 route-1 即在创立网关路由时填写的路由名称,当匹配到这两个路由时,将应用此段配置;此例 match_domain 中指定的 *.http://example.com 和 http://test.com 用于匹配申请的域名,当发现域名匹配时,将应用此段配置;配置的匹配失效程序,将依照 rules 下规定的排列程序,匹配第一个规定后失效对应配置,后续规定将被疏忽。
开启插件
抉择一个网关实例,点击插件市场,搜寻 waf,点击进入插件配置界面:
在控制台填写 WAF 防护规定,启动 WAF 插件:
能够在插件日志一栏查看插件产生的日志(下图为 shell 注入攻打时 WAF 插件产生的日志):
攻防示例
向网关发送简略的 web 攻打申请,示例如下:
- shell 注入攻防示例
- sql 注入攻防示例
- 近程文件蕴含(RFI)攻防示例
- xss 攻防示例
- php 注入攻防示例
整体防护能力评估
GoTestWAF[3]是一款 API 和 OWASP 攻打模仿工具,反对包含 REST、GraphQL、gRPC、WebSockets、SOAP、XMLRPC 等多种 API 协定,旨在评估 Web 利用平安解决方案,如 API 平安代理、Web 利用防火墙(WAF)、IPS、API 网关等。该工具应用搁置在 HTTP 申请不同局部的编码无效负载生成歹意申请:其注释、标头、URL 参数等,涵盖了常见的各种攻打类型,多种攻打测试后果如下图所示,测试结果表明 WAF 插件可能无效检测各种攻打类型的非法申请。
GoTestWAF 提供了基于 ModSecurity 的四个 benchmark,benchmark 中 paranoia 示意防护等级,数值越大,防护等级越高,overall score 得分越高。WAF 插件的 overall score 为 74.1,超过了防护等级最高的 benchmark,表明插件具备较好的防护能力。
阿里云 Web 利用防火墙
云原生网关提供的收费 WAF 插件仅反对根底的防护规定,如您有更高的防护需要,可选购阿里云 Web 利用防火墙[4],在领有更高的防护能力、更高的性能之外,还能为您的利用购买一份保险。
在 WAF 控制台 [5] 能够治理防护规定:
在接入治理一栏能够配置网关实例的接入:
也能够在网关实例处配置接入 WAF:
相干链接:
[1] coreruleset
https://github.com/coreruleset/coreruleset/tree/v3.3.2?spm=5176.mse-ops.0.0.ef3f142fSPw8XV&file=v3.3.2
[2] ModSecurity 中文手册
https://help.aliyun.com/document_detail/121053.html
[3] GoTestWAF
https://github.com/wallarm/gotestwaf
[4] 阿里云 Web 利用防火墙
https://help.aliyun.com/document_detail/446889.html
[5] WAF 控制台
https://account.aliyun.com/login/login.htm?oauth_callback=htt…
点击立刻收费试用云产品 开启云上实际之旅!
作者:刘晓瑞(钰诚)
原文链接
本文为阿里云原创内容,未经容许不得转载。