开启应用的 WAF

Web 应用防火墙(Web Application Firewall)可以用于防御 SQL 注入、XSS 跨站脚本、Web 服务器漏洞、木马等常见攻击,保障网站的安全。

本文介绍如何在 OpenResty Edge 管理后台的应用中,通过页面规则开启 WAF。

第一步:进入页面规则

在应用内左侧导航栏中点击页面规则,进入规则列表页面。初始状态下列表为空,显示"暂时没有创建任何规则。"

页面规则列表

点击右上角的新建规则按钮,打开规则配置面板。

第二步:配置 WAF 模块

在新建规则面板中,可以看到以下几个区域:启用条件动作WAF代理缓存 等。

WAF 模块默认处于关闭状态,点击右侧的开关将其开启:

新建规则 - WAF 配置

WAF 规则集

WAF 模块内置了以下规则集:

规则集说明
scanner_detection扫描器检测,识别并拦截常见的漏洞扫描工具和爬虫
protocol_enforcement协议规范,强制执行 HTTP 协议标准,拦截不合规的请求
protocol_attack协议攻击,防御 HTTP 请求走私、响应拆分等协议层攻击
application_attack_lfi本地文件包含(LFI),防止攻击者读取服务器本地敏感文件
application_attack_rfi远程文件包含(RFI),防止攻击者引入并执行远程恶意文件
application_attack_rce远程代码执行(RCE),拦截试图在服务器端执行任意命令的请求
application_attack_phpPHP 代码注入,防御针对 PHP 应用的代码注入攻击
application_attack_nodejsNode.js 注入,防御针对 Node.js 应用的注入攻击
application_attack_xssXSS 跨站脚本攻击,拦截恶意脚本注入请求
application_attack_sqliSQL 注入攻击,防止攻击者通过构造 SQL 语句操控数据库
application_attack_session_fixation会话固定攻击,防止攻击者劫持用户会话
application_attack_javaJava 代码注入,防御针对 Java 应用的反序列化及代码注入攻击(如 Log4Shell)

你也可以根据需要选择需要的规则集。此外,你还可以添加自定义规则集,以及配置 WAF 白名单,相关内容将单独说明。

偏执级别

偏执级别默认为 1。级别越高,检测规则越严格,但可能产生更多误报,需根据实际情况调整。

拦截动作

触发 WAF 规则后,可配置以下几种动作:

拦截动作下拉选项

  1. 仅记录日志(默认):仅将命中记录到日志,不对请求做任何拦截或跳转。
  2. OpenResty Edge 网关服务验证码挑战 - 使用内置验证码:将终端重定向到验证码页面,填写正确验证码后,该终端在一定时间内的请求将被放行。
  3. OpenResty Edge 网关服务验证码挑战 - 使用 hCaptcha 验证码:与上一项类似,但使用 hCaptcha 进行验证。
  4. 拦截并返回 HTTP 403 状态码:直接拒绝请求,返回 403 状态码。
  5. 重定向:将请求重定向到指定的 URL。
  6. 返回页面模板:返回自定义的页面模板。
  7. 关闭连接:直接关闭 TCP 连接。
  8. 重定向验证:重定向到验证页面进行身份确认。
  9. JavaScript 挑战验证:通过 JavaScript 挑战验证请求来源是否为真实浏览器。

其他选项

  • 跨请求模式:开启后,来自同一客户端的请求分数将在 60 秒内累计计算。注意,开启此模式后,无法为每个规则集单独设置阈值。
  • 捕获响应体:开启后将捕获响应内容用于进一步分析。

第三步:配置启用条件(可选)

如需针对特定请求开启 WAF,可展开顶部的启用条件区域进行配置。例如,可以根据请求 URL 前缀、请求头、客户端 IP 等条件,有选择地对某些路径启用对应的 WAF 规则集。

若不设置条件,则该规则对所有请求生效。

管理多条 WAF 规则

你可以添加多条页面规则,为不同的请求路径配置不同的 WAF 规则集。

需要注意的是:若多条规则的条件存在重叠,排序靠后(后生效)的规则会覆盖前面的规则。可通过调整顺序按钮对规则进行排序,并使用检查规则功能验证规则配置的正确性。