SafeLine 广受好评的开源 Web 应用防火墙
SafeLine (雷池) WAF 详细部署教程
SafeLine(中文名“雷池”)是一款广受好评的开源 Web 应用防火墙(WAF),采用反向代理模式部署,以高检测率、极低误报率和简单易用著称,在全球拥有超过40万安装量。本文将详细介绍其部署与基本配置流程。
一、部署前准备
在开始之前,请确保你的服务器满足以下最低要求:
| 依赖项 | 要求详情 |
|---|---|
| 操作系统 | Linux(推荐 Ubuntu/Debian/CentOS) |
| CPU 架构 | x86_64 或 arm64;x86_64 必须支持 SSSE3 指令集 |
| Docker 版本 | 20.10.14 及以上 |
| Docker Compose | 2.0.0 及以上 |
| 最低资源 | 1 核 CPU / 1 GB 内存 / 5 GB 磁盘 |
环境检查命令
1 | # 查看操作系统信息 |
二、安装方式
雷池支持三种安装方式,新手推荐自动安装,仅需一行命令。
方式一:自动安装(推荐)
使用官方一键安装脚本,全程自动完成:
1 | bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)" |
安装过程中:
- 脚本会检测并提示安装 Docker(如未安装),选择
y即可。 - 默认安装目录为
/data/safeline,可保持默认或自定义。 - 安装完成后,终端会输出管理员账号(默认
admin)和随机生成的初始密码,请务必保存。
方式二:手动安装(Docker Compose)
适合希望精细控制配置的用户。
创建安装目录并进入:
1
2mkdir -p "/data/safeline"
cd "/data/safeline"下载编排文件:
1
wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"
创建并编辑环境变量文件
.env:1
touch .env
写入以下内容(请务必修改
POSTGRES_PASSWORD为强密码):1
2
3
4
5
6
7SAFELINE_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 拉取镜像。
- 海外服务器用户建议将
启动服务:
1
docker compose up -d
方式三:离线安装
如果服务器无法连接互联网,请参考官方文档的离线安装指南,需要提前下载离线包。
三、访问与初始配置
访问控制台:在浏览器中访问
https://<你的服务器IP>:9443。- 首次访问会遇到自签名证书警告,请点击“高级”并“继续访问”。
- 务必在云服务器安全组中放行
9443端口。
登录:使用安装完成后输出的用户名和密码登录。
忘记密码:如果遗失密码,可在服务器上执行以下命令重置:
1
sudo docker exec safeline-mgt resetadmin
命令执行后会生成新的随机密码。
四、接入第一个网站
雷池以反向代理模式工作。配置前,请将需要防护的域名解析到雷池服务器的 IP 地址上。
- 在雷池控制台左侧菜单,点击 「防护应用」,然后点击右上角 「添加应用」。
- 填写配置(以代理已有网站为例):
- 网站域名/IP:输入你要保护网站的域名(如
www.example.com)或 IP。 - 服务器地址:输入你实际 Web 服务器的内网 IP 或域名。
- 端口:输入实际 Web 服务监听的端口(例如
80或8080)。 - 其他选项(如 HTTPS、缓存)可根据需要配置。
- 点击 「保存」。
- 网站域名/IP:输入你要保护网站的域名(如
- 验证:配置完成后,访问你的域名。如果网站正常打开,并且在浏览器开发者工具中能看到带有
sl-session的 Cookie,说明流量已成功经过雷池 WAF。
五、核心防护能力
接入后,雷池默认启用基础防护,你也可以根据需要开启以下高级功能:
- CC 防护(频率限制):针对高频请求设置“等候室”或频率限制,防御刷接口、暴力破解等。
- Bot 防护(人机验证):启用后,真人用户通过验证码或滑块验证后放行,自动化爬虫和扫描器会被拦截。
- 身份认证:为内部系统或测试站点设置访问密码,未授权用户无法访问。
- 动态防护:对网站 HTML 和 JavaScript 代码进行动态加密,防止代码被轻易分析。
六、验证防护效果
配置完成后,可通过模拟攻击测试 WAF 是否生效。例如,在浏览器中访问包含 SQL 注入特征的链接:
1 | http://<你的域名>/?id=1 AND 1=1 |
正常情况下,雷池会返回拦截页面(状态码通常为 468),同时可以在控制台的 「防护日志」 中看到详细的拦截记录。
请确保已阅读并遵守项目仓库中的 LICENSE 文件。如果遇到部署或配置问题,可以查阅官方文档或加入 Discord 社区寻求帮助。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 极客的赛博空间 | 专注 AI 与技术分享!
评论


