1
Jay54520 2022-05-02 13:20:04 +08:00 1
1. 使用 IP 段,比如 1.1.0.0/32 ,把你可能的 IP 全部放进去。好处是减少了被恶意访问的范围,不用改代码。坏处是没有完全解决问题。
2. 增加鉴权手段。比如增加 query string —— ?key=abcd ,key 不对就返回 400 Bad Request ,key 对了再继续正常流程。如果你会修改 DoH 中的代码,就直接修改 DoH ;或者用自己熟悉的语言写一个代理放到 DoH 前面,只转发鉴权通过的请求。 |
2
blakejia 2022-05-02 13:23:01 +08:00 1
前置 nginx 加个鉴权?
|
3
leavic 2022-05-02 13:32:40 +08:00 1
http 怎么鉴权就怎么做
|
4
huangtao728 2022-05-02 15:15:54 +08:00 via Android 3
改变路径,不要使用 /dns-query 即可
|
5
Sekai 2022-05-02 15:32:04 +08:00 1
换 adh
|
6
totoro625 2022-05-02 15:36:04 +08:00
提问一下 doh 被人蹭用会有什么后果吗?
我也在国内云服务上挂了 doh ------------ 本质上 doh 是网页服务吧,设置一下无法通过 ip 访问应该就很少有人去访问了吧,实在不行设置一个复杂的二级域名 我在用的直接就是 doh.example.com ,开了 5 台机器的 doh ,4 台丢国外 1 台丢国内,2 个多月了至今没见有人蹭过 我的 nginx 配置: server { listen 80; return 302 https://www.example.com/302; } server { listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /data/ssl/example.cer; ssl_certificate_key /data/ssl/example.key; return 302 https://www.example.com/302; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name doh.example.com; ssl_certificate /data/ssl/example.cer; ssl_certificate_key /data/ssl/example.key; location / { proxy_pass https://adguardhome:443; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } |
7
0o0O0o0O0o 2022-05-02 15:41:55 +08:00 via iPhone 1
路径用个 uuid
|
8
yaott2020 2022-05-02 15:54:41 +08:00 via Android
改路径更实际一些
|
9
cloudsigma 2022-05-02 15:59:14 +08:00
ssl 客户端验证
|
10
wwbfred 2022-05-02 16:03:02 +08:00
不要用 dns-query ,这就是最好的办法。另外如果在墙外使用这个路径域名会被墙。
|
11
andyliu24 2022-05-02 16:05:52 +08:00
iptables 把目标端口除 127.0.0.1 的 input 包直接 drop 掉?
|
12
AlphaTauriHonda 2022-05-02 16:12:24 +08:00
@wwbfred 是 IP 还是端口被屏蔽,还是 DoH 的域名直接被污染?
|
13
wwbfred 2022-05-02 16:18:25 +08:00 1
@AlphaTauriHonda 我的情况没有屏蔽端口,是给你的 DOH 域名发 RST 。不开 DOH 服务了过几天这个域名会放出来。
|
14
v2tudnew 2022-05-02 16:24:00 +08:00
@wwbfred #10 DOT 853 端口会被屏蔽,非标准端口 IOS 和安卓不认,感觉直接 IP 限制或者像 AdGuard Home 对每个设备特定 ID 白名单就行了。
|
15
AlphaTauriHonda 2022-05-02 16:41:21 +08:00
@wwbfred 相当于域名被阻断了。
|
16
dem0ns 2022-05-02 17:24:38 +08:00
ssl 客户端验证+1
|
17
dem0ns 2022-05-02 17:25:45 +08:00
服务器端校验客户端的证书,自己生成一对证书就可以
|
18
xyjincan 2022-05-03 08:05:06 +08:00 via Android
干掉监控客户端?
|
19
buxiaozisun 2022-05-04 15:08:20 +08:00 via Android
proxy_intercept_errors on; error_page 400 =404 /404.html;
|
20
of2 2022-05-29 13:17:49 +08:00
我用的 AdGuard Home ,Nginx 做前端。
`= /dns-query` 全返回 `418`,设置一个 `~* /dns-query/(client1|client2|...)` 的白名单列表,同时 AdGuard Home 里 `DNS settings` 下设置 `Allowed clients`,只允许设定好的的 clients~ |
21
root0 2022-05-30 23:12:45 +08:00
看你客户端 是怎么访问。如果可以自定义 访问那可以很方便。 后端可以用 写个 go 的 http Server (或者其他 PHP ,python )然后就可以用户名密码或者 Key 签名啥的。。。(如果你不会写 找人会的人几分钟就可以弄好)
|
22
billytom 2022-06-11 16:27:45 +08:00
直接装 ADH ,用 client ID 验证不就行了?
|