🚀 使用 Docker Compose 部署 SafeLine(雷池 WAF)
SafeLine(雷池)是由长亭科技开发的一款开源 Web 应用防火墙(WAF),它通过语义分析技术提供安全防护,能有效识别和拦截 SQL 注入、XSS 等常见网络攻击。其设计目标是为用户提供一个高性能、易用且功能强大的安全防护方案。
📦 项目简介
SafeLine 的核心优势在于其智能检测能力和简洁的管理界面。与传统依赖规则库的 WAF 不同,雷池采用动态语义分析引擎,能够理解 HTTP 请求的上下文语义,从而更准确地识别攻击意图,显著降低误报和漏报率。
主要功能特性: * 🔒 全方位攻击防护:内置语义分析引擎,能精准识别和拦截 SQL 注入、XSS、RCE、SSRF 等多种 Web 攻击。 * 🤖 智能Bot管理:提供 Bot 防护功能,支持人机验证,有效抵御自动化攻击和爬虫。 * 🌐 灵活部署模式:支持反向代理、旁路检测等多种部署方式,适应不同网络架构。 * 📊 实时监控大屏:提供直观的可视化界面,实时展示安全态势和攻击日志。 * 🔑 身份认证集成:支持多种身份认证方式,包括 OIDC、CAS、LDAP 等,方便与企业现有系统集成。
⚙️ 部署前准备
-
环境要求
- 已安装 Docker 20.10.14 或更高版本,以及 Docker Compose 2.0.0 或更高版本。
- 系统架构要求 x86_64 或 arm64,x86_64 架构的 CPU 必须支持 ssse3 指令集。
- 最低资源需求:1 核 CPU / 1 GB 内存 / 5 GB 磁盘空间。
-
环境检查 在终端中执行以下命令,确认环境符合要求: ```bash # 检查CPU架构 uname -m
验证CPU指令集(x86_64架构必须支持ssse3)
lscpu | grep ssse3
检查Docker版本
docker version
检查Docker Compose版本
docker compose version
检查内存和磁盘空间
free -h df -h ```
-
创建项目目录 为雷池创建一个独立的安装目录:
bash mkdir -p /home/compose/safeline cd /home/compose/safeline
🛠️ 配置 Docker Compose
根据你提供的配置,SafeLine 使用多容器架构,包括 PostgreSQL 数据库、管理界面 (mgt)、检测引擎 (detect)、Tengine 网关等组件。
-
下载 Compose 文件 进入部署目录并下载官方 compose.yaml 文件:
bash cd /home/compose/safeline wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml" -
创建环境变量文件 创建
.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`。 |
- 配置文件解析
- 网络配置:雷池使用自定义的
safeline-ce桥接网络,子网由SUBNET_PREFIX控制。 - 服务组件:
- postgres:数据库服务,存储配置和日志。
- mgt:管理服务,提供 Web 控制台。
- detect:检测引擎,负责流量分析和攻击识别。
- tengine:基于 Tengine 的 Web 服务器,处理实际流量。
- 数据持久化:所有关键数据(数据库、配置、日志)都通过卷映射持久化到主机目录。
- 网络配置:雷池使用自定义的
🚀 启动与验证
-
启动服务 在包含
compose.yaml和.env文件的目录中执行:bash docker compose up -d -
检查服务状态
bash docker compose ps确认所有容器状态均为running。 -
查看日志 如果遇到问题,可以查看详细日志:
bash docker compose logs -
获取管理员密码 首次部署需要获取或重置管理员账户密码:
bash docker exec safeline-mgt resetadmin命令执行后会输出初始用户名和密码:[SafeLine] Initial username:admin [SafeLine] Initial password:********** [SafeLine] Done -
访问控制台
- 打开浏览器,访问
https://你的服务器IP:9443。 - 使用上一步获取的
admin账户和密码登录。 - 首次访问可能会遇到证书警告(雷池使用自签名证书),选择继续访问即可。
- 打开浏览器,访问
⚙️ 基础配置与使用
-
添加防护网站
- 登录雷池控制台后,点击 "防护应用" → "添加应用"。
- 填写应用名称、上游服务器地址(被保护网站的实际IP和端口)。
- 配置域名信息,支持通配符域名。
- 如需 HTTPS,可以在证书管理中配置 SSL 证书。
-
测试防护效果
- 配置完成后,尝试访问被保护的网站并在URL后添加测试 payload,例如:
http://你的域名/?id=1%20or%201=1 - 如果雷池配置正确,将会看到拦截页面,表示 SQL 注入攻击已被成功阻断。
- 配置完成后,尝试访问被保护的网站并在URL后添加测试 payload,例如:
-
调整防护策略
- 在防护策略中,可以根据业务需求调整防护等级。
- 对于初部署阶段,可以开启 "观察模式",记录但不拦截攻击,以便评估误报情况。
-
配置CC防护
- 进入 "访问控制" → "频率限制",可以设置针对 IP 的访问频率限制,有效防御 CC 攻击。
🔒 维护与管理
-
服务管理:
- 停止服务:
docker compose down - 重启服务:
docker compose restart - 查看状态:
docker compose ps
- 停止服务:
-
数据备份:
- 定期备份
SAFELINE_DIR目录(默认为/home/compose/safeline),其中包含所有配置、数据库和日志。 - 特别重要的是
resources和logs子目录。
- 定期备份
-
版本更新:
- 进入雷池安装目录。
- 停止当前服务:
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.yaml 中 tengine 服务的资源限制,并确保 SAFELINE_DIR 位于高速磁盘上以获得更好的性能。
希望这份详细的部署指南能帮助你顺利完成 SafeLine 的部署,为你的 Web 应用提供坚实的安全防护!