惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
J
Java Code Geeks
L
LangChain Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
博客园 - 司徒正美
B
Blog
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog

青萍叙事

小程序用户注册完就不来了?我总结了 3 个召回策略 手机上就能克隆自己的声音,5 秒音频就够了 DeepSeek V4-Flash 正式版来啦,原生支持 Response API 做了一个免费工具,被骂到不再维护,一人企业的现实困境 手把手教你给短视频配音,全程不花钱 签到、邀请、任务中心,一个小程序日活增长的完整复盘 什么都想做,是一人企业最贵的病 小程序上线30天,注册量超过了网站一整年 注册验证码被刷了一整夜,论接口限流的重要性 通过Hermes搭建AI驱动的全自动安全封禁系统 个人博客第一次被攻击,评论区被植入恶意代码全记录 青萍AI图床:AI 生图接口文档 真心建议做一人企业的你,先把统一认证搞定 从个人公众号迁移到企业公众号经验总结 豆包千问集体下线智能体,是时候拥抱 Hermes Agent 了 配音兼职渠道怎么找?5 种渠道和 1 个避坑提醒 宝妈声音兼职去哪接单:三个平台横评,最后一个免费入驻每日自动派单 Hermes 浏览器工具:让 AI 替你操作网页 Hindsight for OpenCode:给每个项目装上专属记忆库 Hermes v0.17.0 最值得升级的理由:一个进程,管所有 Profile 音频可视化:从波形到视频的三种实现路径 Hermes 定时任务实战 真人配音兼职怎么找:几个渠道对比,末尾推荐一个免费入驻的 AI语音技术到底能做什么 AI漫剧之配音篇 用 Hermes Agent 搭了一条内容生产线 Hermes Gateway 飞书连接断开排查 2026精选5款热门AI配音软件 用 Hermes 打造 LLM Wiki 知识库:Karpathy 方法实战指南 用 Hermes 打造个人知识管理系统
博客被攻击之后,我部署雷池防火墙给网站穿上防弹衣
青萍叙事 · 2026-07-12 · via 青萍叙事
网站搭建安全雷池WAFAPISIX

博客被攻击之后,我部署雷池防火墙给网站穿上防弹衣

前言

上次博客评论区被植入恶意代码,虽然做了应急处理,封 IP、删评论、修复模板漏洞,但总觉得不够踏实。

攻击者换个 IP 就能再来,每次手动封太被动了。

我需要一个能自动拦截恶意请求的防火墙,在攻击到达应用之前就把它挡在外面。

调研了一圈,选了长亭科技的雷池 WAF(Web 应用防火墙),社区版免费,功能够用,还能和我现有的 APISIX 网关集成。

这篇文章记录完整的部署和集成过程。

雷池是什么

雷池(SafeLine)是长亭科技开源的 Web 应用防火墙,社区版完全免费。

它的核心是语义分析检测引擎,不是简单的正则匹配,而是真正理解 HTTP 请求的内容,误报率低,拦截准。

能防的东西很多:SQL 注入、XSS 跨站脚本攻击、代码执行、目录遍历、文件上传攻击,还有 CC 攻击防护和 Bot 机器人防护。

对我的一人企业场景来说,社区版的能力已经够用了。

手动部署雷池

雷池推荐 Docker 部署,官方提供一键安装脚本,但如果你和我一样喜欢掌控每个配置细节,走手动部署更合适。

前提是服务器已经装好 Docker,版本不低于 20.10.14,Docker Compose 不低于 2.0.0。

创建安装目录:

1
2
mkdir -p "/data/safeline"
cd "/data/safeline"

下载 Docker Compose 编排脚本:

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

创建环境变量配置文件 .env,写入以下内容:

1
2
3
4
5
6
7
8
9
10
SAFELINE_DIR=/data/safeline
IMAGE_TAG=latest
MGT_PORT=9443
POSTGRES_PASSWORD=your_password
SUBNET_PREFIX=172.22.222
IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com/chaitin-safeline
ARCH_SUFFIX=
RELEASE=
REGION=
MGT_PROXY=0

几个要点。

ARM 架构的服务器需要把 ARCH_SUFFIX 改成 -arm

海外服务器建议把 IMAGE_PREFIX 改成 chaitin,直接从 Docker Hub 拉镜像。

国内服务器保持默认的华为云镜像源就行。

启动雷池:

1
docker compose up -d

容器启动后,浏览器访问 https://服务器IP:9443 就能看到雷池控制台。

首次访问会提示证书不安全,点继续即可。

PS:由于我服务器并没有放开9443端口,需要通过APISIX网关来暴露雷池控制台了,配置参考如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"uri": "/*",
"name": "waf",
"host": "your-waf-domain",
"plugins": {
"proxy-rewrite": {
"headers": {
"X-Forwarded-For": "$remote_addr",
}
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:9443": 1
},
"tls": {
"verify": false
},
"scheme": "https"
}
}

另外首次访问还需要执行命令: docker exec safeline-mgt resetadmin 获取管理员密码。

切换检测引擎为 TCP 模式

到这里雷池已经能独立工作了,可以直接在控制台添加站点进行防护。

但我的架构里前面有一层 APISIX 网关,需要把雷池的检测引擎接入 APISIX,让所有请求先过雷池再转发到后端。

问题是雷池检测引擎默认用 Unix Socket 提供服务,只能在容器内部调用。

要和 APISIX 集成,得改成 TCP 模式。

进入检测引擎的配置目录:

1
cd /data/safeline/resources/detector/

编辑 detector.yml,添加两行配置:

1
2
bind_addr: 0.0.0.0
listen_port: 8000

然后回到雷池安装目录,编辑 compose.yaml,给 detector 容器加上端口映射:

1
2
3
detect:
ports:
- 8000:8000

重启雷池让配置生效:

1
2
3
cd /data/safeline
docker compose down
docker compose up -d

还有一步:雷池和 APISIX 默认都用 9443 端口,装在同一台机器上会冲突。

.env 文件里把 MGT_PORT 改成别的端口(比如 9444),再重启雷池就行。

需要注意的是,切换 TCP 模式后雷池控制台本身配置的站点防护会失效,需要同步把雷池的 NGINX 配置从 unix socket 改成 http 方式。
具体做法是拷贝 safeline_unix.confsafeline_http.conf,在 nginx.conf 中切换 include,再把 upstream 地址指向检测引擎的 IP 加端口。

在 APISIX 中接入雷池

由于我的网站平台是统一使用 APISIX 做的网关,APISIX 从 3.5.0 版本开始就内置了 chaitin-waf 插件,集成起来非常方便,只需要简单配置就可以给全站平台都加上安全防护啦。

配置 APISIX 指向雷池检测引擎的地址:

1
2
3
4
5
6
7
8
9
10
curl http://127.0.0.1:9180/apisix/admin/plugin_metadata/chaitin-waf \
-H 'X-API-KEY: your-key-here' -X PUT -d '
{
"nodes":[
{
"host": "127.0.0.1",
"port": 8000
}
]
}'

host 填雷池所在服务器的 IP,同一台机器就是 127.0.0.1

然后创建一条路由,把流量经过雷池检测后转发到后端业务:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
curl http://127.0.0.1:9180/apisix/admin/routes/1 \
-H 'X-API-KEY: your-key-here' -X PUT -d '
{
"uri": "/*",
"plugins": {
"chaitin-waf": {}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:9080": 1
}
}
}'

upstream 里的地址换成你的实际业务服务器。

测试防护效果

配置完成后验证一下。

正常访问能返回页面:

1
curl http://127.0.0.1:9080/

模拟一个 SQL 注入攻击:

1
curl http://127.0.0.1:9080/ -d 'a=1 and 1=1'

返回 HTTP 403,说明雷池成功拦截了:

1
2
3
4
5
6
{
"code": 403,
"success": false,
"message": "blocked by Chaitin SafeLine Web Application Firewall",
"event_id": "18e0f220f7a94127acb21ad3c1b4ac47"
}

打开雷池控制台的日志中心,能看到完整的攻击记录,包括请求 IP、攻击类型和拦截时间。

从此以后,恶意请求在到达博客之前就被雷池自动挡住,不用再每次手动封 IP 了。

定时报告

最后还可以通过 hermes 调用 WAF OpenAPI 定时获取安全报告,如下是我的每小时安全报告:

看起来还不错吧,下一篇再来介绍如何通过 hermes 获取安全报告和自定义规则设置。

你的网站有没有做过安全防护?用的什么方案?评论区聊聊。