操作指南
规则引擎配置
规则引擎是底层通用的请求匹配机制,Web防护规则、流量防护规则、网页防篡改、名单防护等功能模块均基于此机制定义规则的触发条件。
请求内容例子
POST /waf/waf_get_domain_list?test=a&test2=b HTTP/1.1
Host: demo.jxwaf.com:8000
Content-Length: 10
Accept: application/json, text/plain, */*
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36
Content-Type: application/json;charset=UTF-8
Origin: http://demo.jxwaf.com:8000
Referer: http://demo.jxwaf.com:8000/
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: sessionid=ie7l7u89zeqf93syv4jvolhr0ljgngn5
Connection: close
{"page":1}
匹配参数
| 匹配参数选项 | 获取数据说明 |
|---|---|
| http_args:path | /waf/waf_get_domain_list |
| http_args:query_string | test=a&test2=b |
| http_args:method | POST |
| http_args:src_ip | 1.1.1.1 |
| http_args:raw_body | {"page":1} |
| http_args:version | 1.1 |
| http_args:scheme | HTTP |
| http_args:raw_header | 获取原始 header 内容 |
| header_args:host | demo.jxwaf.com:8000 |
| header_args:cookie | sessionid=ie7l7u89zeqf93syv4jvolhr0ljgngn5 |
| header_args:referer | http://demo.jxwaf.com:8000/ |
| header_args:user_agent | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.118 Safari/537.36 |
| header_args: | 获取指定的 header 值,例如这里输入 header_args:Accept-Encoding,则返回 "gzip, deflate, br" |
| cookie_args: | 获取指定的 cookie 值,例如这里输入 cookie_args:sessionid,则返回"ie7l7u89zeqf93syv4jvolhr0ljgngn5" |
| uri_args: | 获取指定的查询字符串参数的值,例如输入 uri_args:test ,则返回 "a" |
| post_args: | 获取指定的请求体参数的值,假如请求体的内容为 page=1&number=2,则输入 post_args:number,则返回 "2" |
| json_post_args: | 获取指定的请求体参数的值,例如输入 json_post_args:page ,则返回 "1" |
| ctx_args: | 获取防护组件中用户自定义参数值 |
| global_name_list_result: | 获取名单防护功能中名单的匹配结果 |
参数处理
| 参数处理选项 | 处理说明 |
|---|---|
| 不处理 | 不进行处理,获取数据为 "a",则返回"a" |
| 小写处理 | 获取数据为"AbcdEf",则返回"abcdef" |
| BASE64 解码 | 获取数据为"QWJjZEVm",则返回"AbcdEf",如果解码失败,则返回 nil |
| 长度计算 | 获取数据为"AbcdEf",则返回"6" |
| URL 解码 | 获取数据为"test%3Da%26test2%3Db",则返回"test=a&test2=b" |
| UNICODE 解码 | 获取数据为"\u0073\u0073\u0073\u0061\u0061",则返回"sssaa" |
| 十六进制解码 | 获取数据为"\x61\x61\x61\x62\x62\x62",则返回"aaabbb" |
匹配方式
| 匹配方式选项 | 匹配说明 |
|---|---|
| 后缀匹配 | 获取数据为"AbcdEf",后缀匹配"cdEf"成功,后缀匹配"aaaa"失败 |
| 包括 | 获取数据为"AbcdEf", 包括匹配"cdE"成功,包括匹配"aaaa"失败 |
| 不包括 | 获取数据为"AbcdEf", 不包括匹配"aaaa"成功,不包括匹配"dEf"失败 |
| 等于 | 获取数据为"AbcdEf", 等于匹配"AbcdEf"成功,等于匹配"dEf"失败 |
| 不等于 | 获取数据为"AbcdEf", 不等于匹配"dEf"成功,不等于匹配"AbcdEf"失败 |
| 数字大于 | 获取数据为"6", 数字大于匹配"10"成功,数字大于匹配"4"失败。获取数据为"qqq",数字大于匹配"10"失败 |
| 数字小于 | 获取数据为"6", 数字小于匹配"4"成功,数字小于匹配"10"失败。获取数据为"qqq",数字小于匹配"10"失败 |
| 数字等于 | 获取数据为"6", 数字等于匹配"6"成功,数字等于匹配"10"失败。获取数据为"qqq",数字等于匹配"10"失败 |
| 数字不等于 | 获取数据为"6", 数字不等于匹配"5"成功,数字不等于匹配"6"失败。获取数据为"qqq",数字不等于匹配"10"失败 |
| 参数存在判断 | 判断参数是否存在,只有两个选项,参数存在 和 参数不存在 |
执行动作说明
以下为各模块通用的执行动作,具体可用动作因模块而异(详见各模块说明):
- 阻断请求
拦截请求,返回默认拦截页面。
- 拒绝响应
服务器不返回任何数据给客户端。适合 CC 防护场景,可以避免出口带宽被打满的情况。
- 观察模式
仅记录日志不拦截,日志可以在 运营中心 -> 日志查询 中查看详情。
- 人机识别
无交互认证:无需用户交互,通过人机识别算法快速识别当前环境是否为正常浏览器环境(可理解为 5 秒盾)。
滑块认证:在无交互认证的基础上,增加滑块验证,通过后继续无交互认证。
拼图认证:在无交互认证的基础上,增加拼图验证,通过后继续无交互认证。
选字认证:在无交互认证的基础上,增加选字验证,通过后继续无交互认证。
- 安全防护全加白
跳过所有安全防护模块(Web 和流量),不进行检测和处置。
- Web安全防护加白
仅跳过 Web 安全防护模块的检测。
- 流量安全防护加白
仅跳过流量安全防护模块的检测。
- 网络封禁
在网络层封禁攻击 IP,需设置封禁持续时间(秒)。封禁 IP 可通过 运营中心 -> 网络封禁IP名单 查看。
网站接入
进入「网站接入」页面,可查看和管理所有已接入的网站。
新增网站
域名/IP格式示例:
1.1.1.1
1.1.1.1:8000
demo.jxwaf.com
*.jxwaf.com:8000
| 配置项 | 说明 |
|---|---|
| 域名/IP | 请输入IP或域名,域名支持通配符,例如 *.jxwaf.com |
| 描述 | 选填,网站描述信息 |
| 协议类型 | HTTP/HTTPS(HTTPS需提前配置SSL证书,详见证书管理) |
| 回源地址 | 支持IP和域名,域名需要省略 https:// 或 http:// |
| HTTP回源端口 | 默认 80 |
| HTTPS回源端口 | 默认 443 |
| 回源协议 | 需与源站端口匹配(80→http,443→https),支持 http、https、协议跟随 |
| 负载均衡 | 轮询或 IP_HASH(会话保持) |
| WAF前存在代理 | 开启后从X-Real-IP或X-Forwarded-For获取真实IP |
| 新建连接超时时间 | 源站新建连接超时时间(秒),默认 5 |
| 读连接超时时间 | 读取源站响应的超时时间(秒),默认 60 |
| 写连接超时时间 | 发送请求到源站的超时时间(秒),默认 60 |
证书管理
进入「证书管理」页面,可上传和管理 SSL 证书,用于网站 HTTPS 接入。
| 配置项 | 说明 |
|---|---|
| 证书域名 | 必填,证书对应的域名,例如 *.jxwaf.com |
| 证书内容 | 必填,SSL 证书(公钥)内容 |
| 私钥内容 | 必填,SSL 证书私钥内容 |
证书上传后,在「网站接入」新增或编辑网站时,选择 HTTPS 协议后即可关联已上传的证书。
防护配置
从左侧导航「防护配置」菜单进入,包含 Web安全防护 和 流量安全防护 两大类:
| Web安全防护 | 流量安全防护 |
|---|---|
| Web防护引擎 | 流量防护引擎 |
| Web防护规则 | 流量防护规则 |
| 网页防篡改 | IP区域封禁 |
| Web白名单规则 | 流量白名单规则 |
以下各章节分别介绍每个功能模块的详细配置。
Web 防护引擎
- Web防护引擎状态:开启/关闭 AI 模型防护总开关
开启后可选择以下防护模式:
- 模型训练:纯学习模式。通过在线蒸馏技术将 AI 大模型的检测能力继承至本地推理引擎,仅训练不处置。适用于业务上线初期的学习阶段
- 日常防护:业务优先策略。遇到未知请求先放行,同时可结合语义分析引擎进行检测;待模型通过在线蒸馏训练完成后,以模型训练结果为准进行防护
- 重保防护:安全优先策略。遇到未知请求先拦截,同时通过在线蒸馏实时更新本地模型,后续同类请求精准放行。适用于重保期间或高安全要求场景
- 离线防护:仅使用本地已训练的模型进行防护,不与 AI 模型服务通信。适用于无法连接外网的隔离环境
四种防护模式的处理流程:
请求到达
│
├── 模型训练 ──→ 在线蒸馏训练 ──→ 放行
│
├── 日常防护 ──→ 模型已识别? ──是──→ 按模型结果处置
│ │
│ 否
│ │
│ 放行 → 语义分析引擎检测 → 在线蒸馏更新模型
│
├── 重保防护 ──→ 模型已识别? ──是──→ 按模型结果处置
│ │
│ 否
│ │
│ 拦截 → 在线蒸馏更新模型
│
└── 离线防护 ──→ 本地推理引擎检测 ──→ 按本地模型结果处置
语义分析防护(日常防护模式下可选):
- 开启:检测到攻击后拦截
- 观察:仅记录日志不拦截
- 关闭:不使用语义分析防护
AI服务提供商:
- JXWAF:由JXWAF提供AI模型服务,用户可免费使用
防护状态说明:
开启状态下,检测到攻击会返回默认拦截页面。观察状态下,仅记录日志不拦截,日志可以在 运营中心 -> 日志查询 中查看详情
Web 防护规则
通过自定义规则匹配请求,实现对特定 URL、参数、请求头的精准防护。
规则支持以下元素:
- 规则名称:规则唯一标识
- 规则描述:描述规则用途
- 规则匹配:规则匹配条件
- 执行动作:阻断请求、观察模式
配置示例:禁止访问 /admin 目录,执行动作为阻断请求。
网页防篡改
- 规则名称:规则唯一标识
- 规则描述:描述规则用途
- 规则匹配:规则匹配条件
- 页面地址:输入需要防篡改防护的页面地址,例如
https://www.jxwaf.com,点击获取按钮即可获取页面内容 - 页面内容:通过页面地址获取到的页面内容,可以人工进行调整,后续请求直接返回该内容,不进行回源获取
- 内容类型:设置返回内容的 Content-Type
当规则匹配成功后,WAF 会直接返回已缓存的页面内容,不会回源获取,从而防止页面被篡改。
Web 白名单规则
对特定请求跳过Web安全防护检测
- 规则名称:规则唯一标识
- 规则描述:描述规则用途
- 规则匹配:规则匹配条件
- 执行动作:Web安全防护加白(仅跳过 Web 安全防护模块)、观察模式
配置示例:对公司内网 IP 192.168.1.0/24 的请求执行 Web安全防护加白,跳过检测。
流量防护引擎
- 流量防护引擎状态:开启/关闭流量防护引擎总开关
- 防护预案:日常观察 / 日常防护 / 攻击防护 / 紧急防护
防护预案说明:
- 日常观察:仅记录日志不处置,适用于观察阶段的业务
- 日常防护:对明显攻击进行处置,平衡安全与业务可用性
- 攻击防护:严格处置,适用于正在遭受攻击的场景
- 紧急防护:最严格策略,适用于业务已被攻击且不可用的紧急情况
以下各防护子模块可独立开启/关闭:
IP访问限制
- IP访问限制:开启/关闭
- 触发条件:统计时间 xx 秒内,同一 IP 请求次数 > xx 次
- 执行动作:对该 IP 执行处置,持续时间 xx 秒
IP数量限制
- IP数量限制:开启/关闭
- 触发条件:统计时间 xx 秒内,访问的独立 IP 数 > xx 个
- 执行动作:对超出限制的新访问 IP 执行处置
域名访问限制
- 域名访问限制:开启/关闭
- 触发条件:统计时间 xx 秒内,对同一域名的请求次数 > xx 次
- 执行动作:对超出限制的请求执行处置
SSL指纹防护
- SSL指纹防护:开启/关闭
- 触发条件:检测到非浏览器 SSL 指纹(脚本、爬虫或自动化工具等)
- 执行动作:对非浏览器 SSL 指纹的访问执行处置
仅对 HTTPS 请求生效。
无差别紧急防护
- 无差别紧急防护:开启/关闭
- 触发条件:所有请求生效
- 执行动作:对所有请求执行处置
各子模块中可选的执行动作类型,详见 执行动作说明。
流量防护规则
自定义流量防护规则,支持通过匹配条件筛选请求,并按统计实体进行频率控制。
- 规则名称:规则唯一标识
- 规则描述:描述规则用途
- 规则匹配:设置匹配条件,不开启则对所有请求生效
- 统计对象:统计攻击实体,如 IP、Cookie 中的 session 等
- 统计时间(秒):统计时间窗口
- 请求次数超过:触发处罚的阈值
- IP处罚方式:阻断请求 / 拒绝响应 / 人机识别 / 网络封禁 / 观察模式
- IP处罚持续时间:处罚持续时间(秒)
配置例子:
规则匹配 关闭
统计对象 http_args:src_ip + http_args:path
统计时间(秒) 60
请求次数超过 100
IP处罚方式 阻断请求
IP处罚持续时间 3600
同一 IP 地址针对同一个 URI,在 60 秒内发起超过 100 次请求后,将被阻断 3600 秒。
如果同一 IP 访问不同的 URI,在 60 秒内发起超过 100 次请求,则不符合规则匹配条件,不会触发处罚。
IP 区域封禁
- IP区域封禁状态:开启/关闭
- 匹配模式:白名单模式(仅允许列表内区域访问)/ 黑名单模式(禁止列表内区域访问)
- 名单区域:选择对应的国家或地区
- 执行动作:阻断请求 / 拒绝响应 / 观察模式 / 人机识别
例如开启白名单模式并选择「中国大陆」,则非中国大陆的 IP 访问将被处置。
流量白名单规则
对特定请求跳过流量安全防护检测:
- 规则名称:规则唯一标识
- 规则描述:描述规则用途
- 规则匹配:设置匹配条件
- 执行动作:流量安全防护加白(仅跳过流量安全防护模块)、观察模式
配置示例:对搜索引擎爬虫 IP 段 66.249.0.0/16 的请求执行流量安全防护加白,避免误限速。
名单防护
名单防护可创建自定义名单,用于在防护规则中作为匹配条件使用。
名单管理
- 名单名称:名单的唯一标识
- 名单描述:名单用途说明
- 过期时间:默认永久生效,可自定义过期时间(秒)
名单内容
进入名单后,可添加名单内容项:
| 配置项 | 说明 |
|---|---|
| 名单值 | 名单中的匹配值,如 IP 地址 192.168.1.1 或路径 /admin |
| 过期时间 | 该项的过期时间(秒),默认跟随名单的过期时间 |
名单创建后,可在防护规则中使用
global_name_list_result匹配参数引用名单匹配结果。
防护组件
防护组件是 JXWAF 的可扩展功能模块,支持用户自定义防护逻辑。
组件管理
| 配置项 | 说明 |
|---|---|
| 组件名称 | 必填,组件的唯一标识 |
| 组件描述 | 选填,描述组件功能 |
| 组件代码 | 必填,组件的 Lua 代码,定义自定义防护逻辑 |
| 组件配置 | 必填,组件配置(JSON 格式),定义组件的规则和参数 |
组件操作
- 新建组件:创建自定义防护组件
- 编辑组件:修改组件的代码和配置
- 启用/禁用:控制组件是否生效
- 优先级调整:调整组件执行顺序(置顶、上移、下移)
- 导入组件:通过 JSON 配置批量导入组件
- 导出组件:将选中组件导出为 JSON 配置文件
- 导入远程组件:从远程仓库导入公开组件
组件中的自定义参数可通过
ctx_args匹配参数在防护规则中引用。
运营中心
数据统计
展示 WAF 的整体防护数据概览,包括:
- 攻击趋势:按时间维度展示攻击请求的变化趋势
- 攻击类型分布:展示各类 Web 攻击(SQL注入、XSS、命令执行等)的占比
- 攻击来源分布:按国家/地区展示攻击 IP 的地理分布
- 防护总览:请求总数、拦截数、观察数等核心指标
攻击事件
展示检测到的攻击事件列表,每条事件包含:
| 字段 | 说明 |
|---|---|
| 时间 | 攻击发生的时间 |
| 攻击类型 | 如 SQL注入、XSS、命令执行、代码执行等 |
| 攻击IP | 发起攻击的源 IP |
| 目标域名 | 被攻击的网站域名 |
| 目标URL | 被攻击的 URL 路径 |
| 处置动作 | 阻断 / 观察 |
| 详情 | 点击可查看攻击的详细请求内容和规则匹配信息 |
AI模型蒸馏记录
展示 AI 大模型在线蒸馏的训练记录,帮助用户了解模型的训练状态。
| 字段 | 说明 |
|---|---|
| 时间 | 蒸馏任务执行时间 |
| 目标域名 | 训练数据来源的域名 |
| 请求内容 | 触发蒸馏的请求详情 |
| 训练结果 | 蒸馏后的模型识别结果 |
网络封禁IP名单
展示所有被网络层封禁的 IP 列表:
| 字段 | 说明 |
|---|---|
| IP地址 | 被封禁的 IP 地址 |
| 封禁时间 | IP 被封禁的时间 |
| 解封时间 | IP 自动解封的时间 |
| 封禁原因 | 触发封禁的规则说明 |
可手动对已封禁的 IP 进行解封操作。
日志查询
查询所有经过 WAF 的请求日志,支持按时间范围、域名、攻击类型等条件筛选。
| 字段 | 说明 |
|---|---|
| 时间 | 请求时间 |
| 源IP | 请求来源 IP |
| 域名 | 请求的目标域名 |
| URL | 请求的 URL 路径 |
| 请求方法 | GET / POST 等 |
| 状态码 | WAF 返回的 HTTP 状态码 |
| 处置动作 | 放行 / 阻断 / 观察 等 |
| 攻击类型 | 如为攻击请求,展示攻击类型 |
| 详情 | 点击可查看完整请求和响应内容 |
节点状态
展示 WAF 节点的运行状态:
| 字段 | 说明 |
|---|---|
| 节点状态 | 在线 / 离线 |
| 运行时长 | 节点已持续运行的时间 |
| 内存使用 | 当前内存使用量 |
| 连接数 | 当前活跃连接数 |
| 请求数 | 节点处理的请求总数 |
