Skip to content

🚀 使用 Docker Compose 部署 SafeLine(雷池 WAF)

SafeLine(雷池)是由长亭科技开发的一款开源 Web 应用防火墙(WAF),它通过语义分析技术提供安全防护,能有效识别和拦截 SQL 注入、XSS 等常见网络攻击。其设计目标是为用户提供一个高性能、易用且功能强大的安全防护方案。

📦 项目简介

SafeLine 的核心优势在于其智能检测能力简洁的管理界面。与传统依赖规则库的 WAF 不同,雷池采用动态语义分析引擎,能够理解 HTTP 请求的上下文语义,从而更准确地识别攻击意图,显著降低误报和漏报率。

主要功能特性: * 🔒 全方位攻击防护:内置语义分析引擎,能精准识别和拦截 SQL 注入、XSS、RCE、SSRF 等多种 Web 攻击。 * 🤖 智能Bot管理:提供 Bot 防护功能,支持人机验证,有效抵御自动化攻击和爬虫。 * 🌐 灵活部署模式:支持反向代理、旁路检测等多种部署方式,适应不同网络架构。 * 📊 实时监控大屏:提供直观的可视化界面,实时展示安全态势和攻击日志。 * 🔑 身份认证集成:支持多种身份认证方式,包括 OIDC、CAS、LDAP 等,方便与企业现有系统集成。

⚙️ 部署前准备

  1. 环境要求

    • 已安装 Docker 20.10.14 或更高版本,以及 Docker Compose 2.0.0 或更高版本。
    • 系统架构要求 x86_64arm64,x86_64 架构的 CPU 必须支持 ssse3 指令集
    • 最低资源需求:1 核 CPU / 1 GB 内存 / 5 GB 磁盘空间
  2. 环境检查 在终端中执行以下命令,确认环境符合要求: ```bash # 检查CPU架构 uname -m

    验证CPU指令集(x86_64架构必须支持ssse3)

    lscpu | grep ssse3

    检查Docker版本

    docker version

    检查Docker Compose版本

    docker compose version

    检查内存和磁盘空间

    free -h df -h ```

  3. 创建项目目录 为雷池创建一个独立的安装目录: bash mkdir -p /home/compose/safeline cd /home/compose/safeline

🛠️ 配置 Docker Compose

根据你提供的配置,SafeLine 使用多容器架构,包括 PostgreSQL 数据库、管理界面 (mgt)、检测引擎 (detect)、Tengine 网关等组件。

  1. 下载 Compose 文件 进入部署目录并下载官方 compose.yaml 文件: bash cd /home/compose/safeline wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"

  2. 创建环境变量文件 创建 .env 文件并填入以下配置:

```bash

cd进目录,下载yaml文件

wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"

创建配置文件 touch ".env"

SAFELINE_DIR=/home/compose/safeline #/data/safeline # 雷池主目录(需与实际创建的目录一致,默认即可) IMAGE_TAG=latest # 雷池主目录(需与实际创建的目录一致,默认即可) MGT_PORT=9443 # 控制台访问端口(默认 9443,若被占用可修改为其他端口如 9444)

数据库密码(必填!自定义强密码,仅含数字+大小写字母,如 Safeline@2024)

POSTGRES_PASSWORD=clxr20 # 示例密码,建议修改为更复杂的组合 SUBNET_PREFIX=172.99.0 # 内部网络网段(默认即可,避免与现有网络冲突)

镜像源前缀(国内服务器默认,海外服务器建议改为 chaitin)

IMAGE_PREFIX=chaitin #swr.cn-east-3.myhuaweicloud.com/chaitin-safeline ; 海外:改为 chaitin(从 docker.io 拉取) ARCH_SUFFIX= # 架构后缀(x86 服务器留空,ARM 服务器改为 -arm) RELEASE= # 更新通道(稳定版留空,LTS 长期支持版改为 -lts) REGION= # 更新通道(稳定版留空,LTS 长期支持版改为 -lts)

如果是 ARM 服务器需要把 ARCH_SUFFIX改成 -arm

ARCH_SUFFIX=-arm

如果是安装 LTS 版本需要把 RELEASE 改成 -lts

RELEASE=-lts

根据你的实际情况修改配置文件中的 SAFELINE_DIR 和 POSTGRES_PASSWORD 字段

如果使用的是海外服务器建议设置 IMAGE_PREFIX=chaitin 直接通过 docker.io 拉取镜像

配置文件的格式说明如下:

SAFELINE_DIR: 雷池安装目录,如 /data/safeline

IMAGE_TAG: 要安装的雷池版本,保持默认的 latest 即可

MGT_PORT: 雷池控制台的端口,保持默认的 9443 即可

POSTGRES_PASSWORD: 雷池所需数据库的初始化密码,请随机生成一个

SUBNET_PREFIX: 雷池内部网络的网段,保持默认的 172.22.222 即可

IMAGE_PREFIX: 雷池镜像源的前缀,建议根据服务器地理位置选择合适的源

ARCH_SUFFIX: 雷池架构的后缀,ARM 服务器需要配置为 -arm

RELEASE: 更新通道,LTS 版本需要配置为 -lts

```

**关键配置说明**:

| 配置项 | 说明与建议 |
| :--- | :--- |
| **`SAFELINE_DIR`** | 雷池的安装目录,确保有至少 5GB 可用空间。 |
| **`POSTGRES_PASSWORD`** | **务必修改为强密码**,使用数字和英文大小写组合。 |
| **`MGT_PORT`** | 控制台访问端口,确保 **9443** 端口未被占用。 |
| **`IMAGE_PREFIX`** | 镜像源前缀,海外服务器建议使用 `chaitin`。 |
| **`ARCH_SUFFIX`** | ARM 架构服务器需设置为 `-arm`。 |
  1. 配置文件解析
    • 网络配置:雷池使用自定义的 safeline-ce 桥接网络,子网由 SUBNET_PREFIX 控制。
    • 服务组件
      • postgres:数据库服务,存储配置和日志。
      • mgt:管理服务,提供 Web 控制台。
      • detect:检测引擎,负责流量分析和攻击识别。
      • tengine:基于 Tengine 的 Web 服务器,处理实际流量。
    • 数据持久化:所有关键数据(数据库、配置、日志)都通过卷映射持久化到主机目录。

🚀 启动与验证

  1. 启动服务 在包含 compose.yaml.env 文件的目录中执行: bash docker compose up -d

  2. 检查服务状态 bash docker compose ps 确认所有容器状态均为 running

  3. 查看日志 如果遇到问题,可以查看详细日志: bash docker compose logs

  4. 获取管理员密码 首次部署需要获取或重置管理员账户密码: bash docker exec safeline-mgt resetadmin 命令执行后会输出初始用户名和密码: [SafeLine] Initial username:admin [SafeLine] Initial password:********** [SafeLine] Done

  5. 访问控制台

    • 打开浏览器,访问 https://你的服务器IP:9443
    • 使用上一步获取的 admin 账户和密码登录。
    • 首次访问可能会遇到证书警告(雷池使用自签名证书),选择继续访问即可。

⚙️ 基础配置与使用

  1. 添加防护网站

    • 登录雷池控制台后,点击 "防护应用""添加应用"
    • 填写应用名称、上游服务器地址(被保护网站的实际IP和端口)。
    • 配置域名信息,支持通配符域名。
    • 如需 HTTPS,可以在证书管理中配置 SSL 证书。
  2. 测试防护效果

    • 配置完成后,尝试访问被保护的网站并在URL后添加测试 payload,例如: http://你的域名/?id=1%20or%201=1
    • 如果雷池配置正确,将会看到拦截页面,表示 SQL 注入攻击已被成功阻断。
  3. 调整防护策略

    • 在防护策略中,可以根据业务需求调整防护等级。
    • 对于初部署阶段,可以开启 "观察模式",记录但不拦截攻击,以便评估误报情况。
  4. 配置CC防护

    • 进入 "访问控制""频率限制",可以设置针对 IP 的访问频率限制,有效防御 CC 攻击。

🔒 维护与管理

  • 服务管理

    • 停止服务docker compose down
    • 重启服务docker compose restart
    • 查看状态docker compose ps
  • 数据备份

    • 定期备份 SAFELINE_DIR 目录(默认为 /home/compose/safeline),其中包含所有配置、数据库和日志。
    • 特别重要的是 resourceslogs 子目录。
  • 版本更新

    • 进入雷池安装目录。
    • 停止当前服务:docker compose down
    • 备份数据和配置。
    • 重新下载最新的 compose.yaml 文件。
    • 启动服务:docker compose up -d
  • 日志查看

    • 访问雷池控制台的 "安全监控" 页面查看安全事件。
    • 服务器上的详细日志位于 SAFELINE_DIR/logs/ 目录中。

🐛 常见问题排查

问题现象 可能原因与解决方法
无法访问控制台 1. 检查防火墙是否放行了 9443 端口。
2. 确认所有容器正常运行:docker compose ps
3. 验证端口是否被占用,可修改 .env 中的 MGT_PORT 值。
容器启动失败 1. 检查系统资源(内存、磁盘)是否充足。
2. 验证 CPU 是否支持所需指令集(ssse3)。
3. 查看详细日志:docker compose logs
防护网站无法访问 1. 检查雷池服务器是否能够访问上游服务器。
2. 确认域名解析已指向雷池服务器 IP。
3. 验证网络配置,特别是 SUBNET_PREFIX 设置。
攻击未被拦截 1. 确认防护策略未处于"观察模式"。
2. 检查防护网站配置是否正确。
3. 验证流量是否确实经过雷池服务器。
密码丢失 执行 docker exec safeline-mgt resetadmin 重置管理员密码。

💡 性能优化提示:对于高流量网站,可以调整 compose.yamltengine 服务的资源限制,并确保 SAFELINE_DIR 位于高速磁盘上以获得更好的性能。

希望这份详细的部署指南能帮助你顺利完成 SafeLine 的部署,为你的 Web 应用提供坚实的安全防护!