
📥 下载地址(开源免费,GitHub 仓库 chaitin/SafeLine)
项目主页与版本发布页:https://github.com/chaitin/SafeLine/releases/latest(当前最新版 v9.4.3,采用 GPL-3.0 协议)
在线体验(官方演示环境):https://demo.waf-ce.chaitin.cn:9443/ · 中文文档:waf-ce.chaitin.cn · 安装时直接使用下文的一键脚本即可,无需手动下载安装包
如果你自己养过网站,多半经历过这种时刻:半夜收到告警,日志里几千条 wp-login.php 的爆破请求;或者第二天打开后台,发现评论区塞满了赌博网站的垃圾外链。这类事情的根源很朴素——只要你把一个 HTTP 服务挂到公网上,扫描器和攻击脚本就会在几分钟内找上门来,这一点从不迟到。
应对手段当然有,但各有各的别扭:买商业 WAF,一年几万块起步,个人站长想都不用想;上 Cloudflare 免费版,国内访问速度常常一言难尽,而且核心防护规则对免费用户并不可见;自己写 Nginx 规则,写完才发现误杀正常用户比拦住攻击还频繁。
这篇要说的 SafeLine(中文名「雷池」),就是针对这个窘境的开源答案。它是长亭科技开源的 Web 应用防火墙(WAF),以反向代理的方式部署在自己服务器前面,把 SQL 注入、XSS、命令注入、CC 攻击、爬虫这类流量挡在门外。项目在 GitHub 上拿了 23,000+ Star,官方口径是全球超过 70 万次安装、保护着 200 多万个网站、每天处理超过 500 亿次 HTTP 请求。对于一款社区版免费、能装在自己机器上的 WAF 来说,这个体量基本就是「开源 WAF 里最主流选择」的同义词。
这篇文章把雷池的原理、部署、接入站点、日常运维和版本选型一次讲清,命令都可以直接照抄。
一、先搞懂:WAF 到底替你挡什么
很多人对 WAF 的印象停留在「安全产品」这个模糊概念上,先把它具体化。一台暴露在公网的 Web 服务,日常要面对的攻击大致分四类:
| 攻击类型 | 典型表现 | 没有 WAF 时的处境 |
|---|---|---|
| 注入类(SQL 注入 / XSS / 命令注入 / SSRF / XXE / 路径遍历) | URL 参数或表单里塞 ' or 1=1--、<script> 之类的载荷 | 只要程序有一处拼接不严谨,数据就可能被拖走 |
| 暴力破解与撞库 | 对登录接口高频尝试账号密码 | 弱密码后台几小时内就会被试出来 |
| CC 攻击与 HTTP Flood | 单 IP 或僵尸网络高频请求耗资源 | 小水管机器几分钟内被打满 CPU 和带宽 |
| 爬虫与批量滥用 | 恶意采集、撞库脚本、注册机 | 带宽和数据库被无意义流量吃掉 |
这四类攻击有一个共同点:它们都发生在 HTTP 层,也就是说,在流量到达你的应用程序之前,理论上存在一个统一拦截的位置。这个位置就是 WAF——它以反向代理的姿态站在网站前面,所有请求先过它一道筛子,恶意的直接拦下,干净的放行。雷池的整个产品逻辑,就是把这个「筛子」做到足够准、足够快、足够好装。
二、雷池是怎么工作的:语义分析,不是规则堆砌
传统 WAF(以 ModSecurity 这类规则引擎为代表)的思路是「特征匹配」:维护一条条正则规则,请求命中规则就拦截。这条路的问题也很经典——规则是 finite 的,攻击变体是 infinite 的;规则写得松了拦不住,写得紧了误杀正常请求;而且维护几万条正则本身就是成本。
雷池走了另一条路:智能语义分析算法。它把 HTTP 请求解析成结构化的语法树,理解「这段内容在试图做什么」,而不是逐字比对特征。一段 union select 藏在 URL 编码、注释、大小写变换里,规则引擎可能认不出来,语义分析看的是「这串东西最终会被数据库当成一条查询执行」,变体再多,语义没变,照样拦。
这个路线带来的直接收益是官方公布的一组评测数据(同一批 33,669 个攻击样本与正常流量):
| 产品与模式 | 检出率 | 误报率 | 准确率 |
|---|---|---|---|
| ModSecurity(Level 1 宽松规则) | 69.74% | 17.58% | 82.20% |
| Cloudflare 免费版 | 10.70% | 0.07% | 98.40% |
| 雷池(均衡模式) | 71.65% | 0.07% | 99.45% |
| 雷池(严格模式) | 76.17% | 0.22% | 99.38% |
三个数字连起来看更有意思:ModSecurity 宽松规则检出率和雷池接近,但误报率高达 17.58%——每 6 个正常用户就有 1 个被冤枉,这种 WAF 开了等于没开;Cloudflare 免费版几乎不误报,但检出率只有 10.7%,防了个寂寞;雷池在检出率与误报率之间拿到了一个明显更好的平衡点。评测数据出自官方之手,样本口径可以保留一分怀疑,但「语义分析路线误报显著低于规则引擎」这个定性结论,与社区多年的实际反馈是一致的。
性能方面,雷池的检测引擎基于 Nginx(其内部发行版 Tengine)开发,没有规则回溯开销,官方称平均请求检测延迟在 1 毫秒级别。这也是它能扛住日均 500 亿次请求这个量级的底气——先不谈功能,WAF 自己先成为瓶颈就本末倒置了。
三、部署有多简单:一条命令的事
雷池社区版是纯容器化部署,整套装下来就是一个 Docker Compose 工程,不污染系统环境。先对一下环境要求:
| 项目 | 要求 |
|---|---|
| 操作系统 | Linux(主流发行版均可) |
| CPU 架构 | x86_64 / arm64(x86_64 必须支持 ssse3 指令集,推荐 avx2) |
| 软件依赖 | Docker ≥ 20.10.14,Docker Compose ≥ 2.0.0 |
| 最低资源 | 1 核 CPU / 2 GB 内存 / 5 GB 磁盘 |
| 安装方式 | 官方一键脚本(约 3 分钟)或手动 Compose 部署 |
值得一提的是最低配置:1 核 2 GB。这意味着一台最便宜的入门 VPS 就能跑,WAF 本身的资源占用不再是门槛。
3.1 一键安装(推荐)
国内环境直接用官方脚本,一条命令:
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"
脚本会自动检测 Docker 环境(缺了会顺手装上)、拉取镜像、写好配置并启动全套容器。等它跑完,雷池就已经在运行了。
3.2 初始化管理员密码
浏览器打开 https://服务器IP:9443/(注意是 https,自签证书会有告警,继续访问即可)。首次登录会自动初始化 admin 账户;如果没看到初始密码,或者哪天忘了,手动重置一次:
docker exec safeline-mgt resetadmin
终端会输出随机的初始密码:
[SafeLine] Initial username:admin
[SafeLine] Initial password:**********
[SafeLine] Done
登录后第一件事:把默认密码改掉,再顺手在控制台里开启两步验证。
3.3 手动部署(适合内网或想掌控配置的场景)
如果你习惯了手动管理 Compose 工程,也可以按下面四步来。核心是目录结构和一个 .env 文件:
mkdir -p "/data/safeline" && cd "/data/safeline"
wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"
touch ".env"
.env 里的关键变量,含义如下:
| 变量 | 说明 |
|---|---|
SAFELINE_DIR | 数据与配置的根目录(如 /data/safeline) |
MGT_PORT | 管理控制台端口,默认 9443 |
POSTGRES_PASSWORD | 内置 PostgreSQL 的初始化密码,务必改强密码 |
SUBNET_PREFIX | 内部通信网段前缀,默认 172.22.222,与现有网络冲突时改这里 |
IMAGE_PREFIX | 镜像仓库前缀,国内默认 chaitin 官方源 |
ARCH_SUFFIX | ARM 服务器需设为 -arm(注意:ARM 架构需要专业版授权) |
另外有三个令牌类变量(DETECTOR_MGMT_TOKEN、MGT_INTERNAL_TOKEN、DETECTOR_AES_KEY)需要用随机值填入,官方文档里给了现成的生成命令。最后 chmod 600 .env 收好权限,docker compose up -d 启动即可。
整套系统跑起来后是四个核心容器:管理端 safeline-mgt(控制台与配置下发)、检测引擎(基于 Tengine,真正拦流量的角色,监听 80/443)、PostgreSQL 15(存配置与日志)、Redis(缓存与频率统计)。架构上是标准的「管理面 + 数据面」分离,日后升级、重启管理端都不影响流量转发。
四、把第一个站点接入防护
装好只是开始,雷池真正干活的方式是反向代理:把域名的 DNS 解析从源站切到雷池,流量先进雷池、检查后再转给源站。以保护一个跑在 www.example.com 的网站为例:
第一步,控制台进入「应用管理」,点「添加应用」,填两项关键信息:站点域名填 www.example.com,上游服务器填源站真实地址(比如 http://127.0.0.1:8080 或内网另一台机器的 IP)。雷池会为这个应用自动生成一份反代配置。
第二步,处理证书。雷池内置了 ACME 客户端,可以直接签发和自动续期 Let’s Encrypt 证书;如果你已有证书,把证书和私钥传上去绑定到域名也行。配好后 443 端口的 TLS 由雷池终结,源站只收内网 HTTP 流量。
第三步,把域名 DNS 解析指向雷池所在服务器的公网 IP。TTL 调短一点,切换完等几分钟生效,然后正常访问网站,同时去雷池的「防护日志」里看——正常浏览会以放行记录出现,可以顺手发一个测试性攻击请求(比如访问 /index.php?id=1 and 1=1),马上能看到一条「攻击拦截」日志,防护链路就算闭环了。
这一步里最常见的坑是端口冲突:雷池的检测引擎要监听 80 和 443,如果你的源站 Web 服务(Nginx/Apache)也在同一台机器上占着 80/443,两边打架起不来。标准解法是给源站挪端口——把源站改成监听 8080 之类的内部端口,雷池上游填 127.0.0.1:8080,对外仍由雷池统一接 80/443。规划端口时可以照这个表来:
🔧 我整理的软件库
这些年折腾服务器、虚拟化和开发环境,装过的系统镜像、运维工具、开发套件、数据库与中间件,我都归档在自建的文件库里,持续补充新版本。没有弹窗广告,不强制注册,需要什么直接取。
常用工具随手可取 · 不定期补档
| 端口 | 归属 | 说明 |
|---|---|---|
| 80 / 443 | 雷池检测引擎 | 对外服务入口,需在防火墙放行 |
| 9443 | 雷池管理台 | 建议只对办公网 IP 放行,不要裸奔到全网 |
| 8080(自定义) | 源站 Web 服务 | 只监听 127.0.0.1 或内网,不对外 |
多站点场景下雷池可以按域名区分转发,一台雷池后面挂十几个网站是很常规的用法;个人版免费额度对个人站长完全够用,具体差异放在文末对比。
五、日常用得上的防护能力
除了语义分析这道主防线,雷池社区版还带了一组实战中高频使用的能力,按使用场景过一遍:
CC 攻击防护与频率限制:可以按 IP、按 URL 设定访问频率阈值,超限触发人机验证或直接封禁。博客后台、登录接口这类「只该有人偶尔访问」的路径,配一条严格限频规则,爆破脚本基本就废了。
人机验证:对可疑请求弹出验证码挑战,正常用户点一下就过,脚本和爬虫过不去。适合放在注册、登录、搜索这些被滥用的接口前面。
IP 信誉与威胁情报:内置恶意 IP 库,扫描器、僵尸网络节点来访时直接按情报拦截,不用等它真的发起攻击。
黑白名单与访问控制:可以按 IP、按 URL、按地区组合规则。比如后台目录只允许公司出口 IP 访问,一条白名单就够了。
静态页面动态防护:对输出的 HTML/JS 做动态加密和混淆,爬虫抓到的内容和浏览器渲染出来的不一致,显著抬高采集成本。对内容型站点防采集是个实用功能。
网站身份认证:可以给整个站点或目录加一层基础认证,适合临时暴露的测试环境、内部系统。
这组能力单拎出来每一项都不新鲜,但它们和语义检测引擎在同一个控制台里统一配置、统一看日志,不用再东拼西凑「Nginx 限流模块 + fail2ban + 各种脚本」,这正是「便捷」二字真正的分量。
六、升级、备份与卸载
升级:容器化部署的升级体验很好。社区版更新很勤——从 2025 年 4 月到现在的约一年半里发布了 19 个版本,仅 2026 年 4 月以来就有 10 个,当前最新为 10 月 21 日发布的 v9.4.3。升级就是经典三连:
cd /data/safeline
docker compose pull
docker compose up -d
如果用的镜像标签是 latest,pull 完重启即为最新;数据都在挂载目录里,升级不丢配置。唯一要注意的是官方已宣布 9.1.0-LTS 之后的 LTS 线停止维护,长期用户建议直接跟 latest 线,社区版的迭代节奏值得跟。
备份:雷池的全部配置、证书、日志都落在安装目录(默认 /data/safeline)里,定时打包这个目录就完成了备份。恢复时在新机器上装好 Docker、还原目录、compose up,整个防护体系就回来了。
卸载:目录内 docker compose down 停止并删容器,再删掉安装目录即彻底清干净,不留系统残留。
七、社区版、专业版、商业版怎么选
雷池现在分成三档,差异主要在运营类功能而非核心防护:
| 能力 | 个人版(免费) | 专业版(¥3600/年) | 商业版(联系销售) |
|---|---|---|---|
| 语义分析 Web 防护 | ✅ | ✅(增强) | ✅ |
| 人机验证 / 爬虫防护 | ✅ | ✅ | ✅ |
| CC 防护 / 频率限制 / 黑白名单 | ✅ | ✅ | ✅ |
| 恶意 IP 威胁情报 | ✅ | ✅ | ✅ |
| 流量统计分析 / 可视化大屏 | — | ✅ | ✅ |
| 自定义拦截页面 | — | ✅ | ✅ |
| 网页防篡改 / 日志审计 / 等保合规 | — | — | ✅ |
结论很直接:核心防护能力个人版全都有,语义检测、CC 防护、人机验证、威胁情报一个不少。专业版多出来的是流量统计、大屏、自定义拦截页这类「运营体验」项;商业版面向有等保合规要求的政企客户,多的是防篡改与审计。个人站长和小团队用免费版到天荒地老没有任何问题;真到了需要合规背书的规模,那也早就不是看文章选型的阶段了。
八、常见问题速查
Q:源站和雷池必须分两台机器吗?
不需要。同一台机器完全可以,只要按第四节的端口表把源站挪到内部端口即可。分开部署的好处是源站 IP 可以彻底不暴露公网,安全上限更高。
Q:开了雷池,网站速度会变慢吗?
检测延迟在毫秒级,常规请求基本无感。真正需要权衡的是雷池服务器自身的带宽——所有流量都从它过,小水管机器上雷池会先于网站成为瓶颈,选配置时带宽别抠太狠。
Q:误杀正常请求了怎么办?
先在「防护日志」里找到被拦的请求,确认是误报后可以把该条规则或该路径调整为放行,也可以把全局模式从「严格」切回「均衡」。语义引擎的误报率本身很低(官方口径 0.07%~0.22%),日常遇到的误杀多数集中在个别特殊业务接口,加白即可。
Q:我在内网/离线环境装不了怎么办?
官方提供离线安装包,在帮助文档里搜「离线安装雷池」按指引操作,镜像和安装脚本都有离线版本。
Q:和 Cloudflare 免费版怎么选?
两者并不互斥。受众重叠的部分简单说:在意国内访问速度、需要自己掌控数据和规则、站点在国内备案的,选雷池;站点主要面向海外、想省掉一台服务器、且能接受免费版防护强度的,Cloudflare 依然是顺手的选择。雷池还有一个 Cloudflare 给不了的玩法——它的检测引擎可以部署在任何能上网的机器上,包括家宽和内网穿透后面。
Q:有 API 或自动化接口吗?
有。雷池官方提供了 MCP Server,可以让 AI 助手直接管理 WAF 配置;同时还有 Ingress-NGINX 和 Kong 网关的集成插件,K8s 流量也能纳入防护。这块属于进阶玩法,个人站长可以先不管。
九、写在最后
回头看雷池能从一众开源 WAF 里跑出来的原因,其实就三件事:部署门槛压到一条命令,防护效果用数据说话,免费版不阉割核心能力。这三件事凑齐,个人站长第一次有了「不用花钱、不用求人、半小时上线」的 WAF 可选。
如果你手上有长期运营的网站——哪怕只是个博客——都建议花一个下午把雷池架上。装完你会做的事情大概只有两件:看两天防护日志,然后感慨原来自己的站点每天被扫这么多次。安全这件事最怕的不是攻击,而是不知道自己正在被攻击。
部署或接入过程中卡住了,也可以直接找我聊聊(微信同号 17712677007,注明来意即可),个人站点的安全加固方案可以一起看看。
✍️ 关于作者
IT 峰哥,互联网技术从业者。日常折腾服务器、虚拟化、数据库与企业级应用,关注开源系统的二次开发与基础设施落地。这里记录的是踩过的坑和验证过跑得通的方案,不是转述文档。
交流:微信 / 手机 17712677007(注明来意,看到会回)
文中方案如有疏漏,欢迎在评论区指正 · 技术问题欢迎交流