基于云原生网关插件实现WAF防护能力

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 一起体验云原生网关开箱即用,支持热插拔的WAF防护能力,同时您将掌握云原生网关上的插件使用方式

基于云原生网关插件实现WAF防护能力


1. 实验资源方式简介及开始实验

云起实验室实验资源方式介绍

云起实验室支持领取免费试用额度、个人账户资源两种实验资源方式。

  • 领取免费试用额度
  • 使用个人账号开通试用,平台仅提供手册参考。
  • 所有实验操作将保留至您的账号,请谨慎操作。
  • 在实验页面下方卡片会展示本实验支持的试用规格,可以选择你要试用的云产品资源进行开通。您在实验过程中,可以随时用右下角icon唤起试用卡片。阿里云支持试用的产品列表、权益及具体规则说明请参考开发者试用中心
  • 说明:试用云产品开通在您的个人账号下,并占用您的试用权益。如试用超出免费试用额度,可能会产生一定费用。

  • 个人账户资源
  • 使用您个人的云资源进行操作,资源归属于个人。
  • 所有实验操作将保留至您的账号,请谨慎操作。
  • 平台仅提供手册参考,不会对资源做任何操作。
  • 说明:使用个人账户资源,在创建资源时,可能会产生一定的费用,请您及时关注相关云产品资源的计费概述。

准备开始实验

在实验开始前,请您选择其中一种实验资源,单击确认开启实验

2. 领取免费试用资源

实验前必看!

  • 如果您的阿里云账号只能领取部分免费试用产品,请您领取符合免费试用资格的产品,然后进入实验,不满足免费试用资格的产品将会使用个人账户资源进行创建,并会产生一定的费用,请您及时关注账户扣费。例如,您若无法领取传统负载均衡CLB的免费试用,那么本实验会产生负载均衡CLB的费用,以云原生网关运行2小时为例,预计消耗不到2元。
  • 为了避免资源浪费并造成账号扣费的情况,请严格按照本文提供的参数进行配置。在实验完成之后,请您及时删除或禁用压测任务。
  1. 在实验开始前,请您选择开通免费试用

  1. 开通微服务引擎云原生网关MSE免费试用。

2.1 首先您需要为MSE创建关联角色AliyunServiceRoleForMSE。前往MSE微服务引擎控制台

2.2 如果您已在欢迎访问微服务引擎MSE 2.0页面,单击立即授权

2.3 在确认授权对话框中,单击确认,然后单击下一步

2.4 单击立即体验微服务引擎MSE

2.5 在实验室页面下方,选择服务引擎云原生网关MSE,单击立即试用

2.6 在微服务引擎云原生网关MSE面板,完成参数信息配置。本试用教程以表格中的参数信息为例,未提及参数保持默认值,勾选服务协议后,单击立即试用,并根据页面提示完成试用申请。

参数

示例值

地域

华东1(杭州)

网关名称

自定义网关名称

资源组

默认资源组

专有网络

选择已创建的VPC。

如需创建新的专有网络,您可单击下方的前往控制台创建

可用区

杭州 可用区I,选择已创建的交换机

如需创建新的交换机,您可单击下方的添加VSwitch

公网SLB规格

简约型(slb.s1.small)

2.7 在网关列表页面,等待状态变为运行正常,即可正常使用。

  1. 领取完免费试用后,返回资源领取界面,单击我已开通,进入实验

说明:如果您的阿里云账号只能领取部分免费试用产品,请您领取符合免费试用资格的产品,然后进入实验,不满足免费试用资格的产品将会使用个人账户资源进行创建,并会产生一定的费用,请您及时关注账户扣费。

3. 创建资源

说明:如果您选择的个人资源,请您根据如下操作,创建微服务引擎云原生网关MSE实例,会产生一定的费用,具体计费详情,请参见计费概述。如果您已创建微服务引擎云原生网关MSE实例,请您跳过本步骤,直接进行下一小节操作。

  1. 前往MSE网关管理控制台

说明:如果提示需要创建关联角色AliyunServiceRoleForMSE,请您单击立即授权

  1. 网关列表页面,单击创建网关

  1. 在云原生网关购买页面,完成参数信息配置。本试用教程以表格中的参数信息为例,未提及参数保持默认值,单击立即购买

参数

示例值

付费模式

本教程以按量付费为例

地域

华东1(杭州)

网关名称

自定义网关名称

网关实例规格

2核4G

资源组

默认资源组

专有网络

选择已创建的VPC。

如需创建新的专有网络,您可单击下方的前往控制台创建

可用区

杭州 可用区I,选择已创建的交换机

如需创建新的交换机,您可单击下方的添加VSwitch

公网SLB规格

简约型(slb.s1.small)

日志服务

开启日志服务,费用请参考费用详情

链路追踪

开启链路追踪,费用请参考费用详情

  1. 确认订单页面,选中服务协议,单击立即开通

  1. 在购买完成页面,单击前往控制台

  1. 实例列表页面,等待状态变为运行中,即可正常使用。

4. 创建服务

本步骤指导您如何配置网关代理的服务。

  1. 前往MSE网关管理控制台
  2. 在左侧导航栏,选择云原生网关>网关列表

  1. 网关列表页面,找到您创建的网关,单击名称

  1. 在左侧导航栏,选择服务管理>服务列表

  1. 服务列表页面,单击创建服务

  1. 创建服务面板,服务来源选择DNS域名服务名称设置为test服务端口设置为80域名列表输入为higress.cn,单击确定

说明:higress.cn域名为测试域名,仅限实验中使用,请勿乱用。

5. 创建路由

本步骤指导您如何配置网关路由。

  1. 在左侧导航栏,选择路由管理>路由配置

  1. 路由配置页面,单击创建路由

  1. 创建路由面板的请求信息配置中,路由名称设置为test关联域名选择*匹配规则区域的路径选择前缀匹配和输入/,单击下一步

  1. 创建路由面板的目标服务配置中,目标服务选择单服务服务选择上一小节创建的名称为test的服务,单击保存并上线

6. 安装waf插件

本步骤指导您如何安装waf插件并配置插件规则。

  1. 在左侧导航栏,选择插件市场

  1. 在全部插件页签,在搜索框中输入waf,找到waf的插件,然后单击waf插件的未启用

  1. 使用引导页签,单击插件配置

  1. 插件配置页签的插件配置区域,单击编辑

  1. 插件配置页签的插件配置区域,添加如下YAML,然后单击保存
useCRS: true
secRules: 
- "SecRuleEngine On"
- "SecRule REQUEST_URI \"@streq /admin\" \"id:101,phase:1,t:lowercase,deny\""

参数说明:

  • useCRS: true可使OWASP CRS规则生效,并覆盖了常见的攻击类型。例如,SQL注入、XSS攻击、Log4j漏洞等。
  • "SecRuleEngine On"表示开启插件的防护功能。
  • "SecRule REQUEST_URI \"@streq /admin\" \"id:101,phase:1,t:lowercase,deny\""为自定义规则,拒绝url为/admin的请求,您可根据自身需求添加规则。

  1. 插件配置页签的生效开关区域,打开生效开关

  1. 开启对话框中,单击确定

  1. 点击插件日志页签,在日志投递配置对话框中,单击确定

7. 使用waf插件来防御SQL注入和SHELL注入攻击

您可以构建不同攻击类型的请求,测试waf插件的防护功能。

  1. 打开本机的命令行窗口,执行如下命令,构建url为/admin的请求。

说明:您需要将<slb ip>替换为网关实例的公网。

curl http://<slb ip>/admin -i

SLB ip 可以在基本概览中找到,选择公网的 SLB ip 方便测试:

请求返回如下结果。

  1. 插件配置页签,单击插件日志

  1. 插件日志页签,您可查看到waf插件产生的日志。

  1. 在命令行窗口,执行如下命令,进行SQL注入。
curl http://<slb ip>/bytes -d "mysql -uroot -p123456 -e 'select * from users'" -i

返回如下结果。

  1. 插件日志页签,我们可以观察到使用waf来防御SQL攻击的日志。

  1. 在命令行窗口,执行如下命令,使用shell注入进行攻击。
curl "http://<slb ip>/byte" -d "bash -c 'rm -rm /'" -i

返回如下结果。

  1. 插件日志页签,我们可以观察到使用waf来防御shell注入攻击的日志。

至此,我们体验了如何通过waf插件来加码网关的安全防护示例。

8. 清理及后续

完成教程后,请及时清理测试数据和试用资源。

  • 微服务引擎云原生网关MSE
  • 如果无需继续使用微服务引擎云原生网关MSE,请前往MSE网关管理控制台,找到目标网关,选择右侧操作列中的图标>释放实例。在释放对话框中,选中是否同时删除网关创建时代购的SLB实例,单击确定
  • 如果仍需要继续使用微服务引擎云原生网关MSE,请随时关注账户扣费情况。

实验地址:https://developer.aliyun.com/adc/scenario/0f542b390e8344d4849c974d02c3c076

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
8月前
|
存储 安全 网络协议
绕过WAF和多个防护软件提权案例
绕过WAF和多个防护软件提权案例
100 0
|
5月前
|
Kubernetes Cloud Native Docker
云原生|kubernetes|网络插件flannel二进制部署和calico的yaml清单部署总结版
云原生|kubernetes|网络插件flannel二进制部署和calico的yaml清单部署总结版
141 0
|
Kubernetes Cloud Native 网络安全
【云原生-K8s】kubeadm搭建k8s集群1.25版本完整教程【docker、网络插件calico、中间层cri-docker】
【云原生-K8s】kubeadm搭建k8s集群1.25版本完整教程【docker、网络插件calico、中间层cri-docker】
2127 0
【云原生-K8s】kubeadm搭建k8s集群1.25版本完整教程【docker、网络插件calico、中间层cri-docker】
|
9月前
|
JSON 缓存 监控
基于云原生网关的流量防护实践
本文详尽地介绍了如何在云原生网关上做流量防护,包括在不同的场景下该配置何种防护规则,并给出了详细的使用路径,可以从中体验出云原生网关的流量防护功能相对于其它网关产品限流功能的优势。作为云上网关的核心功能之一,后续我们也会持续强化流量防护功能,也欢迎大家持续关注阿里云官网的 MSE 微服务引擎产品动态。
|
5月前
|
存储 Kubernetes Cloud Native
云原生|kubernetes|centos7下离线化部署kubesphere-3.3.2---基于kubernetes-1.22.16(从网络插件开始记录)
云原生|kubernetes|centos7下离线化部署kubesphere-3.3.2---基于kubernetes-1.22.16(从网络插件开始记录)
83 0
|
5月前
|
Kubernetes Cloud Native Java
云原生|kubernetes|ingress-nginx插件部署(kubernetes-1.23和最新版controller-1.6.4)
云原生|kubernetes|ingress-nginx插件部署(kubernetes-1.23和最新版controller-1.6.4)
281 0
|
5月前
|
Kubernetes 应用服务中间件 nginx
云原生|kubernetes|ingress-nginx插件部署以及简单的应用(修订版---适用于kubernetes-1.18-1.21)
云原生|kubernetes|ingress-nginx插件部署以及简单的应用(修订版---适用于kubernetes-1.18-1.21)
92 0
|
5月前
|
Kubernetes Cloud Native Linux
云原生|kubernetes|kubernetes的网络插件calico和flannel安装以及切换
云原生|kubernetes|kubernetes的网络插件calico和flannel安装以及切换
126 0
|
8月前
|
SQL 安全 算法
Web 应用防火墙 -- 规则防护
4.4.2 白名单加白 基于请求特征对误报流量加白, 加白后的流量会被 WAF bypass,从而解决误报问题。
81 0
|
9月前
|
云安全 机器学习/深度学习 移动开发