SafeLine (雷池) WAF 详细部署教程

SafeLine(中文名“雷池”)是一款广受好评的开源 Web 应用防火墙(WAF),采用反向代理模式部署,以高检测率、极低误报率和简单易用著称,在全球拥有超过40万安装量。本文将详细介绍其部署与基本配置流程。


一、部署前准备

在开始之前,请确保你的服务器满足以下最低要求

依赖项 要求详情
操作系统 Linux(推荐 Ubuntu/Debian/CentOS)
CPU 架构 x86_64arm64x86_64 必须支持 SSSE3 指令集
Docker 版本 20.10.14 及以上
Docker Compose 2.0.0 及以上
最低资源 1 核 CPU / 1 GB 内存 / 5 GB 磁盘

环境检查命令

1
2
3
4
5
6
7
8
9
10
11
# 查看操作系统信息
uname -a && cat /etc/os-release

# 检查 SSSE3 指令集支持(x86_64 必须)
grep -oE 'ssse3' /proc/cpuinfo | sort -u

# 查看 Docker 版本
docker --version && docker compose version

# 查看系统资源
free -h && df -h && nproc

二、安装方式

雷池支持三种安装方式,新手推荐自动安装,仅需一行命令。

方式一:自动安装(推荐)

使用官方一键安装脚本,全程自动完成:

1
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"

安装过程中

  • 脚本会检测并提示安装 Docker(如未安装),选择 y 即可。
  • 默认安装目录为 /data/safeline,可保持默认或自定义。
  • 安装完成后,终端会输出管理员账号(默认 admin)和随机生成的初始密码,请务必保存。

方式二:手动安装(Docker Compose)

适合希望精细控制配置的用户。

  1. 创建安装目录并进入

    1
    2
    mkdir -p "/data/safeline"
    cd "/data/safeline"
  2. 下载编排文件

    1
    wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"
  3. 创建并编辑环境变量文件 .env

    1
    touch .env

    写入以下内容(请务必修改 POSTGRES_PASSWORD 为强密码):

    1
    2
    3
    4
    5
    6
    7
    SAFELINE_DIR=/data/safeline
    IMAGE_TAG=latest
    MGT_PORT=9443
    POSTGRES_PASSWORD=your_strong_password_here # 必须修改!
    SUBNET_PREFIX=172.22.222
    IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com/chaitin-safeline
    # 如果是 ARM 服务器,添加 ARCH_SUFFIX=-arm
    • 海外服务器用户建议将 IMAGE_PREFIX 改为 chaitin,以从 Docker Hub 拉取镜像。
  4. 启动服务

    1
    docker compose up -d

方式三:离线安装

如果服务器无法连接互联网,请参考官方文档的离线安装指南,需要提前下载离线包。


三、访问与初始配置

  1. 访问控制台:在浏览器中访问 https://<你的服务器IP>:9443

    • 首次访问会遇到自签名证书警告,请点击“高级”并“继续访问”。
    • 务必在云服务器安全组中放行 9443 端口
  2. 登录:使用安装完成后输出的用户名和密码登录。

  3. 忘记密码:如果遗失密码,可在服务器上执行以下命令重置:

    1
    sudo docker exec safeline-mgt resetadmin

    命令执行后会生成新的随机密码。


四、接入第一个网站

雷池以反向代理模式工作。配置前,请将需要防护的域名解析到雷池服务器的 IP 地址上。

  1. 在雷池控制台左侧菜单,点击 「防护应用」,然后点击右上角 「添加应用」
  2. 填写配置(以代理已有网站为例):
    • 网站域名/IP:输入你要保护网站的域名(如 www.example.com)或 IP。
    • 服务器地址:输入你实际 Web 服务器的内网 IP 或域名。
    • 端口:输入实际 Web 服务监听的端口(例如 808080)。
    • 其他选项(如 HTTPS、缓存)可根据需要配置。
    • 点击 「保存」
  3. 验证:配置完成后,访问你的域名。如果网站正常打开,并且在浏览器开发者工具中能看到带有 sl-session 的 Cookie,说明流量已成功经过雷池 WAF。

五、核心防护能力

接入后,雷池默认启用基础防护,你也可以根据需要开启以下高级功能:

  • CC 防护(频率限制):针对高频请求设置“等候室”或频率限制,防御刷接口、暴力破解等。
  • Bot 防护(人机验证):启用后,真人用户通过验证码或滑块验证后放行,自动化爬虫和扫描器会被拦截。
  • 身份认证:为内部系统或测试站点设置访问密码,未授权用户无法访问。
  • 动态防护:对网站 HTML 和 JavaScript 代码进行动态加密,防止代码被轻易分析。

六、验证防护效果

配置完成后,可通过模拟攻击测试 WAF 是否生效。例如,在浏览器中访问包含 SQL 注入特征的链接:

1
http://<你的域名>/?id=1 AND 1=1

正常情况下,雷池会返回拦截页面(状态码通常为 468),同时可以在控制台的 「防护日志」 中看到详细的拦截记录。


请确保已阅读并遵守项目仓库中的 LICENSE 文件。如果遇到部署或配置问题,可以查阅官方文档或加入 Discord 社区寻求帮助。