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

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

部署教程

架构

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

jxwaf_architecture

部署

环境要求

  • 服务器系统 Debian 12.x

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

jxwaf 控制台部署

系统部署

服务器 IP 地址

  • 公网地址: 47.120.63.196
  • 内网地址: 172.29.198.241
# 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/jxwaf.git
# 3. 启动容器
cd jxwaf/jxwaf_admin_server
docker compose up -d

部署完成后,访问控制台地址 http://47.120.63.196, 第一次访问控制台会自动跳转到帐号注册页面。

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

waf_auth

系统升级

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

卸载系统

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

Docker Compose文件说明

# 定义Docker服务
services:
  # MySQL数据库服务
  mysql_db:
    image: ccr.ccs.tencentyun.com/jxwaf/mysql:5.7  # MySQL 5.7镜像
    restart: unless-stopped                         # 自动重启策略(除非手动停止)
    environment:
      MYSQL_ROOT_PASSWORD: 958fba75-56c6-4e81-a892-62517a9e1739  # 数据库密码(建议生产环境修改)
      MYSQL_CHARSET: utf8mb4                        # 设置默认字符集
      MYSQL_COLLATION: utf8mb4_unicode_ci           # 设置默认排序规则
      TZ: Asia/Shanghai                             # 设置时区为上海
    volumes:
      - /opt/jxwaf_data/mysql:/var/lib/mysql        # 持久化MySQL数据到宿主机目录
    networks:
      app_net:
        ipv4_address: 172.20.0.2                    # 分配固定IP地址

  # JXWAF控制台服务
  jxwaf_admin_server:
    image: ccr.ccs.tencentyun.com/jxwaf/jxwaf_admin_server:v1.41  # WAF控制台镜像
    restart: unless-stopped
    environment:
      ENABLE_HTTPS: false                           # 是否启用HTTPS(建议生产环境设为true)
      MYSQL_HOST: 172.20.0.2                        # MySQL服务地址
      MYSQL_PORT: 3306                              # MySQL服务端口
      MYSQL_DATABASE: jxwaf_admin_server            # 使用的数据库名称
      MYSQL_USER: root                              # 数据库用户名
      MYSQL_PASSWORD: 958fba75-56c6-4e81-a892-62517a9e1739  # 数据库密码
      WAF_UPDATE_CONF_DATA: 1000m                   # WAF配置文件缓存配置
      TZ: Asia/Shanghai                             # 时区设置
    ports:
      - "80:80"                                     # 暴露HTTP端口
      - "443:443"                                   # 暴露HTTPS端口
    volumes:
      - ./ssl_certs/server.crt:/opt/jxwaf_admin_server/nginx/conf/server.crt  # SSL证书
      - ./ssl_certs/server.key:/opt/jxwaf_admin_server/nginx/conf/server.key  # SSL私钥
    networks:
      app_net:
        ipv4_address: 172.20.0.3                    # 分配固定IP地址

# 定义网络配置
networks:
  app_net:
    driver: bridge                                  # 使用桥接网络驱动
    ipam:
      config:
        - subnet: 172.20.0.0/24                     # 定义子网地址范围

默认提供本地MySQL数据库服务,如果要使用其他的数据库,可以只保留 JXWAF控制台服务 ,修改其中数据库相关的配置。

如果需要启用HTTPS,需将 ENABLE_HTTPS 设置为 true ,同时将 SSL证书 和 SSL私钥 复制到 ssl_certs 下面,分别命名为 server.crt 和 server.key

jxwaf 节点部署

系统部署

服务器 IP 地址

  • 公网地址: 47.84.176.156
  • 内网地址: 172.22.168.117
# 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/jxwaf.git
# 3. 启动容器
cd jxwaf/jxwaf_node
vim docker-compose.yml

修改文件中的 JXWAF_SERVER 和 WAF_AUTH

compose_conf

JXWAF_SERVER 的值为 jxwaf 控制台服务器地址,这里为 http://47.120.63.196 ,注意地址不能带路径,即 http://47.120.63.196/ 是错误输入

其中 WAF_AUTH 为 系统管理 -> 基础信息 中 waf_auth 的值

修改后如下

compose_conf_edit

docker compose  up -d

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

node_status

系统升级

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

卸载系统

# 1. 进入节点部署目录
cd jxwaf/jxwaf_node
# 2. 停止并删除容器
docker compose down
# 3. 删除nginx缓存文件(可选)
rm -rf /opt/jxwaf_data/nginx_cache

Docker Compose文件说明

services:
  jxwaf_base:
    image: ccr.ccs.tencentyun.com/jxwaf/jxwaf_node:v1.25  # JXWAF节点镜像
    network_mode: host                                     # 使用宿主机网络模式(直接暴露端口)
    privileged: true                                       # 特权模式(需访问系统级资源)
    ulimits:
      nofile:
        soft: 602400                                       # 文件描述符软限制(推荐值)
        hard: 602400                                       # 文件描述符硬限制(推荐值)
    environment:
      HTTP_PORT: 80                                        # 监听HTTP流量端口
      HTTPS_PORT: 443                                      # 监听HTTPS流量端口
      WAF_CONF_DATA: 1000m                                 # WAF配置文件缓存配置
      JXWAF_INNER: 2000m                                   # 内部缓存配置
      JXWAF_PUBLIC: 2000m                                  # 组件缓存配置
      JXWAF_REQUEST_COUNT: 200m                            # 流量防护引擎缓存配置
      JXWAF_REQUEST_IP: 200m                               # 流量防护引擎缓存配置
      JXWAF_REQUEST_IP_COUNT: 200m                         # 流量防护引擎缓存配置
      JXWAF_LIMIT_BOT: 200m                                # 流量防护引擎缓存配置
      JXWAF_SERVER: you_jxwaf_server_url                   # WAF控制台服务器地址(需替换)
      WAF_AUTH: you_auth_key                               # WAF控制台认证密钥(需替换)
      TZ: Asia/Shanghai                                    # 时区设置
    restart: unless-stopped                                # 自动重启策略(除非手动停止)
    volumes:
      - /opt/jxwaf_data/nginx_cache:/opt/jxwaf_data/nginx_cache  # 持久化Nginx缓存数据

jxlog 部署

系统部署

服务器 IP 地址

  • 公网地址: 47.115.222.190
  • 内网地址: 172.29.198.239
# 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/jxwaf.git
# 3. 启动容器
cd jxwaf/jxlog
docker compose up -d

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

jxlog_conf

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

clickhouse_conf

系统升级

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

卸载系统

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

Docker Compose文件说明

# 定义日志分析相关服务
services:
  # ClickHouse 数据库服务
  clickhouse:
    image: "ccr.ccs.tencentyun.com/jxwaf/clickhouse-server:22.8.5-alpine"  # 使用Alpine精简版镜像
    ports:
      - "9000:9000"   # 客户端TCP协议端口
      - "9004:9004"   # 客户端MySQL协议兼容端口
    environment:
      CLICKHOUSE_DB: jxwaf                         # 初始创建数据库名称
      CLICKHOUSE_USER: jxlog_user                  # 创建默认用户账号
      CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT: 1      # 启用访问控制管理
      CLICKHOUSE_PASSWORD: jxlog_password          # 用户账号密码(建议生产环境修改)
      TZ: Asia/Shanghai                            # 时区设置
    volumes:
      - /opt/jxwaf_data/clickhouse:/var/lib/clickhouse  # 持久化数据库文件
    restart: unless-stopped                        # 自动重启策略
    networks:
      clickhouse_network:
        ipv4_address: 172.10.0.10                  # 固定IP地址分配

  # 日志处理服务
  jxlog:
    container_name: jxlog                           # 指定容器名称
    image: "ccr.ccs.tencentyun.com/jxwaf/jxcloud-jxlog:v1.6"  # jxlog镜像
    ports:
      - "8877:8877"                                # 日志接收TCP端口
    environment:
      CLICKHOUSE: 172.10.0.10:9000                 # ClickHouse服务地址
      DATABASE: jxwaf                              # 目标数据库名称
      USERNAME: jxlog_user                         # 数据库连接用户名
      PASSWORD: jxlog_password                     # 数据库连接密码
      TCPSERVER: 0.0.0.0                           # 监听所有网络接口
      TZ: Asia/Shanghai                            # 时区设置
    depends_on:
      - clickhouse                                  # 依赖数据库服务
    restart: unless-stopped
    networks:
      clickhouse_network:
        ipv4_address: 172.10.0.11                  # 固定IP地址分配

# 网络配置
networks:
  clickhouse_network:
    driver: bridge                                 # 使用桥接网络模式
    ipam:
      config:
        - subnet: 172.10.0.0/24                    # 专用子网划分

效果验证

在控制台 防护管理 -> 网站防护 ,点击新建分组,参考如下配置进行设置

prod_group_conf

创建完成后,点击 查看网站 ,点击新建网站,参考如下配置进行设置

prod_website_conf

配置完成后,回到 jxlog 服务器,

root@iZf8z5lulvvv47480fig8gZ:~/jxwaf# pwd
/root/jxwaf
[root@VM-0-13-centos jxlog]# cd waf_test/
[root@VM-0-13-centos waf_test]# python3 waf_poc_test.py -u http://47.113.220.170

运行 waf 测试脚本后,即可在控制台中的 运营中心 -> Web安全报表 和 运营中心 -> Web安全报表 查看防护效果

web_attack_chart

attack_event

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