基于云原生网关插件实现WAF防护能力
1. 实验资源方式简介及开始实验
云起实验室实验资源方式介绍
云起实验室支持领取免费试用额度、个人账户资源两种实验资源方式。
- 领取免费试用额度
- 使用个人账号开通试用,平台仅提供手册参考。
- 所有实验操作将保留至您的账号,请谨慎操作。
- 在实验页面下方卡片会展示本实验支持的试用规格,可以选择你要试用的云产品资源进行开通。您在实验过程中,可以随时用右下角icon唤起试用卡片。阿里云支持试用的产品列表、权益及具体规则说明请参考开发者试用中心。
- 说明:试用云产品开通在您的个人账号下,并占用您的试用权益。如试用超出免费试用额度,可能会产生一定费用。
- 个人账户资源
- 使用您个人的云资源进行操作,资源归属于个人。
- 所有实验操作将保留至您的账号,请谨慎操作。
- 平台仅提供手册参考,不会对资源做任何操作。
- 说明:使用个人账户资源,在创建资源时,可能会产生一定的费用,请您及时关注相关云产品资源的计费概述。
准备开始实验
在实验开始前,请您选择其中一种实验资源,单击确认开启实验。
2. 领取免费试用资源
实验前必看!
- 如果您的阿里云账号只能领取部分免费试用产品,请您领取符合免费试用资格的产品,然后进入实验,不满足免费试用资格的产品将会使用个人账户资源进行创建,并会产生一定的费用,请您及时关注账户扣费。例如,您若无法领取传统负载均衡CLB的免费试用,那么本实验会产生负载均衡CLB的费用,以云原生网关运行2小时为例,预计消耗不到2元。
- 为了避免资源浪费并造成账号扣费的情况,请严格按照本文提供的参数进行配置。在实验完成之后,请您及时删除或禁用压测任务。
- 在实验开始前,请您选择开通免费试用。
- 开通微服务引擎云原生网关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 在网关列表页面,等待状态变为运行正常,即可正常使用。
- 领取完免费试用后,返回资源领取界面,单击我已开通,进入实验。
说明:如果您的阿里云账号只能领取部分免费试用产品,请您领取符合免费试用资格的产品,然后进入实验,不满足免费试用资格的产品将会使用个人账户资源进行创建,并会产生一定的费用,请您及时关注账户扣费。
3. 创建资源
说明:如果您选择的个人资源,请您根据如下操作,创建微服务引擎云原生网关MSE实例,会产生一定的费用,具体计费详情,请参见计费概述。如果您已创建微服务引擎云原生网关MSE实例,请您跳过本步骤,直接进行下一小节操作。
- 前往MSE网关管理控制台。
说明:如果提示需要创建关联角色AliyunServiceRoleForMSE,请您单击立即授权。
- 在网关列表页面,单击创建网关。
- 在云原生网关购买页面,完成参数信息配置。本试用教程以表格中的参数信息为例,未提及参数保持默认值,单击立即购买。
- 在确认订单页面,选中服务协议,单击立即开通。
- 在购买完成页面,单击前往控制台。
- 在实例列表页面,等待状态变为运行中,即可正常使用。
4. 创建服务
本步骤指导您如何配置网关代理的服务。
- 前往MSE网关管理控制台。
- 在左侧导航栏,选择云原生网关>网关列表。
- 在网关列表页面,找到您创建的网关,单击名称。
- 在左侧导航栏,选择服务管理>服务列表。
- 在服务列表页面,单击创建服务。
- 在创建服务面板,服务来源选择DNS域名,服务名称设置为test,服务端口设置为80,域名列表输入为higress.cn,单击确定。
说明:higress.cn域名为测试域名,仅限实验中使用,请勿乱用。
5. 创建路由
本步骤指导您如何配置网关路由。
- 在左侧导航栏,选择路由管理>路由配置。
- 在路由配置页面,单击创建路由。
- 在创建路由面板的请求信息配置中,路由名称设置为test,关联域名选择*,匹配规则区域的路径选择前缀匹配和输入/,单击下一步。
- 在创建路由面板的目标服务配置中,目标服务选择单服务,服务选择上一小节创建的名称为test的服务,单击保存并上线。
6. 安装waf插件
本步骤指导您如何安装waf插件并配置插件规则。
- 在左侧导航栏,选择插件市场。
- 在全部插件页签,在搜索框中输入waf,找到waf的插件,然后单击waf插件的未启用。
- 在使用引导页签,单击插件配置。
- 在插件配置页签的插件配置区域,单击编辑。
- 在插件配置页签的插件配置区域,添加如下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的请求,您可根据自身需求添加规则。
- 在插件配置页签的生效开关区域,打开生效开关。
- 在开启对话框中,单击确定。
- 点击插件日志页签,在日志投递配置对话框中,单击确定。
7. 使用waf插件来防御SQL注入和SHELL注入攻击
您可以构建不同攻击类型的请求,测试waf插件的防护功能。
- 打开本机的命令行窗口,执行如下命令,构建url为/admin的请求。
说明:您需要将<slb ip>替换为网关实例的公网。
curl http://<slb ip>/admin -i
SLB ip 可以在基本概览中找到,选择公网的 SLB ip 方便测试:
请求返回如下结果。
- 在插件配置页签,单击插件日志。
- 在插件日志页签,您可查看到waf插件产生的日志。
- 在命令行窗口,执行如下命令,进行SQL注入。
curl http://<slb ip>/bytes -d "mysql -uroot -p123456 -e 'select * from users'" -i
返回如下结果。
- 在插件日志页签,我们可以观察到使用waf来防御SQL攻击的日志。
- 在命令行窗口,执行如下命令,使用shell注入进行攻击。
curl "http://<slb ip>/byte" -d "bash -c 'rm -rm /'" -i
返回如下结果。
- 在插件日志页签,我们可以观察到使用waf来防御shell注入攻击的日志。
至此,我们体验了如何通过waf插件来加码网关的安全防护示例。
8. 清理及后续
完成教程后,请及时清理测试数据和试用资源。
- 微服务引擎云原生网关MSE
- 如果无需继续使用微服务引擎云原生网关MSE,请前往MSE网关管理控制台,找到目标网关,选择右侧操作列中的图标>释放实例。在释放对话框中,选中是否同时删除网关创建时代购的SLB实例,单击确定。
- 如果仍需要继续使用微服务引擎云原生网关MSE,请随时关注账户扣费情况。
实验地址:https://developer.aliyun.com/adc/scenario/0f542b390e8344d4849c974d02c3c076