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

    • 产品介绍
    • 部署教程
    • 操作指南
    • API调用
    • 策略仓库

部署教程

架构

  • WebTDS 系统由三个子系统组成
    • WebTDS 控制台
    • WebTDS 节点
    • WebTDS 日志系统

webtds_architecture

部署

环境要求

  • 服务器系统 Debian 12.x

  • 服务器最低配置 4 核 8G

WebTDS控制台账号注册

访问 https://webtds.jxwaf.com 进行账号注册

account_otp

账号需要使用动态口令进行二次验证,可以在微信上使用小程序 腾讯身份验证器 扫描页面上的二维码获取动态口令

完成注册并登录控制台后,点击 系统管理 -> 基础信息 页面,查看 wtds_auth,后续节点配置需要

wtds_auth

WebTDS节点部署

系统部署

# 1. 安装Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 2. 克隆仓库(国内可以换成 https://gitclone.com/github.com/jx-sec/jxwaf.git)
git clone https://github.com/jx-sec/webtds.git
# 3. 启动容器
cd webtds/webtds_node
vim docker-compose.yml

修改文件中的 WTDS_AUTH , WTDS_AUTH 为 系统管理 -> 基础信息 中 wtds_auth 的值

compose_conf

docker compose  up -d

启动后,可以在 运营中心 -> 节点状态 查看节点是否上线

node_status

系统升级

# 1. 进入节点部署目录
cd webtds/webtds_node
# 2. 更新github
git pull
# 3. 重启服务(镜像或配置未更新则保持原状)
docker compose up -d

卸载系统

# 1. 进入节点部署目录
cd webtds/webtds_node
# 2. 停止并删除容器
docker compose down

Docker Compose文件说明

services:
  # Web威胁检测服务 (WebTDS)
  wtds:

    image: "ccr.ccs.tencentyun.com/jxwaf/wtds:v1.12"
    
    # 使用主机网络模式(直接使用宿主机网络,绕过 Docker 的网络隔离)
    network_mode: host
    
    # 设置文件描述符限制(用于处理高并发连接)
    ulimits:
      nofile:
        soft: 602400  # 软限制(进程可以自己提升到此值)
        hard: 602400  # 硬限制(最大允许值)
    
    # 环境变量配置
    environment:
      WTDS_SERVER: https://webtds.jxwaf.com  # WebTDS 控制台地址
      WTDS_AUTH: you_auth_key                # WebTDS 认证密钥
      CONF_DATA: 100m                        # 配置数据内存分配
      INNER_DICT: 100m                       # 内部字典内存分配
      GLOBAL_DICT: 100m                      # 全局字典内存分配
      SYS_DATA: 100m                         # 系统数据内存分配
      USER_DATA: 100m                        # 用户数据内存分配
      SUPPRESS: 100m                         # 抑制规则内存分配
      TZ: Asia/Shanghai                      # 时区设置为上海(北京时间)
    
    # 重启策略:除非手动停止,否则始终重启
    restart: unless-stopped

  # TCP 端口转发服务
  tcp-forwarder:

    image: ccr.ccs.tencentyun.com/jxwaf/tcp-forwarder:v1
    
    container_name: tcp-forwarder
    
    # 环境变量配置
    environment:
      LISTEN_ADDR: 0.0.0.0:9988  # 监听地址(所有网卡的9988端口)
      TARGET_ADDR: 127.0.0.1:9977  # 目标地址(转发到本地的9977端口)
    
    # 使用主机网络模式
    network_mode: host
    
    # 重启策略:除非手动停止,否则始终重启
    restart: unless-stopped

WebTDS日志服务部署

系统部署

# 1. 安装Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 2. 克隆仓库(国内可以换成 https://gitclone.com/github.com/jx-sec/jxwaf.git)
git clone https://github.com/jx-sec/webtds.git
# 3. 启动容器
cd webtds/webtds_jxlog
docker compose  up -d

部署完成后,在控制台中 系统配置 -> 日志传输配置 完成如下配置

jxlog_conf

在 控制台 系统配置 -> 日志查询配置 完成如下配置,其中 ClickHouse 数据库的帐号密码可以在 docker-compose.yml 文件中修改

clickhouse_conf

系统升级

# 1. 进入节点部署目录
cd webtds/webtds_jxlog
# 2. 更新github
git pull
# 3. 重启服务(镜像或配置未更新则保持原状)
docker compose up -d

卸载系统

# 1. 进入节点部署目录
cd webtds/webtds_jxlog
# 2. 停止并删除容器
docker compose down
# 3. 删除数据库文件(可选)
rm -rf /opt/wtds_data/clickhouse

Docker Compose文件说明

# 网络配置部分
networks:
  clickhouse_network:  # 自定义网络名称
    driver: bridge     # 使用桥接模式(默认Docker网络模式)
    ipam:              # IP地址管理配置
      config:
        - subnet: 172.60.0.0/24  # 指定子网范围(172.60.0.1-172.60.0.254)

# 服务定义部分
services:
  # ClickHouse数据库服务
  webtds_clickhouse:
    container_name: webtds_clickhouse  # 指定容器名称
    image: "ccr.ccs.tencentyun.com/jxwaf/clickhouse-server:22.8.5-alpine"  # 使用Alpine精简版镜像
    ports:  # 端口映射(宿主机端口:容器端口)
      - "9000:9000"  # ClickHouse原生TCP协议端口
      - "9004:9004"  # ClickHouse MYSQL兼容协议端口 
    environment:  # 环境变量配置
      CLICKHOUSE_DB: wtds  # 默认数据库名称
      CLICKHOUSE_USER: jxlog_user  # 默认用户名
      CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1  # 启用访问控制
      CLICKHOUSE_PASSWORD: jxlog_password  # 数据库密码
      TZ: Asia/Shanghai  # 时区设置(北京时间)
    volumes:  # 数据卷挂载(持久化存储)
      - /opt/wtds_data/clickhouse:/var/lib/clickhouse  # 将数据库文件保存在宿主机
    restart: unless-stopped  # 自动重启策略
    networks:  # 网络配置
      clickhouse_network:  # 使用自定义网络
        ipv4_address: 172.60.0.10  # 指定固定IP地址

  # JXLog日志收集服务
  webtds_jxlog:
    container_name: webtds_jxlog  # 指定容器名称
    image: "ccr.ccs.tencentyun.com/jxwaf/webtds-jxlog:v1.0"  # 日志服务镜像
    ports:
      - "8866:8866"  # 暴露日志收集端口
    environment:
      CLICKHOUSE: 172.60.0.10:9000  # 连接的ClickHouse地址(使用自定义网络内部IP)
      DATABASE: wtds       # 使用的数据库名称
      USERNAME: jxlog_user  # 数据库用户名
      PASSWORD: jxlog_password  # 数据库密码
      TABLE: wtds_log      # 默认写入的数据表
      TCPSERVER: 0.0.0.0   # 监听所有网络接口
      TZ: Asia/Shanghai    # 时区设置(北京时间)
    depends_on:  # 依赖关系
      - webtds_clickhouse  # 确保ClickHouse服务先启动
    restart: unless-stopped  # 自动重启策略
    networks:
      clickhouse_network:  # 使用相同的自定义网络
        ipv4_address: 172.60.0.11  # 指定固定IP地址

效果验证

环境说明

JXWAF节点

外网地址: 47.120.34.247

内网地址: 172.29.198.240

WebTDS节点

外网地址: 47.120.67.55

内网地址: 172.29.198.242

开启WebTDS检测

在JXWAF控制台 系统管理 -> WebTDS检测配置 ,参考如下进行配置

webtds_check

配置WebTDS检测策略

目标: 简单的爬虫检测

检测逻辑: 在10分钟内,同一个IP地址,访问不同的HTML页面,且接口返回为200,访问的页面数量超过100即告警

检测策略配置:

bot_check_policy

检测策略 -> 内部字典配置:

inner_dict

检测策略 -> 策略规则配置:

policy_rule

  • ip_diff_html_count

ip_diff_html_count1

iip_diff_html_count2

匹配条件1: 访问的是HTML页面

匹配条件2: 返回为200

匹配条件3: 当前IP在10分钟内(内部字典过期时间),未曾访问过当前HTML页面

匹配成功执行: 当前IP的HTML访问页面数量 +1

  • ip_diff_html_check

ip_diff_html_check1

ip_diff_html_check2

匹配条件1: 访问的是HTML页面

匹配条件2: 返回为200

匹配条件3: 当前IP在10分钟内(内部字典过期时间),访问的HTML页面数量大于100

匹配成功执行: 策略检测成功

  • html_log

html_log1

html_log2

匹配条件1: 访问的是HTML页面

匹配条件2: 返回为200

匹配成功执行: 记录当前IP访问的HTML页面,记录周期为10分钟(内部字典过期时间)

策略告警配置:

policy_alert

加载检测策略:

在 线上环境 -> 检测策略 中,点击 加载 ,选择 bot_check

load_policy_check

验证检测策略效果

为方便验证效果,在JXWAF控制台中,设置WAF防护规则为匹配html后缀即阻断请求,同时将拦截页面的HTTP响应码设置为200

运行下面Python脚本进行测试:

import requests

base_url = "http://47.120.34.247/"

for i in range(1, 111):  # 从1到110
    url = f"{base_url}a{i}.html"
    try:
        response = requests.get(url)
        print(f"访问 {url} - 状态码: {response.status_code}")
    except requests.exceptions.RequestException as e:
        print(f"访问 {url} 时出错: {e}")

print("所有页面访问完成")

运行完成后,即可在运营中心查看检测结果

在 运营中心 -> 事件运营 查看

soc_policy_check_result

在 运营中心 -> 行为轨迹 查看

soc_policy_check_result2

最近更新:: 2025/4/4 21:22
Contributors: chenjc, jiongrizi, root
Prev
产品介绍
Next
操作指南