1Panel icon indicating copy to clipboard operation
1Panel copied to clipboard

[Bug] When a WAF rule is triggered due to “Unauthorized Domain Access,” the correct source IP of the request cannot be obtained

Open pooneyy opened this issue 2 months ago • 12 comments

Contact Information

No response

1Panel Version

2.0.12

Problem Description

WAF的命中规则为“未授权域名访问”时,无法获取正确的请求源IP,只能获取到CDN节点IP

Steps to Reproduce

Image

The expected correct result

No response

Related log output


Additional Information

No response

pooneyy avatar Oct 31 '25 01:10 pooneyy

配置过 CDN 吗

zhengkunwang223 avatar Oct 31 '25 01:10 zhengkunwang223

配置过 CDN 吗

是的,配置了 CDN

pooneyy avatar Oct 31 '25 01:10 pooneyy

Image

在你的 网站监控中 对指定的网站进行设置,启用CDN适配

若非专业版尝试在WAF中启用CDN适配

Image

mjsoftking avatar Nov 01 '25 05:11 mjsoftking

在你的 网站监控中 对指定的网站进行设置,启用CDN适配

若非专业版尝试在WAF中启用CDN适配

你可能没懂我的意思,对于“指定的网站”我已经进行设置了,访问“指定的网站”能获取到源IP。

当你把通配符域名通过CDN指向服务器时,对任意子域的请求都会到达服务器,而访问在“网站”处没有配置的域名,就会触发“未授权域名访问”。

“网站监控” 中只能对“网站”处配置的子域名进行设置

pooneyy avatar Nov 01 '25 05:11 pooneyy

确实 理论上未授权域名访问不匹配任何一个网站 所以不能从网站配置中获取 CDN 相关配置 我们尝试从全局设置中获取

zhengkunwang223 avatar Nov 03 '25 02:11 zhengkunwang223

是的,我有遇到相同的问题。 问题的来源其实是对于通配符的解析问题,例如我的 HTTP 请求如下:

GET  / HTTP/1.1
(省略)
ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
HOST: test.example.com
(省略)

在 1Panel 中事实上 "*/*" 后的所有内容都无法被正常解析,也包括 HOST 头。Cloudflare 发过来的 HTTP 请求的 ACCEPT 中会包含这种通配内容以接受所有类型的文件。1Panel 对于这种类型的字段解析有问题,所以会导致“未授权域名访问”问题。实际上不止会影响这个,还会影响真实 IP 获取、UA 获取等等一系列问题。

Sleepstars avatar Nov 11 '25 16:11 Sleepstars

"/" 后的所有内容都无法被正常解析

你说的是前端的显示问题吧,后端跟这个没关系。 未授权域名的逻辑是,取nginx匹配的server_name 和数据库中存储的网站域名做对比,不存在就拦截 所以必要条件是,网站-域名列表,nginx配置文件中的 server_name 和 HOST一致

zhengkunwang223 avatar Nov 12 '25 01:11 zhengkunwang223

"/" 后的所有内容都无法被正常解析

你说的是前端的显示问题吧,后端跟这个没关系。 未授权域名的逻辑是,取nginx匹配的server_name 和数据库中存储的网站域名做对比,不存在就拦截 所以必要条件是,网站-域名列表,nginx配置文件中的 server_name 和 HOST一致

你好,我测试了一下,确实只是语法高亮的 bug 影响判断了。但是 HOST 头没法匹配的问题是确实存在的,以下是复现流程:

  1. 在 Cloudflare 新解析 translate.sleepstars.de ,点亮小云朵,让流量从 CF 进入 1Panel 的 openresty 中。
Image
  1. 配置了 HTTPS 证书。我配置了一个使用 EC256 的证书。
  2. 直接请求 translate.sleepstars.de,会被拦截并提示网站不存在:
Image

直接使用 curl 可以得到相同的结果:

curl https://translate.sleepstars.de
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link
          rel="shortcut icon"
          href="data:image/png;base64,i省略"
  />
<title>网站不存在</title>
省略
  1. 使用 curl 强制指定域名 IP 请求,可以正常跳转进入我网站的页面:
curl https://translate.sleepstars.de/   --resolve translate.sleepstars.de:443:127.0.0.1
/zh

如果不是在本机,在第三方机器,解析到服务器 IP 也可以正常进入。

  1. 我一开始以为是请求的某些头引起的问题,因此我尝试直接构造一个与 cf 一致的请求访问,但是也可以正常访问进入
curl https://translate.sleepstars.de/ \
  --resolve translate.sleepstars.de:443:127.0.0.1 \
  -k \
  -H "Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7" \
  -H "X-Forwarded-Proto: https" \
  -H "Cache-Control: max-age=0" \
  -H "CF-Ray: 99cf22236945ddc9-HKG" \
  -H 'Sec-CH-UA: "Not_A Brand";v="99", "Chromium";v="142"' \
  -H "CF-IPCountry: HK" \
  -H "Sec-CH-UA-Mobile: ?0" \
  -H "Accept-Encoding: gzip, br" \
  -H 'Sec-CH-UA-Platform: "macOS"' \
  -H "DNT: 1" \
  -H "Upgrade-Insecure-Requests: 1" \
  -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" \
  -H "Sec-Fetch-Site: none" \
  -H 'Cookie: cf_clearance=f6oAq7twEv_CnwDbvdmDWnMTu5uqybRvdQ9M_ZQCzhMg-1762878184-1.2.1.1-t1B3.ChdO_2YHHgswfSpxrhSOqqyRLdXt9cOA.Eym4dgrH3QGcmXL_KP.u.o82MpCUSJftF8w.rxZFOui0ZZPiNsxdRj4zZeAsdfhprg0kniONK.guiPuABgrR3U071e0PSCidmVpaWC1AYpQep.YozQuUW6YOzeCIvTuWGAVmLfXDamiuGt6_n46NzD7D8QkhTr2sk1mfLC1Hvdyq.Wq28.nYQSZak5PD.lSZGpmgk' \
  -H "Sec-Fetch-Mode: navigate" \
  -H "Sec-Fetch-User: ?1" \
  -H "Connection: keep-alive" \
  -H 'CF-Visitor: {"scheme":"https"}' \
  -H "CDN-Loop: cloudflare; loops=1" \
  -H "Sec-Fetch-Dest: document" \
  -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36" \
  -H "X-Forwarded-For: 88.88.88.88" \
  -H "Priority: u=0, i"
  1. WAF 中的详情如下。经过测试,开关专业版的 WAF 不会影响这个问题。也尝试过重建 openresty 解决问题。
GET  / HTTP/1.1
ACCEPT-ENCODING: gzip, br
X-FORWARDED-FOR: 9.9.9.9
CACHE-CONTROL: max-age=0
CDN-LOOP: cloudflare; loops=1
PRIORITY: u=0, i
COOKIE: cf_clearance=DuFTsuSirFffZ7nQyK5PuX58OfkgSro6QvlMjv.FOk4-1762921137-1.2.1.1-1YuJ.e2L2cGrYh3IlUkPXrUMBGBAKSzcf1prl1dyBdyF2jwV5gkWB3FDedYTVoSA.3.h1a3A.E6jbxzmBkFZ0VLeqg2Hr3iUyC4RAIJ2gZjoYTHRHGQET4KXXUTfJ114iXuyc0Fd7QQYBnT3xTKFkEDOpF5uYH76IgQWQ4
CF-VISITOR: {"scheme":"https"}
SEC-CH-UA: "Not_A Brand";v="99", "Chromium";v="142"
SEC-CH-UA-MOBILE: ?0
SEC-CH-UA-PLATFORM: "macOS"
DNT: 1
UPGRADE-INSECURE-REQUESTS: 1
SEC-FETCH-SITE: none
HOST: translate.sleepstars.de
SEC-FETCH-MODE: navigate
X-FORWARDED-PROTO: https
SEC-FETCH-USER: ?1
CF-IPCOUNTRY: HK
CONNECTION: Keep-Alive
USER-AGENT: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
SEC-FETCH-DEST: document
ACCEPT-LANGUAGE: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
CF-RAY: 99d346437bc60970-HKG
ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
  1. 只有我 25.11.11 添加的域名有这个问题,此前的所有域名都没有类似问题。这方面的解析似乎是闭源的,我也不是专业开发,所以提供一些更详细的信息,希望可以给贵方参考。

Sleepstars avatar Nov 12 '25 04:11 Sleepstars

补充一下,刚刚使用一模一样的配置,只修改了域名到 sleepstars.top 后,又一切正常了,但是另一个域名还是可以稳定复现问题🤪

Sleepstars avatar Nov 12 '25 05:11 Sleepstars

补充一下,刚刚使用一模一样的配置,只修改了域名到 sleepstars.top 后,又一切正常了,但是另一个域名还是可以稳定复现问题🤪

这样,你用下面的命令看看

curl http://源ip  -H "Host: translate.sleepstars.de"

pooneyy avatar Nov 12 '25 06:11 pooneyy

补充一下,刚刚使用一模一样的配置,只修改了域名到 sleepstars.top 后,又一切正常了,但是另一个域名还是可以稳定复现问题🤪

这样,你用下面的命令看看

curl http://源ip -H "Host: translate.sleepstars.de"

curl http://127.0.0.1  -H "Host: translate.sleepstars.de"
/zh

显然是正常的。

curl -k https://127.0.0.1  -H "Host: translate.sleepstars.de"
/zh

包括用https。

上面的第四条已经做过相关请求的演示了。

Sleepstars avatar Nov 12 '25 07:11 Sleepstars

Image

加我企业微信 我远程看一下

zhengkunwang223 avatar Nov 12 '25 07:11 zhengkunwang223