操作指南
引擎配置说明
匹配参数
waf_log
由接入方(如 JXWAF)上报的请求日志数据,包含 HTTP 请求/响应相关字段。具体可用字段取决于接入方式,可在控制台 控制台配置 → waf_log参数自定义配置 中查看和自定义字段列表。
使用 JXWAF 接入时,默认包含以下常见字段:
- 请求信息:
host(目标域名)、uri(请求路径)、query_string(查询参数)、method(请求方法)、request_uri(完整请求URI)、scheme(http/https)、version(HTTP协议版本) - 请求头/体:
cookie(Cookie头)、raw_headers(完整请求头)、user_agent(User-Agent头)、raw_body(原始请求体) - 客户端信息:
src_ip(客户端IP)、raw_src_ip(原始客户端IP)、iso_code(国家ISO代码)、city(城市)、jxwaf_devid(设备标识符) - 响应信息:
status(HTTP响应状态码)、raw_resp_headers(完整响应头)、raw_resp_body(原始响应体) - 后端信息:
upstream_addr(后端服务器地址)、upstream_response_time(后端处理时间)、upstream_status(后端状态码) - SSL信息:
ssl_protocol(SSL/TLS协议版本)、ssl_cipher(加密套件名称) - 性能指标:
request_time(请求时间)、process_time(请求总耗时) - 系统字段:
group_name(网站分组)、request_uuid(请求唯一ID)、waf_node_uuid(节点UUID)、waf_module(WAF防护模块)、waf_policy(WAF防护策略)、waf_action(WAF执行动作)、waf_extra(附加信息)
cookie_table
获取指定的cookie值
query_string_table
获取指定的query_string参数值,例如 query_string_table:aaa , 可以获取 a=1&aaa=2 中aaa的值,值为 2
body_table
获取指定的请求体参数的值
json_body_table
解析JSON请求体后的结构化数据,例如 json_body_table:user_id ,可以获取 {"user_id":"xxx"} 的值
ctx
获取组件中用户自定义的参数值
string
返回输入的字符串
policy_args
获取 检测策略配置 -> 策略参数配置 中 指定参数的配置内容,通过配置内容获取具体的参数值
global_dict
根据全局字典的配置,获取对应的字典值
inner_dict
根据内部字典的配置,获取对应的字典值
base_component_result
获取基础组件的匹配结果,可以选择匹配方式中的 参数存在判断 ,来确定是否匹配成功
name_list_result
获取名单匹配的匹配结果,可以选择匹配方式中的 参数存在判断 ,来确定是否匹配成功
rule_result
获取规则匹配的匹配结果,可以选择匹配方式中的 参数存在判断 ,来确定是否匹配成功
analysis_component_result
获取分析组件的匹配结果,可以选择匹配方式中的 参数存在判断 ,来确定是否匹配成功
参数处理
不处理
不进行处理,获取数据为 "a",则返回"a"
URL解码
获取数据为"test%3Da%26test2%3Db",则返回"test=a&test2=b"
长度计算
获取数据为"AbcdEf",则返回“6”
小写处理
统一转为小写,获取数据为"AbcdEf",则返回“abcdef”
BASE64解码
获取数据为"QWJjZEVm",则返回"AbcdEf",如果解码失败,则返回 nil
UNICODE解码
获取数据为"\u0073\u0073\u0073\u0061\u0061",则返回"sssaa"
十六进制解码
获取数据为"\x61\x61\x61\x62\x62\x62",则返回"aaabbb"
匹配方式
参数存在判断
判断参数是否存在,只有两个选项,参数存在 和 参数不存在
正则匹配
通过正则表达式进行匹配,需符合PCRE的语法要求
前缀匹配
检查字符串开头
后缀匹配
检查字符串结尾
包含
检查是否包含子串
不包含
检查是否包不含子串
等于
完全匹配字符串
不等于
不匹配字符串
数字大于
参数数值与输入数值对比大于
数字小于
参数数值与输入数值对比小于
数字等于
参数数值与输入数值对比等于
数字不等于
参数数值与输入数值对比不等于
数字大于策略参数
参数数值大于指定的策略参数,系统将通过策略参数名称获取对应的策略参数配置,通过配置内容获取具体的参数值
数字小于策略参数
参数数值小于指定的策略参数,系统将通过策略参数名称获取对应的策略参数配置,通过配置内容获取具体的参数值
数字等于策略参数
参数数值等于指定的策略参数,系统将通过策略参数名称获取对应的策略参数配置,通过配置内容获取具体的参数值
数字不等于策略参数
参数数值不等于指定的策略参数,系统将通过策略参数名称获取对应的策略参数配置,通过配置内容获取具体的参数值
字典值与当前结果值相同
当前字典配置获取的数据,是否与字典键存储的字典值相同
字典值与当前结果值不同
当前字典配置获取的数据,是否与字典键存储的字典值不同
字典值与当前结果值相差大于
当前字典配置获取的数据,是否与大于字典键存储的字典值
字典值与当前结果值相差小于
当前字典配置获取的数据,是否与小于字典键存储的字典值
字典值与当前结果值相差等于
当前字典配置获取的数据,是否与等于字典键存储的字典值
字典值与当前结果值相差不等于
当前字典配置获取的数据,是否与不等于字典键存储的字典值
执行动作
检测成功
检测策略匹配成功,执行检测策略中 告警配置 和 处置配置
内部字典写入
根据内部字典配置,写入字典键和字典值
内部字典删除
根据内部字典配置,删除对应的字典记录
全局字典写入
根据全局字典配置,写入字典键和字典值
全局字典删除
根据全局字典配置,删除对应的字典记录
观察
仅进行日志记录,不执行实际动作
控制台功能说明
线上环境
- 加载操作
点击 加载 按钮 ,选择需要加载到线上环境的配置,配置需要加载到线上环境才会在节点上生效。
- 优先级调整
配置执行顺序从上到下,可以点击 优先级调整 按钮,对配置执行优先级进行调整
事件运营
- 查看详情
查看事件告警的详细信息,其中 ctx_args 为用户自定义参数,可以通过 配置管理 -> 策略告警配置 -> ctx参数记录 传入自定义参数
- 确认
确认告警事件
- 驳回
驳回告警事件
- 加白
对告警进行加白处理,可以通过 配置管理 -> 策略告警配置 -> 加白配置 设置加白执行的动作
- 处置
对告警进行处置处理,可以通过 配置管理 -> 策略告警配置 -> 处置配置 设置处置执行的动作
行为轨迹
- 查看行为轨迹
查看攻击实体的行为轨迹
- 事件运营
跳转到事件运营,查看当前攻击实体的所有告警事件
日志查询
查看原始日志,包括各个线上检测配置的匹配情况,检测策略开启调试模式后,可以查看各个字典的变化情况
基础组件配置
基础组件名称
基础组件描述
组件代码
需要将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
名单匹配配置
名单名称
名单描述
过期时间(秒)
默认永久生效,可自定义过期时间,当超过过期时间,会自动删除过期的条目
- 匹配参数
支持多个参数组合拼接,当某一参数不存在时,将导致匹配失败
规则匹配配置
- 规则名称
- 规则描述
- 规则匹配
- 匹配参数
- 参数处理
- 匹配方式
- 匹配内容
详细配置内容,查看 引擎配置说明
分析组件配置
分析组件名称
分析组件描述
组件代码
需要将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
检测策略配置
新增检测策略
- 检测策略名称
- 检测策略描述
- 白名单配置
- 名单配置
名单匹配成功,自动跳过检测策略
- 规则配置
规则匹配成功,自动跳过检测策略
- 名单配置
- 告警配置
获取 配置管理 -> 策略告警配置 的配置信息,当检测策略检测成功后,根据配置信息执行相应的告警操作
- 处置配置
- 处置接口
获取 配置管理 -> 处置接口配置 的配置信息,当检测策略检测成功后,根据配置信息调用相应的接口
- 处置组件
获取 配置管理 -> 处置组件配置 的配置信息,当检测策略检测成功后,根据配置信息执行相应的组件代码
- 处置接口
- 内部字典过期时间(秒)
内部字典统一的过期时间,对所有内部字典配置生效,过期后字典键将自动删除
- 策略参数配置
匹配参数在策略内的映射,方便统一管理, 例如可以设置 count 为 string:100 ,在策略规则中 引用 policy_args:count 即可获得100,如果后续需要变更阀值,在 检测策略 里调整即可,无需修改策略规则
- 调试模式
开启调试模式后,原始日志将各个字典的变化情况,可用于调试策略和排查故障
新增策略规则
- 策略名称
- 规则名称
- 规则详情
- 规则匹配
- 匹配参数
- 参数处理
- 匹配方式
- 匹配内容 执行动作
详细配置内容,查看 引擎配置说明
加载策略仓库配置
- 仓库地址
输入策略仓库配置地址,例如 jxwaf/test
- 授权码
可选项,部分检测策略需要授权才可以使用
- 强行加载
请谨慎开启,当存在相同名称的配置时,开启强行加载,将删除旧配置,加载新配置。需要确认是否会对线上环境造成影响
全局字典配置
- 全局字典名称
- 全局字典详情
- 字典键参数
支持多个参数组合拼接,当某一参数不存在时,将导致字典失效
- 字典值类型
- 数字
数字初使值固定为0,每次执行动作调用增加1
- 字符串
字符串值固定为字符串true
- 自定义字符串
支持多个参数组合拼接,当某一参数不存在时,将导致字典失效
- 过期时间(秒)
全局字典的过期时间,过期后字典键将自动删除
策略告警配置
- 告警名称
- 告警描述
- 攻击实体
触发告警的实体对象类型,如IP地址、用户账号、设备ID等。
- 风险类型
告警对应的威胁分类,用于区分攻击类型。
- 事件运营
开启后,告警信息将同步到控制台,可以在运营中心对告警进行运营
- 告警通知
开启后,可以选择通过钉钉,企业微信或者飞书发生告警信息
- 加白配置
对告警进行加白处理,可以选择名单写入或者接口调用,支持多个配置
- 处置配置
对告警进行处置处理,可以选择名单写入或者接口调用,支持多个配置
- ctx参数记录
用于记录组件中的用户自定义参数,参数内容需要是字符串类型
- 策略告警抑制
- 抑制参数配置
支持多个参数组合拼接,当某一参数不存在时,将导致抑制失败
- 抑制时间(秒)
相同时间内,相同的抑制参数值只会执行一次告警操作
处置接口配置
- API名称
- API描述
- API地址
- API参数配置
发送的请求内容为JSON格式,支持多个参数组合,将根据参数配置获取对应的参数值,之后序列化为JSON格式的请求内容
- API请求头配置
配置HTTP请求头内容,格式与参数配置相同,将根据配置获取对应的参数值,序列化为JSON格式后作为请求头发送
- 处置接口调用抑制
- 抑制参数配置
支持多个参数组合拼接,当某一参数不存在时,将导致抑制失败
- 抑制时间(秒)
相同时间内,相同的抑制参数值只会执行一次调用API操作
处置组件配置
组件名称
组件描述
组件代码
需要将lua代码base64编码后输入
- 组件配置
json格式,将通过 conf_data 传入组件
- 处置组件调用抑制
- 抑制参数配置
支持多个参数组合拼接,当某一参数不存在时,将导致抑制失败
- 抑制时间(秒)
相同时间内,相同的抑制参数值只会执行一次调用API操作
模版如下
local _M = {}
local cjson = require "cjson.safe"
function _M.check(conf_data)
if conf_data == nil then
return
end
return
end
return _M
自定义数据源配置
自定义数据源允许用户预处理请求数据,生成自定义的参数表供匹配规则使用。
- 状态
启用或禁用自定义数据源
- 配置
JSON 格式配置,将通过 conf_data 传入组件代码
- 处理状态
配置处理状态标识
- 组件代码
需要将 Lua 代码 base64 编码后输入,支持从策略仓库加载
- 从策略仓库加载
输入策略仓库地址即可加载预定义的自定义数据源配置,支持授权码
系统配置导入/导出
支持全量配置的导入和导出,方便配置备份和迁移。
导入配置
支持两种导入方式:
- 从策略仓库加载:输入仓库地址(如
jxwaf/test)和可选授权码 - 从文件加载:直接粘贴 JSON 格式的配置内容
- 强行加载:开启后将覆盖同名配置,请谨慎操作,确认不会对线上环境造成影响
导出配置
选择需要导出的配置模块(检测策略、基础组件、名单、规则匹配、分析组件、全局字典、策略告警、处置接口、处置组件),导出为 JSON 文件。
基础信息
查看或者修改 wtds_auth 的值
控制台配置
- waf_log参数自定义配置
用于修改匹配参数中waf_log参数的内容。使用JXWAF的用户无需修改该选项,默认关闭即可
日志传输配置
- 本地调试
临时调试时开启,仅对处置请求生效,仅记录部分关键数据
- 远程日志记录
通过TCP传输日志数据,日志数据为json格式
日志服务器地址
日志服务器端口
日志查询配置
支持两种日志查询后端:ClickHouse 和 阿里云 SLS。
ClickHouse 配置
ClickHouse服务器地址
ClickHouse服务器端口
端口默认为9004,即ClickHouse的MySQL兼容查询端口
用户名
密码
数据库名称
阿里云 SLS 配置
如果使用阿里云日志服务(SLS),需要配置以下信息:
- Endpoint
SLS 服务地址(如 cn-shenzhen.log.aliyuncs.com)
- AccessKey ID
阿里云 AccessKey ID
- AccessKey Secret
阿里云 AccessKey Secret
- Project
SLS 项目名称
- Logstore
SLS 日志库名称
配置完成后,日志查询页面将使用 SLS 原生查询语法进行日志检索。
Admin API 配置
Admin API 用于企业自动化运维场景,支持通过 API 接口获取配置信息。
- Admin API 开关
默认关闭,开启后可通过 /admin_api/ 前缀访问对外开放接口
- IP/域名白名单
逗号分隔的 IP 地址或域名列表,配置后仅允许列表内的来源访问。为空则不限制访问来源。域名会自动进行 DNS 解析,结果缓存 5 分钟。
Admin API 具有三层安全防护:开关控制 + IP/域名白名单 + wtds_auth 认证。节点上报、登录注册、事件上报等内部接口不对外暴露。
