家里联通,转发了路由管理页面被联通警告了,查了下,nginx 提供 https 服务的端口,如果用 http 访问的话会返回 400 Bad Request,有返回就会被检测到……
于是搜了下,haproxy 可以解决这个问题,实现只能用正确域名访问的需求
目标:
访问 http ://IP:端口 不响应(超时或拒绝)
访问 https ://IP:端口 不响应(超时或拒绝)
访问 http ://正确域名:端口 不响应(超时或拒绝)
openssl s_client -host -port 不建立 SSL 链接
telnet TCP 端口未打开
访问 https ://正确域名:端口 正常使用
haproxy 可以装在 docker 上或者 openwrt 上( openwrt 记得装 haproxy 不是 haproxy-nossl )
配置文件示例
frontend router_frontend
mode tcp
bind 192.168.1.1:44444
tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }
acl is_example req_ssl_sni -i example.com
use_backend router_backend if is_example
default_backend no_sni
backend router_backend
server router 192.168.1.1:443
backend no_sni
server no_sni 127.0.0.1:65535
以上配置绑定 192.168.1.1:44444,只有接受的请求中 sni 为 example.com 时才会转发给 192.168.1.1:443
否则转发给 127.0.0.1:65535 形成超时,也可以找个防火墙阻断的端口形成拒绝
此法不关注证书是自签还是购买,只要后端是 HTTPS 就行
理论上 HTTP 也有类似的操作
当然运营商或许可以在 SDN 光猫上跑个入站检测,检测到入站 https 流量以后回报域名然后核实,那这办法也将会无效
1
XIU2 2021-04-29 16:00:41 +08:00
就像你最后一句说的,这种方法很容易针对。
HTTPS 建立加密链接前,运营商是可以看到 域名 和 IP 的。 即使隐藏域名,运营商也是能看到有人在与该 IP 建立 HTTPS 链接,而运营商一看这个 IP 是家宽 IP 。。。 |
2
justs0o 2021-04-29 16:23:15 +08:00
运营商是分光检测,任何伪装都能检测到
|
3
diguoemo 2021-04-29 16:34:36 +08:00 via Android
是只有大城市才管这些吗……我 nas 一直映射出去了,电信联通双线,没找过我
|
4
PerFectTime 2021-04-29 17:15:33 +08:00
@diguoemo #3 流量小,没人管罢了
|
5
mooyo 2021-04-29 17:22:59 +08:00 via iPhone
别搞,再抓住可能就要断网了
|
6
cpstar 2021-04-29 17:26:59 +08:00
我开非 80 、443 端口,没人管,但是 80 和 443 运营商是直接拒绝的,开了也没用
|
7
swiftg 2021-04-29 18:06:35 +08:00 via iPhone 1
nginx 本身就支持 sni 探测
|
8
tankren 2021-04-29 22:36:10 +08:00
我开的 ipv6 的 443 小地方没啥问题
|
10
dorothyREN 2021-05-02 03:51:16 +08:00
这用 nginx 一样能实现,为什么再搞个 haproxy
|
11
brMu 2021-05-03 07:47:02 +08:00 via Android
再给你提供个思路,用 https 的子目录提供服务,根目录直接超时,就算运营商抓到 sni 域名了,也模拟打不开。
比如访问 https://www. abc.com/secret 这个是你的正常服务,访问 https://www. abc.com 这个就是超时。 原理就是 https 的子目录抓不到。 |
12
Tengwait 2021-05-04 14:21:06 +08:00
@brMu 其实只要你用运营商的服务,想抓你跑没跑 web 也太简单了,不管你怎么装,最后你还是会有握手行为的,而请求头就能暴露你有无用 web 了,怎么说都不保险
|