操作指南
引擎配置说明
匹配参数
waf_log
- host
请求的目标域名(Host头)。
- uri
请求的路径部分(不包含查询参数)。
- query_string
URL中的查询参数(
?
后的内容)。
- cookie
请求中的Cookie头内容。
- raw_body
原始请求体(如POST提交的数据)。
- src_ip
客户端IP(可能经过代理处理后的IP)。
- raw_src_ip
原始客户端IP(未经过代理处理的IP)。
- raw_headers
完整的原始请求头(包括自定义头)。
- status
HTTP响应状态码(如200、403)。
- raw_resp_headers
完整的原始响应头。
- raw_resp_body
原始响应体内容。
- user_agent
客户端的User-Agent头。
- method
HTTP请求方法(如GET、POST等)。
- request_uri
完整的原始请求URI(包含路径和查询参数)。
- version
HTTP协议版本(如HTTP/1.1)。
- scheme
请求协议(
http
或https
)。
- ssl_protocol
使用的SSL/TLS协议版本(如TLSv1.2)。
- ssl_cipher
加密套件名称(如ECDHE-RSA-AES256-GCM-SHA384)。
- request_time
请求时间
- process_time
请求总耗时(从接收到客户端请求到完成响应)。
- jxwaf_devid
设备标识符。
- upstream_addr
后端服务器地址(如
192.168.1.1:8080
)。
- upstream_response_time
后端服务器(Upstream)处理请求的时间。
- upstream_status
后端服务器返回的原始状态码(可能不同于WAF响应)。
- group_name
网站分组
- request_uuid
当前请求的唯一ID
- waf_node_uuid
节点UUID
- iso_code
客户端IP所属国家的ISO代码(如CN、US)。
- city
客户端IP所属城市(如Beijing)。
- 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操作
处置组件配置
组件名称
组件描述
组件代码
需要将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
基础信息
查看或者修改 wtds_auth 的值
控制台配置
- waf_log参数自定义配置
用于修改匹配参数中waf_log参数的内容。使用JXWAF的用户无需修改该选项,默认关闭即可
日志传输配置
- 本地调试
临时调试时开启,仅对处置请求生效,仅记录部分关键数据
- 远程日志记录
通过TCP传输日志数据,日志数据为json格式
日志服务器地址
日志服务器端口
日志查询配置
日志查询配置
ClickHouse服务器地址
ClickHouse服务器端口
端口默认为9004,即ClickHouse的MySQL兼容查询端口
用户名
密码
数据库名称