长亭百川云

长亭百川云

技术讨论长亭漏洞情报库IP 威胁情报SLA在线工具
热门产品
雷池 WAF 社区版
IP 威胁情报
网站安全监测
百川漏扫服务
云堡垒机
百川云
技术文档
开发工具
长亭漏洞情报库
网安百科
安全社区
CT STACK 安全社区
雷池社区版
XRAY 扫描工具
长亭科技
长亭科技官网
万众合作伙伴商城
长亭 BBS 论坛
友情链接
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备2024055124号-2

长亭百川云

热门应用
查看更多
雷池 WAF 社区版
IP 威胁情报
网站安全监测
SSL 证书服务
https://rivers-collie.oss-accelerate.aliyuncs.com/cyber-wiki-prod/image/952d39f311aa1c4c23f32968b7cd45a1.png
雷池 WAF 社区版
智能语义算法 · 开箱即用 · 高性能高可用性
应用介绍
https://rivers-collie.oss-accelerate.aliyuncs.com/cyber-wiki-prod/image/ee8f2918e4d99d17f219cb46ec806fde.png
IP 威胁情报
IP 画像查询 · IP 库订阅 · 4 大应用场景
应用介绍
https://rivers-collie.oss-accelerate.aliyuncs.com/cyber-wiki-prod/image/5f3debe40bd86b430564010c75b2cb41.png
网站安全监测
敏感词监控 · 篡改监控 · 恶意链接 · 挂马监控
应用介绍
https://rivers-collie.oss-accelerate.aliyuncs.com/cyber-wiki-prod/image/4c6052bcaddaa7698c0257719b76cef2.png
SSL 证书服务
快速颁发 · 证书监控 · 极高性价比 · DV-OV-EV
应用介绍

热门讨论

查看更多

关于雷池获取访客IP的相关问题解答(还没写完)

头像

风熙.

更新于 3 小时前

不想看长文可以直接翻到最后看结论

经常有大哥遇到套了 CDN 后,IP 获取不正确的问题,包括我的好几个客户,所以发这个帖子来解答一下

什么是X-Forwarded-For

PS: 本段借(抄)鉴(袭)一下( 雷池 WAF 如何配置才能正确获取到源 IP)

X-Forwarded-For 是一个相对通用的 HTTP 请求头。

HTTP 流量在经过代理时,由于网络连接被截胡,服务器无法得知真正的客户端 IP。这时代理设备会给当前的流量加上一个 X-Forwarded-For 头,里面的内容就是连接这个代理的客户端 IP。

下面这个例子中 HTTP 代理通过 X-Forwarded-For 头告诉服务器,真正的客户端地址是 1.2.3.4

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
X-Forwarded-For: 1.2.3.4

X-Forwarded-For 实际上是一个链式结构。如果流量经过了多层代理设备,X-Forwarded-For 会记录途径的所有 IP。

下面这个例子中 HTTP 代理通过 X-Forwarded-For 头告诉服务器,流量经过了三层代理,真正的客户端地址是 1.2.3.4,第一层代理的是 11.12.13.14,第二层代理的地址是 21.22.23.24,第三次代理的地址可以通过 Socket 连接直接来获取。

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
X-Forwarded-For: 1.2.3.4, 11.12.13.14, 21.22.23.24

IP-Forwarded-For 头靠谱么

在代理设备和代理链路可信的情况下 IP-Forwarded-For 头传递的内容是很靠谱的,可以放心的试用。

但是呢,如果代理设备不可信,那么攻击者会通过伪造 IP-Forwarded-For 头的办法来实现伪造源 IP。

实际CDN是怎么添加客户端IP的

假设你是小李,你的IP地址是1.2.3.4,你要去访问长亭的网站,那么你的浏览器会向长亭的服务器(CDN)发送这样的报头

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36

长亭的CDN收到小李的请求后,判定可以放行,长亭的CDN会向长亭的源站服务器发送这样的报头

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
X-Forwarded-For: 1.2.3.4

我们可以看到,CDN在原来的请求基础上,往报头里面添加了X-Forwarded-For这个报头,里面包含了小李的IP。在流量到达源站雷池后,由于源站前面只有一层代理,即CDN,即客户 → CDN → 源站(雷池),客户和源站之间只有一层反代,因此在源站雷池的IP获取设置里,设置从 X-Forwarded-For 中获取上一级代理的地址,这样就可以正确读的到客户端IP。


那么,如果中间不止一层,还有一层nginx反代,比如客户→ CDN → Nginx反向代理 → 雷池呢?

假设你是小李,你的IP地址是1.2.3.4,你又要去访问长亭的网站了,但是这次你突发奇想想搞点事情,如果我伪造X-Forwarded-For报头,是不是可以瞒天过海骗过雷池呢?于是你说干就干

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
X-Forwarded-For: 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1

于是小李在访问的时候故意添加了X-Forwarded-For报头,里面装着五个白名单ip,那么小李到底能够顺利骗过雷池吗?请继续往下看

流量到达CDN后,CDN获得了访客小李的IP,由于XFF请求头是链式结构,所以CDN在原先的XFF报头后面添加了小李的IP,然后转发到Nginx

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
X-Forwarded-For: 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 1.2.3.4

注意,1.2.3.4是我们故事中小李的IP
我们假设直接访问Nginx反向代理的CDN服务器的IP是4.3.2.1,那么Nginx在接到请求后,会将原来的XFF后面加上CDN的IP,然后转发给雷池

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
X-Forwarded-For: 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 1.2.3.4, 4.3.2.1

这就是在这个示例中雷池最终收到的请求头,我们可以看到,小李的iP地址是XFF链的倒数第二个,那么雷池会不会被小李伪造的XFF骗到呢?

由于是客户 → CDN → Nginx反向代理 → 雷池,客户到雷池中间存在两层反代,所以雷池工程师设置了从 X-Forwarded-For 中获取上上一级代理的地址

数呀数呀数一数,数到一个小朋友~,让我们数一数,上上一级的IP地址是多少

  • 上一级:4.3.2.1,是CDN访问Nginx时的IP
  • 上上一级:1.2.3.4,是小李访问长亭CDN的IP,耶!

雷池就这样数到了小李的IP,小李的计划就这么被挫败了!

总结

大多数应用情况下,我们只需要数客户到雷池之间有几层代理,比如在客户 → CDN → Nginx反向代理 → 雷池这种环境下,我们可以看到,客户到雷池之间有两层代理

  • 从网络连接中获取: 当雷池作为最外层代理设备,无其他前置代理时选用
  • 从 X-Forwarded-For 中获取上一级代理的地址:在流量到达雷池之前还有一层代理设备(如 Nginx,CDN 等)时可选用
  • 从 X-Forwarded-For 中获取上上一级代理的地址:在流量到达雷池之前还有两层代理设备(如 Nginx,CDN 等)时可选用
  • 从 X-Forwarded-For 中获取上上上一级代理的地址:在流量到达雷池之前还有三层代理设备(如 Nginx,CDN 等)时可选用

所以在这个环境下我们选用从 X-Forwarded-For 中获取上上一级代理的地址

但是如果有些中间反代(比如CDN之类的)会把自己的IP放进去,那么这一层代理就要按两层代理来计算(其实这是不符合规范的,但是咱们只能配合)

如何测试自己的IP策略到底对不对

我们可以在部署完后,加个本地DNS host来进行模拟攻击,然后看雷池端的日志

以 https://chaitin.com 为例,然后尝试访问来模拟黑客攻击。

用你的网站地址替换下方的 https://chaitin.com/

  • 模拟 SQL 注入攻击: https://chaitin.com/?id=1+and+1=2+union+select+1
  • 模拟 XSS 攻击: https://chaitin.com/?id=<img+src=x+onerror=alert()>
  • 模拟路径穿越攻击: https://chaitin.com/?id=../../../../etc/passwd
  • 模拟代码注入攻击: https://chaitin.com/?id=phpinfo();system('id')

不出意外的话,这些攻击都将被雷池拦截,如果没有被拦截,说明你的流量根本没经过雷池或者雷池开了观察模式,请自行检查。

拦截之后,请你回到雷池攻击防护——攻击日志里面看报文原文,看看是不是正确获取到了你的IP,看看最终雷池收到的请求头长啥样,前面有几个代理等等。

如何直接破解XFF头伪造

我们可以直接不使用XFF头,具体操作如下:

在最外端(最外层接受客户访问流量的那端)配置一个自定义请求头,这个请求头里面装着客户IP,然后在之后的代理链路中不对这个头进行任何操作,直到源站直接使用这个请求头进行读取

比如我在CDN中配置将客户的IP放到一个只有我自己知道的请求头,比如X-QwQ-IP,源站直接读取这个头就行。

然后再高级一点,我们可以在CDN中再加一个只有自己知道的请求头和内容,源站设置如果访客没有携带这个请求头直接拒绝,相当于一个账号密码的作用。

2026新年快乐!

# 雷池 WAF
# 网站监测

0

1

雷池WAF数据库兼容性问题

头像

大糯米

更新于 17 小时前

数据库采用opengauss:7.0.0-RC2时WAF报错safeline-mgt | panic: failed to init models: AutoMigrate Error: ERROR: function gen_random_uuid() does not exist (SQLSTATE 42883)。
image.png

# 雷池 WAF

0

1

雷池规则广场:test

头像

这不是蜘蛛侠

更新于 14 小时前

规则地址

规则库说明

test

# 雷池 WAF

0

1

雷池WAF-LTS版本安装教程

头像

风熙.

更新于 8 小时前

2026新年快乐!

环境依赖

安装雷池-LTS前请确保你的系统环境符合以下要求

  • 操作系统:Linux
  • CPU 指令架构:x86_64, arm64
  • CPU 指令架构:x86_64 架构需要支持 ssse3 指令集
  • 软件依赖:Docker 20.10.14 版本以上
  • 软件依赖:Docker Compose 2.0.0 版本以上
  • 最低资源需求:1 核 CPU / 1 GB 内存 / 5 GB 磁盘

可以根据以下命令来查看相关信息

1uname -m                                    # 查看指令架构
2cat /proc/cpuinfo| grep "processor"         # 查看 CPU 信息
3lscpu | grep ssse3                          # 确认 CPU 是否支持 ssse3 指令集
4docker version                              # 查看 Docker 版本
5docker compose version                      # 查看 Docker Compose 版本
6docker-compose version                      # 查看老版本 docker-compose 版本
7free -h                                     # 查看内存信息
8df -h                                       # 查看磁盘信息

安装雷池LTS版本

根据实际情况选择安装方式

  • 自动安装:使用一条命令自动化安装,推荐新手使用
  • 手动安装:如果你熟悉 Linux 和 Docker,可以手动来配置雷池环境

自动安装

一键安装:3 分钟即可完成自动安装。

1bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)" -- --lts

命令执行成功则代表雷池安装成功,现在你可以 访问雷池控制台 了

手动安装

如果你熟悉 Linux 和 Docker,可以手动来配置雷池环境。

创建雷池目录

1mkdir -p "/data/safeline"

该命令会创建 /data/safeline 目录作为雷池的安装目录(你可以根据你的实际情况选择安装目录)

请确保该目录至少有 5GB 的存储空间(如果日常流量较大,请保证充足的磁盘容量)

下载 compose 编排脚本

使用下方的命令进入雷池安装目录,下载 docker compose 编排脚本,并改名为docker-compose.yaml

1cd "/data/safeline"
2wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"
3mv compose.yaml docker-compose.yaml

配置 compose 环境变量

使用下方的命令进入雷池安装目录,并创建 .env 配置文件

1cd "/data/safeline"
2touch ".env"

使用文本编辑器打开 .env 文件,写入下方的内容,POSTGRES的密码需自定义

若你需要安装其他版本的LTS版本,下方的IMAGE_TAG需修改成'你需要安装的雷池LTS版本号'-lts,这里为9.1.0版本

雷池WAF LTS 版本列表:雷池WAF LTS 版本更新日志 | 雷池 WAF 帮助文档

若你使用低版本docker,请务必删除.env文件中的注释,否则可能报错

1# /data/safeline/.env
2
3# 配置用于数据持久化的 Volumes 数据卷目录,持久化的数据将会放在这个目录下,请根据你的实际情况修改
4SAFELINE_DIR=/data/safeline
5
6# 雷池的 POSTGRES 数据库密码,请随机生成一个
7# 1Password 随机密码生成器:https://1password.com/zh-cn/password-generator
8# 使用大小写字母 + 数字,不要使用特殊字符或过长密码
9POSTGRES_PASSWORD=cZyWWw3uJhswF393BG3N
10
11# 雷池控制台的端口号,请改成其他端口,默认9443端口容易被扫描
12MGT_PORT=9443
13
14# 雷池更新的通道,这里使用LTS通道
15RELEASE=-lts
16
17# 在LTS中似乎无用? 但建议保留
18CHANNEL=-lts
19
20# 拉取镜像时在镜像名后面加的内容(版本号),保持空值即可(就是lastest),或者lastest都行
21# 正常不需要改
22REGION=
23
24# 拉取镜像时使用的镜像源,海外服务器直接填chaitin通过docker.io拉取
25# 若你服务器处于中国大陆,请使用下面第二行的镜像源拉取
26IMAGE_PREFIX=chaitin
27# IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com/chaitin-safeline
28
29# 安装的雷池版本,格式是 版本号-LTS
30# 雷池 WAF LTS 版本更新记录:https://help.waf-ce.chaitin.cn/node/0197787e-b70e-756e-b9d5-69d0a707144a#LTS%20%E7%89%88%E6%9C%AC
31IMAGE_TAG=9.1.0-lts
32
33# 雷池所在的网段,若有冲突请更改为其他网段,可任意一个或保持默认
34SUBNET_PREFIX=172.18.0
35
36# 正常情况保持原样即可
37ARCH_SUFFIX=
38MGT_PROXY=0

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

推荐的随机密码生成器:安全、强大的密码生成器 | 1Password

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

  • SAFELINE_DIR: 雷池安装目录(数据卷持久化映射目录),如 /data/safeline,根据你的实际情况修改。可以填一个点,就是SAFELINE_DIR=.,这样就是安装在docker-compose.yaml同目录了。这里为了和雷池官方文档对应所以写的/data/safeline,你可以自行修改
  • IMAGE_TAG: 要安装的雷池版本, 格式为版本号-lts ,你可以自己修改想安装的LTS版本
  • MGT_PORT: 雷池控制台的端口,强烈建议更改为其他端口,9443端口容易被扫描(控制台地址给扫出来就不太好玩了)
  • POSTGRES_PASSWORD: 雷池所需数据库的初始化密码,请随机生成一个
  • SUBNET_PREFIX: 雷池内部网络的网段,保持默认的 172.22.222 即可,如果网段冲突的话就改成其他的
  • IMAGE_PREFIX: 雷池镜像源的前缀,建议根据服务器地理位置选择合适的源,境外的话用官方源,境内用华为源拉
  • RELEASE: 更新通道,上面已经配置成 LTS 版本更新通道了,不用再改

启动雷池

现在万事具备,使用以下命令启动雷池服务

1cd "/data/safeline"
2docker compose up -d

命令执行成功则代表雷池安装成功,现在你可以 访问雷池控制台 了

访问雷池控制台

雷池安装成功以后,你可以打开浏览器访问 https://<safeline-ip>:9443/ 来使用雷池控制台。

请注意对9443的端口打开访问,或你手动安装时设置的端口

登录雷池

第一次登录雷池需要初始化你的管理员账户(默认会执行),如果没有找到账户密码,手动执行以下命令即可

1docker exec safeline-mgt resetadmin

命令执行完成后会随机重置 admin 账户的密码,输出结果如下

1[SafeLine] Initial username:admin
2[SafeLine] Initial password:**********
3[SafeLine] Done

开始防护你的网站

现在万事大吉,可以开始随心所欲使用你的雷池啦!
你可以去参考雷池 WAF 帮助文档 - 添加应用 来防护你的网站了!或者自己摸索一下,有问题在雷池群里咨询就好,祝你2026新年快乐!

# 雷池 WAF
# 雷池技术博客投稿
技术资料

3

4

[急用][建议]配置不同路径不同代理网站(自定义 NGINX 配置)

头像

柒

更新于 13 小时前

业务需求不同的目录需要不同的代理地址
如下圈着代码:
1733127438101.png

可以手工配置,但是每次更新、防护站点的配置都会把配置恢复初始化的样子,非常的不方便。
专业版现可以自定义 NGINX 配置,但是不添加location块。

# 雷池 WAF
需求建议

3

8

雷池规则广场:ipceshi

头像

牙牙

更新于 2 天前

规则地址

规则库说明

测试

# 雷池 WAF

0

1

IP 威胁情报

查看更多

当前 IP

查看 IP 风险画像
地理信息
ISP
运营商
最后更新时间
-

长亭漏洞情报库

查看更多
FineReport 帆软报表前台远程代码执行漏洞
Gogs 远程命令执行漏洞
React Server Components 远程代码执行漏洞
东方通应用服务器 EJB 反序列化远程代码执行漏洞
泛微e-cology 前台SQL注入漏洞
用友 U8 Cloud pubsmsservlet 远程代码执行漏洞
Oracle E-Business Suite 远程代码执行漏洞
用友 U8 Cloud NCCloudGatewayServlet 命令执行漏洞
用友 U8 Cloud IPFxxFileService 任意文件上传漏洞
用友 U8 Cloud 文件上传绕过漏洞
雷池 WAF 社区版
智能语义算法 · 开箱即用 · 高性能高可用性
应用文档
IP 威胁情报
IP 画像查询 · IP 库订阅 · 4 大应用场景
应用文档
网站安全监测
敏感词监控 · 篡改监控 · 恶意链接 · 挂马监控
应用文档
SSL 证书服务
快速颁发 · 证书监控 · 极高性价比 · DV-OV-EV
应用文档

关于雷池获取访客IP的相关问题解答(还没写完)

头像

风熙.

更新于 3 小时前

不想看长文可以直接翻到最后看结论

经常有大哥遇到套了 CDN 后,IP 获取不正确的问题,包括我的好几个客户,所以发这个帖子来解答一下

什么是X-Forwarded-For

PS: 本段借(抄)鉴(袭)一下( 雷池 WAF 如何配置才能正确获取到源 IP)

X-Forwarded-For 是一个相对通用的 HTTP 请求头。

HTTP 流量在经过代理时,由于网络连接被截胡,服务器无法得知真正的客户端 IP。这时代理设备会给当前的流量加上一个 X-Forwarded-For 头,里面的内容就是连接这个代理的客户端 IP。

下面这个例子中 HTTP 代理通过 X-Forwarded-For 头告诉服务器,真正的客户端地址是 1.2.3.4

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
X-Forwarded-For: 1.2.3.4

X-Forwarded-For 实际上是一个链式结构。如果流量经过了多层代理设备,X-Forwarded-For 会记录途径的所有 IP。

下面这个例子中 HTTP 代理通过 X-Forwarded-For 头告诉服务器,流量经过了三层代理,真正的客户端地址是 1.2.3.4,第一层代理的是 11.12.13.14,第二层代理的地址是 21.22.23.24,第三次代理的地址可以通过 Socket 连接直接来获取。

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
X-Forwarded-For: 1.2.3.4, 11.12.13.14, 21.22.23.24

IP-Forwarded-For 头靠谱么

在代理设备和代理链路可信的情况下 IP-Forwarded-For 头传递的内容是很靠谱的,可以放心的试用。

但是呢,如果代理设备不可信,那么攻击者会通过伪造 IP-Forwarded-For 头的办法来实现伪造源 IP。

实际CDN是怎么添加客户端IP的

假设你是小李,你的IP地址是1.2.3.4,你要去访问长亭的网站,那么你的浏览器会向长亭的服务器(CDN)发送这样的报头

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36

长亭的CDN收到小李的请求后,判定可以放行,长亭的CDN会向长亭的源站服务器发送这样的报头

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
X-Forwarded-For: 1.2.3.4

我们可以看到,CDN在原来的请求基础上,往报头里面添加了X-Forwarded-For这个报头,里面包含了小李的IP。在流量到达源站雷池后,由于源站前面只有一层代理,即CDN,即客户 → CDN → 源站(雷池),客户和源站之间只有一层反代,因此在源站雷池的IP获取设置里,设置从 X-Forwarded-For 中获取上一级代理的地址,这样就可以正确读的到客户端IP。


那么,如果中间不止一层,还有一层nginx反代,比如客户→ CDN → Nginx反向代理 → 雷池呢?

假设你是小李,你的IP地址是1.2.3.4,你又要去访问长亭的网站了,但是这次你突发奇想想搞点事情,如果我伪造X-Forwarded-For报头,是不是可以瞒天过海骗过雷池呢?于是你说干就干

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
X-Forwarded-For: 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1

于是小李在访问的时候故意添加了X-Forwarded-For报头,里面装着五个白名单ip,那么小李到底能够顺利骗过雷池吗?请继续往下看

流量到达CDN后,CDN获得了访客小李的IP,由于XFF请求头是链式结构,所以CDN在原先的XFF报头后面添加了小李的IP,然后转发到Nginx

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
X-Forwarded-For: 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 1.2.3.4

注意,1.2.3.4是我们故事中小李的IP
我们假设直接访问Nginx反向代理的CDN服务器的IP是4.3.2.1,那么Nginx在接到请求后,会将原来的XFF后面加上CDN的IP,然后转发给雷池

GET / HTTP/1.1
Host: demo.waf-ce.chaitin.cn
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36
X-Forwarded-For: 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 127.0.0.1, 1.2.3.4, 4.3.2.1

这就是在这个示例中雷池最终收到的请求头,我们可以看到,小李的iP地址是XFF链的倒数第二个,那么雷池会不会被小李伪造的XFF骗到呢?

由于是客户 → CDN → Nginx反向代理 → 雷池,客户到雷池中间存在两层反代,所以雷池工程师设置了从 X-Forwarded-For 中获取上上一级代理的地址

数呀数呀数一数,数到一个小朋友~,让我们数一数,上上一级的IP地址是多少

  • 上一级:4.3.2.1,是CDN访问Nginx时的IP
  • 上上一级:1.2.3.4,是小李访问长亭CDN的IP,耶!

雷池就这样数到了小李的IP,小李的计划就这么被挫败了!

总结

大多数应用情况下,我们只需要数客户到雷池之间有几层代理,比如在客户 → CDN → Nginx反向代理 → 雷池这种环境下,我们可以看到,客户到雷池之间有两层代理

  • 从网络连接中获取: 当雷池作为最外层代理设备,无其他前置代理时选用
  • 从 X-Forwarded-For 中获取上一级代理的地址:在流量到达雷池之前还有一层代理设备(如 Nginx,CDN 等)时可选用
  • 从 X-Forwarded-For 中获取上上一级代理的地址:在流量到达雷池之前还有两层代理设备(如 Nginx,CDN 等)时可选用
  • 从 X-Forwarded-For 中获取上上上一级代理的地址:在流量到达雷池之前还有三层代理设备(如 Nginx,CDN 等)时可选用

所以在这个环境下我们选用从 X-Forwarded-For 中获取上上一级代理的地址

但是如果有些中间反代(比如CDN之类的)会把自己的IP放进去,那么这一层代理就要按两层代理来计算(其实这是不符合规范的,但是咱们只能配合)

如何测试自己的IP策略到底对不对

我们可以在部署完后,加个本地DNS host来进行模拟攻击,然后看雷池端的日志

以 https://chaitin.com 为例,然后尝试访问来模拟黑客攻击。

用你的网站地址替换下方的 https://chaitin.com/

  • 模拟 SQL 注入攻击: https://chaitin.com/?id=1+and+1=2+union+select+1
  • 模拟 XSS 攻击: https://chaitin.com/?id=<img+src=x+onerror=alert()>
  • 模拟路径穿越攻击: https://chaitin.com/?id=../../../../etc/passwd
  • 模拟代码注入攻击: https://chaitin.com/?id=phpinfo();system('id')

不出意外的话,这些攻击都将被雷池拦截,如果没有被拦截,说明你的流量根本没经过雷池或者雷池开了观察模式,请自行检查。

拦截之后,请你回到雷池攻击防护——攻击日志里面看报文原文,看看是不是正确获取到了你的IP,看看最终雷池收到的请求头长啥样,前面有几个代理等等。

如何直接破解XFF头伪造

我们可以直接不使用XFF头,具体操作如下:

在最外端(最外层接受客户访问流量的那端)配置一个自定义请求头,这个请求头里面装着客户IP,然后在之后的代理链路中不对这个头进行任何操作,直到源站直接使用这个请求头进行读取

比如我在CDN中配置将客户的IP放到一个只有我自己知道的请求头,比如X-QwQ-IP,源站直接读取这个头就行。

然后再高级一点,我们可以在CDN中再加一个只有自己知道的请求头和内容,源站设置如果访客没有携带这个请求头直接拒绝,相当于一个账号密码的作用。

2026新年快乐!

# 雷池 WAF
# 网站监测

0

1

雷池WAF数据库兼容性问题

头像

大糯米

更新于 17 小时前

数据库采用opengauss:7.0.0-RC2时WAF报错safeline-mgt | panic: failed to init models: AutoMigrate Error: ERROR: function gen_random_uuid() does not exist (SQLSTATE 42883)。
image.png

# 雷池 WAF

0

1

雷池规则广场:test

头像

这不是蜘蛛侠

更新于 14 小时前

规则地址

规则库说明

test

# 雷池 WAF

0

1

雷池WAF-LTS版本安装教程

头像

风熙.

更新于 8 小时前

2026新年快乐!

环境依赖

安装雷池-LTS前请确保你的系统环境符合以下要求

  • 操作系统:Linux
  • CPU 指令架构:x86_64, arm64
  • CPU 指令架构:x86_64 架构需要支持 ssse3 指令集
  • 软件依赖:Docker 20.10.14 版本以上
  • 软件依赖:Docker Compose 2.0.0 版本以上
  • 最低资源需求:1 核 CPU / 1 GB 内存 / 5 GB 磁盘

可以根据以下命令来查看相关信息

1uname -m                                    # 查看指令架构
2cat /proc/cpuinfo| grep "processor"         # 查看 CPU 信息
3lscpu | grep ssse3                          # 确认 CPU 是否支持 ssse3 指令集
4docker version                              # 查看 Docker 版本
5docker compose version                      # 查看 Docker Compose 版本
6docker-compose version                      # 查看老版本 docker-compose 版本
7free -h                                     # 查看内存信息
8df -h                                       # 查看磁盘信息

安装雷池LTS版本

根据实际情况选择安装方式

  • 自动安装:使用一条命令自动化安装,推荐新手使用
  • 手动安装:如果你熟悉 Linux 和 Docker,可以手动来配置雷池环境

自动安装

一键安装:3 分钟即可完成自动安装。

1bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)" -- --lts

命令执行成功则代表雷池安装成功,现在你可以 访问雷池控制台 了

手动安装

如果你熟悉 Linux 和 Docker,可以手动来配置雷池环境。

创建雷池目录

1mkdir -p "/data/safeline"

该命令会创建 /data/safeline 目录作为雷池的安装目录(你可以根据你的实际情况选择安装目录)

请确保该目录至少有 5GB 的存储空间(如果日常流量较大,请保证充足的磁盘容量)

下载 compose 编排脚本

使用下方的命令进入雷池安装目录,下载 docker compose 编排脚本,并改名为docker-compose.yaml

1cd "/data/safeline"
2wget "https://waf-ce.chaitin.cn/release/latest/compose.yaml"
3mv compose.yaml docker-compose.yaml

配置 compose 环境变量

使用下方的命令进入雷池安装目录,并创建 .env 配置文件

1cd "/data/safeline"
2touch ".env"

使用文本编辑器打开 .env 文件,写入下方的内容,POSTGRES的密码需自定义

若你需要安装其他版本的LTS版本,下方的IMAGE_TAG需修改成'你需要安装的雷池LTS版本号'-lts,这里为9.1.0版本

雷池WAF LTS 版本列表:雷池WAF LTS 版本更新日志 | 雷池 WAF 帮助文档

若你使用低版本docker,请务必删除.env文件中的注释,否则可能报错

1# /data/safeline/.env
2
3# 配置用于数据持久化的 Volumes 数据卷目录,持久化的数据将会放在这个目录下,请根据你的实际情况修改
4SAFELINE_DIR=/data/safeline
5
6# 雷池的 POSTGRES 数据库密码,请随机生成一个
7# 1Password 随机密码生成器:https://1password.com/zh-cn/password-generator
8# 使用大小写字母 + 数字,不要使用特殊字符或过长密码
9POSTGRES_PASSWORD=cZyWWw3uJhswF393BG3N
10
11# 雷池控制台的端口号,请改成其他端口,默认9443端口容易被扫描
12MGT_PORT=9443
13
14# 雷池更新的通道,这里使用LTS通道
15RELEASE=-lts
16
17# 在LTS中似乎无用? 但建议保留
18CHANNEL=-lts
19
20# 拉取镜像时在镜像名后面加的内容(版本号),保持空值即可(就是lastest),或者lastest都行
21# 正常不需要改
22REGION=
23
24# 拉取镜像时使用的镜像源,海外服务器直接填chaitin通过docker.io拉取
25# 若你服务器处于中国大陆,请使用下面第二行的镜像源拉取
26IMAGE_PREFIX=chaitin
27# IMAGE_PREFIX=swr.cn-east-3.myhuaweicloud.com/chaitin-safeline
28
29# 安装的雷池版本,格式是 版本号-LTS
30# 雷池 WAF LTS 版本更新记录:https://help.waf-ce.chaitin.cn/node/0197787e-b70e-756e-b9d5-69d0a707144a#LTS%20%E7%89%88%E6%9C%AC
31IMAGE_TAG=9.1.0-lts
32
33# 雷池所在的网段,若有冲突请更改为其他网段,可任意一个或保持默认
34SUBNET_PREFIX=172.18.0
35
36# 正常情况保持原样即可
37ARCH_SUFFIX=
38MGT_PROXY=0

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

推荐的随机密码生成器:安全、强大的密码生成器 | 1Password

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

  • SAFELINE_DIR: 雷池安装目录(数据卷持久化映射目录),如 /data/safeline,根据你的实际情况修改。可以填一个点,就是SAFELINE_DIR=.,这样就是安装在docker-compose.yaml同目录了。这里为了和雷池官方文档对应所以写的/data/safeline,你可以自行修改
  • IMAGE_TAG: 要安装的雷池版本, 格式为版本号-lts ,你可以自己修改想安装的LTS版本
  • MGT_PORT: 雷池控制台的端口,强烈建议更改为其他端口,9443端口容易被扫描(控制台地址给扫出来就不太好玩了)
  • POSTGRES_PASSWORD: 雷池所需数据库的初始化密码,请随机生成一个
  • SUBNET_PREFIX: 雷池内部网络的网段,保持默认的 172.22.222 即可,如果网段冲突的话就改成其他的
  • IMAGE_PREFIX: 雷池镜像源的前缀,建议根据服务器地理位置选择合适的源,境外的话用官方源,境内用华为源拉
  • RELEASE: 更新通道,上面已经配置成 LTS 版本更新通道了,不用再改

启动雷池

现在万事具备,使用以下命令启动雷池服务

1cd "/data/safeline"
2docker compose up -d

命令执行成功则代表雷池安装成功,现在你可以 访问雷池控制台 了

访问雷池控制台

雷池安装成功以后,你可以打开浏览器访问 https://<safeline-ip>:9443/ 来使用雷池控制台。

请注意对9443的端口打开访问,或你手动安装时设置的端口

登录雷池

第一次登录雷池需要初始化你的管理员账户(默认会执行),如果没有找到账户密码,手动执行以下命令即可

1docker exec safeline-mgt resetadmin

命令执行完成后会随机重置 admin 账户的密码,输出结果如下

1[SafeLine] Initial username:admin
2[SafeLine] Initial password:**********
3[SafeLine] Done

开始防护你的网站

现在万事大吉,可以开始随心所欲使用你的雷池啦!
你可以去参考雷池 WAF 帮助文档 - 添加应用 来防护你的网站了!或者自己摸索一下,有问题在雷池群里咨询就好,祝你2026新年快乐!

# 雷池 WAF
# 雷池技术博客投稿
技术资料

3

4

[急用][建议]配置不同路径不同代理网站(自定义 NGINX 配置)

头像

柒

更新于 13 小时前

业务需求不同的目录需要不同的代理地址
如下圈着代码:
1733127438101.png

可以手工配置,但是每次更新、防护站点的配置都会把配置恢复初始化的样子,非常的不方便。
专业版现可以自定义 NGINX 配置,但是不添加location块。

# 雷池 WAF
需求建议

3

8

雷池规则广场:ipceshi

头像

牙牙

更新于 2 天前

规则地址

规则库说明

测试

# 雷池 WAF

0

1

查看更多