我知道 VPN ,我也在用 VPN ,VPN 确实很方便,连上之后直接访问内网地址就可以获取到各项服务
但是,能不能再直接一点呢,比如临时给朋友开个 Web 页面传个文件什么的,用 VPN 还得教他半天,如果能直接浏览器打开那确实是挺好的
考虑到有朋友说路由器管理页面被主动探测到,又有朋友说 ocserv 运行几年毛事没有,也有朋友说裸 TLS 连接(内部没有 HTTP 协议,浏览器无法直接访问)也没啥问题,猜测运营商对于『家宽开 Web 服务』(此处仅讨论非标端口,80/443 就不必说了)大概可能会有这几种:
以下测试都假定已有可用的 TLS 环境(毕竟直接裸 HTTP 连接的话,是个人都知道你在干啥)
nginx 对于拒绝非合法访问,有个选项是 deny all ,但是实测 deny all 也会返回 HTTP 403 ,在某些运营商那里可能会被判定为情况 2 。因此我测试了一下 return 444 ,对于非白名单路径(实例是 private_path_as_a_token )指示 nginx 直接切断连接
相关配置如下
location / {
keepalive_timeout 0;
return 444;
}
location /private_path_as_a_token {
root /home/html;
index index.html;
}
测试发现,在访问非白名单路径的时候(比如此时的根目录)确实会直接切断 TCP 连接,站在浏览器的角度看就是,这并非一个 HTTP 服务器:
* Trying 10.0.0.233:8000...
* Connected to 10.0.0.233 (10.0.0.233) port 8000 (#0)
> GET / HTTP/1.1
> Host: 10.0.0.233:8000
> User-Agent: curl/8.0.1
> Accept: */*
>
* Empty reply from server
* Closing connection 0
curl: (52) Empty reply from server
现在的问题是,如果我通过这个方式,在公网 IP (我的是公网 v6 )上开放 HTTPS 服务,是否能规避一定程度上的运营商主动探测?
望各位朋友不吝赐教
1
cheneydog 2023-08-18 11:14:48 +08:00
你是哪里的?哪个运营商管这么多么?
|
2
dzdh 2023-08-18 11:29:00 +08:00
就是把根路径变变?
|
3
YGBlvcAK 2023-08-18 11:39:03 +08:00
我也是类似的方式,我用的 caddy ,非白名单路径直接 abort ,可以看我之前的主题 /923605
你这如果是其它路径,返回什么?比如/aaa ,也是 return 444 吗? |
4
hingle 2023-08-18 11:58:51 +08:00
也许有可能防止运营商通过 HTTP 主动探测,但防不了用 TCP 主动探测,试试下面的命令
echo hello | nc 10.0.0.233 8000 |
5
deorth 2023-08-18 12:34:04 +08:00 via Android
有,帮助不大。就算是 https 他镜像你流量看 sni 就知道你在干嘛了
|
6
deorth 2023-08-18 12:36:58 +08:00 via Android
我现在的做法就是搞个 svcb 记录,自用的终端全都走 h3 。现在他们应该还没有 quic 流量的分析能力。后面看看什么时候服务端和终端都支持起来了,搞一波 ech
|
10
LinePro 2023-08-18 13:46:59 +08:00
|
11
YGBlvcAK 2023-08-18 13:52:16 +08:00
@hingle 有意思,我发现我的 caddy (跑 webdav )没有任何返回,又试了试 www.163.com 有返回:HTTP/1.1 400 Bad Request
|
12
pupboss 2023-08-18 14:04:27 +08:00
很管用,还能让一些爬虫抓瞎,因为爬虫也拿不到 444 这个状态码,只会发现连接被中止了,不懂 TCP 只知道 HTTP 皮毛的脚本小子完全不知道发生了什么
|
13
LinePro 2023-08-18 14:09:03 +08:00
说起这个我想起了某防火墙的主动探测原理 233
理论上探测者可以一个字节一个字节地把 GET / HTTP/1.1\r\n 和底下的请求头发过去,观察服务端在何时断开连接来判断是否为 HTTP 服务。 |
14
laozhoubuluo 2023-08-18 14:21:20 +08:00
一般来说建立 TLS 握手的时候是要传证书过去的,需要考虑服务器发过去的证书有没有穿帮的可能性。
``` # curl -vvv https://www.example.com * Server certificate: * subject: C=US; ST=California; L=Los Angeles; O=Internet▒Corporation▒for▒Assigned▒Names▒and▒Numbers; CN=www.example.org * start date: Jan 13 00:00:00 2023 GMT * expire date: Feb 13 23:59:59 2024 GMT * subjectAltName: host "www.example.com" matched cert's "www.example.com" * issuer: C=US; O=DigiCert Inc; CN=DigiCert TLS RSA SHA256 2020 CA1 * SSL certificate verify ok. ``` |
15
idontnowhat2say 2023-08-18 14:25:59 +08:00 1
我估计要是运营商用的是流量镜像的方式审查,你这没啥用。我以前给一个某个地级市运营商做实施的时候,机房的网工直接指着一个核心交换机的光口跟我说,这个口就是做流量镜像接给公安审查的。
|
16
LinePro 2023-08-18 14:29:04 +08:00 3
@laozhoubuluo #14
帮 OP 补充一下 nginx 关于这个问题的配置: 新一些的 nginx 可以用 ssl_reject_handshake on; 规避这个问题。 老版 nginx 的话可以随便自签个虚假证书给 default_server 当然只要 sni 不加密,运营商可以从流量中获取合法的 sni ,那么这方面配置对于 OP 所提的这个题目《用于对抗运营商检测家宽开服务是否有帮助?》而言意义不大。 |
17
villivateur 2023-08-18 14:32:06 +08:00
如果运营商不是通过探针的方式检查,而是直接看你流量特征,那你这样就没意义了。
|
18
starryloki 2023-08-18 15:55:24 +08:00 via iPhone
@LinePro OP 的方法并不完全使用域名来防止探测,还使用了路径,路径对于防火墙设备是不可见的
|
20
MFWT OP @LinePro
SNI 是肯定能获取的了(毕竟没有开 eSNI ),但是这个情况就不在本文考虑范围内了,本文主要考虑是『运营商不对 TLS 流量额外探测,仅主动探测此端口是否为 HTTP(S)服务器』的情况 |
21
LinePro 2023-08-18 16:33:23 +08:00
|
22
leoking6 2023-08-18 19:58:02 +08:00 via iPhone
@LinePro 您这个是对的,444 是低版本无奈之举,ssl_reject_handshake 才是正道
|
23
lianyue 2023-08-18 20:12:53 +08:00
走非 80 8080 443 8443 都会被检测到?
要不做个 ui 伪装成 监控 web 页面 走非上面的端口 比如 走 8000 需要登录才能继续操作 |
24
oovveeaarr 2023-08-18 20:19:50 +08:00
帮助不大,都是对流量做 DPI 的,没必要主动探测。
|
25
BigShot404 2023-08-18 20:30:11 +08:00
@lianyue #23 能,连你用哪个端口,请求的什么 URL ,一清二楚。
|
26
xqzr 2023-08-18 20:47:10 +08:00
配合 reset_timedout_connection on; 可以重置连接
|
27
MFWT OP @lianyue 理论上运营商有这个能力做 DPI ,就看他们愿不愿意投入成本了,而且之前也有路由器/NAS 管理页面透出去而被查的,实属冤枉,但是运营商就是这么干的
|
28
lianyue 2023-08-18 23:27:20 +08:00
@MFWT 我想的是 伪装成监控, 就算被封了也可以 找借口说这是 监控 页面,走 https 海康威视 的 ui 被查了也有借口
|
29
lianyue 2023-08-18 23:30:35 +08:00
我以前申请公网 ip 也是 有监控 这个借口, 到现在 公网 ip 都还在
|
30
yulihao 2023-08-19 22:26:09 +08:00
@MFWT 广东移动不查吧,我广移 IPV6 挂 NAS 一个 web 页面(非标),套群晖 ddns 域名用这么多年了也没见上门
|
33
Terminl 2023-08-21 16:25:29 +08:00
不一定要阻断。也可以返回空信息。如果是自己用验证 UA 就可以了。
|