使用 WAF 保护应用程序

一旦通过 Web 应用程序防火墙(WAF)路由应用程序,请使用 WAF 提供的各种安全功能来保护应用程序。

可以通过以下方式保护应用程序:

  • 配置保护规则
  • 使用 Bot 管理
  • 添加访问规则

配置保护规则

可以使用规则来保护应用程序,以阻止跨站点脚本编写(XSS)和 SQL 注入(SQLi)攻击。

配置保护规则:
  1. 登录到Oracle Cloud Infrastructure 控制台。
  2. 打开导航菜单。在监管和管理下,转到安全性并单击 WAF 策略
  3. 单击保护规则
    此时将显示一个包含预定义保护规则的表。
  4. 使用 RULE ID 筛选器并选择规则 941140981300
    规则详细信息显示在右侧。
  5. 选择每个规则,然后从操作下拉菜单中单击
  6. 单击全部发布
    对 WAF 策略的发布更改可能需要几分钟时间。

验证保护规则

验证保护规则是否正常工作:
  1. 从浏览器的开发人员工具页面打开网络选项卡。
  2. 从浏览器访问示例员工应用程序 http://employee.<example.com>/public/
  3. 单击新员工,并使用任何示例信息填充表单。
  4. 字段中输入以下 SQL 注入:
    SomeUser; DROP TABLE users
  5. 在浏览器的“网络 ”选项卡打开的情况下,在新员工表单上单击保存
    POST/employees403 Forbidden 一起被阻止。
  6. 运行以下 cURL 命令:
    curl -X POST http://${WAF_TARGET}/employees \ 
    -H 'host: employee.example.com' \ 
    -d '{"firstName":"Name; DROP TABLE users"}'
    该命令返回 403 错误。
  7. 通过尝试浏览器地址栏上的查询参数中的跨站点脚本编写(XSS)运行 GET 请求:
    http://employee.<example.com>/employees/?id=%3Cscript%3Ealert(%27bad%27)%3C/script%3Ein

    浏览器将返回以下内容:


    后面是 waf-bidden.png 的说明
    插图 waf-forbidn.png 的说明

前面的步骤会多次触发 WAF Block 操作。现在,返回到Oracle Cloud Infrastructure 控制台中的 WAF 策略详细信息以检查日志。
  1. 打开“员工演示策略”。
  2. 单击日志
  3. 选择跨越您尝试 SQLi 和 XSS 攻击时间的日期/时间范围。
  4. 标识带有 Action: Block 的项,展开已阻止请求的行详细信息,然后单击查看 JSON
  5. 查看以 protectionRuleDetections 和其他请求详细信息形式列出的消息。

使用 Bot 管理

Oracle Cloud Infrastructure Web Application Firewall (WAF)服务的另一项功能是其 Bot 管理功能。

在许多情况下,非人工流量构成到站点的流量百分比最大。虽然某些“良好”的机器人设计很好,但其他“坏”机器人可能会尝试内容采集、垃圾邮件、突发强制攻击或应用程序层 DDoS 攻击。

例如,您可能希望将某些已知的 Bot 加入白名单,以便进行搜索引擎优化(SEO)和内容排名,但限制人工用户对某些交互的验证。这种类型的方案可以使用 WAF 策略 Bot 管理设置轻松实现。

添加 CAPTCHA 质询

Bot 管理系统的商品之一是 CAPTCHA。使用 CAPTCHA 提供了一种简单的用户验证方法,用于确保人工交互,不需要对底层应用程序进行任何更改。

要添加 CAPTCHA 质询,请执行以下操作:
  1. Oracle Cloud Infrastructure 控制台。
  2. 打开导航菜单。在监管和管理下,转到安全性并单击 WAF 策略
  3. 打开“员工演示策略 ”,然后单击 Bot 管理
  4. 单击 CAPTCHA 质询选项卡,然后单击添加 CAPTCHA 质询
  5. CAPTCHA URL 路径字段中输入 /public/index.html 作为值。
  6. 保留原的其余字段中的默认值。
  7. 单击添加,然后单击全部发布
  8. 发布更改并恢复处于 ACTIVE 状态的 WAF 策略后,从浏览器中加载页 http://employee.<example.com>/public/index.html
    浏览器显示以下 CAPTCHA 质询:

输入正确的代码后,您无需再对应于质询配置中的 Session Duration 值的期间,就可以输入网站。

添加访问控制规则

WAF 访问控制通过限制或阻止对应用程序中可用的数据和服务的访问,来提供额外的安全层。

使用访问控制,您可以根据请求条件定义规则,包括:
  • HTTP 标头
  • URL 模式
  • IP 地址
  • 地理位置

在示例员工应用程序中,您可以从数据库中删除员工详细信息。您可能需要限制使用 Delete 功能以实现安全目的。您可以创建并应用访问规则来阻止删除请求。

要添加访问控制规则,请执行以下操作:
  1. Oracle Cloud Infrastructure 控制台。
  2. 打开导航菜单。在监管和管理下,转到安全性并单击 WAF 策略
  3. 打开员工演示策略,然后单击访问控制
  4. 单击添加访问规则
  5. 输入规则名称,例如 Prevent Delete
  6. 添加以下规则条件:
    • HTTP 方法为: DELETE
    • URL 开头为:/Employees
  7. 选择规则操作,然后选择403 禁止 (默认选项)作为设置响应代码 (块操作)。
  8. 单击添加访问规则以创建规则,然后单击全部发布

发布更改并且 WAF 策略以 ACTIVE 状态恢复后:

  1. 从浏览器的开发人员工具页面打开网络选项卡。
  2. 从浏览器访问示例员工应用程序 http://employee.<example.com>/public/
  3. 选择一个员工记录,然后单击“删除 ”按钮。

在浏览器开发人员工具部分的网络选项卡中,您会发现 WAF 已拦截此请求并阻止了 403 Forbidden 响应。

本解决方案中讨论的Oracle Cloud Infrastructure WAF 功能重点关注基本示例应用程序的安全。使用方案对于每个应用程序都是唯一的,您可以相应地配置 WAF。