公网上暴露 https 端口,难免会被扫到,有些爬虫还会顺藤摸瓜根据证书找到域名,然后接着扫,在日志里留下 /wp-admin
等等记录。
虽然这些扫描对我服务影响不大,但是看到还是有点烦,因此想利用 NGINX 配置彻底隐藏我的 https 服务。
我的环境:
我的配置 (篇幅原因,放到 pastebin 里了):
[ https://pastebin.com/embed_iframe/bSBarvY8 ]
也就是说,这样的配置,在 [ https://域名:端口/路径 ] 里:
即使网络链路中存在中间人,截获了 SNI 域名,由于没有正确路径,依然不能获得响应。中间人只能判定其中有 TLS 流量,但不能扫描到 HTTPS 。
我想,这样应该能很好的隐蔽起我的 https 服务,只有知晓全路径的人才能访问得到。不知道这样的配置是不是还存在漏洞,欢迎大家指点讨论~
1
ellermister 2023-10-17 02:32:42 +08:00 via Android
高位端口不常用,我的很多公网服务都被扫描,扫描爬虫都比正常访客要高,日志看的烦。用脚本怕 access.log 拉黑 ip ,也拉不完,感觉没啥面对公网环境完美的办法。
|
2
dann73580 2023-10-17 02:44:14 +08:00 1
我用的办法是直接把常见 idc 段 ip 拉黑名单,简单粗暴疗效好。如百度阿里腾讯层峰的全都 ban 了。
|
3
Conantv2 2023-10-17 02:51:12 +08:00 via iPhone
我记录 SNI 的同时也记录端口,阁下又该如何应对?
|
5
miyuki 2023-10-17 07:14:47 +08:00 via iPhone
我是 default server 也配置一张随便写域名的证书,iptables 443 白名单 cf 段
|
6
hefish 2023-10-17 07:21:10 +08:00
那还转发啥啊,直接在高位端口用就是了。
|
7
grittiness 2023-10-17 08:49:51 +08:00
这和 nginx 直接配置`ssl_reject_handshake on;`有什么区别吗?
|
8
dode 2023-10-17 09:00:57 +08:00
单独配置一个自行生成的证书作为默认网站,真实网站再独立创建一个 server 跑服务
|
10
mikewang OP |
11
ryd994 2023-10-17 09:17:22 +08:00
你想更进一步安全的话可以自己签客户端证书,搞 TLS 双向验证。
|
12
greenskinmonster 2023-10-17 09:24:04 +08:00 2
fail2ban 把短时间内产生大量 4xx 错误码的 IP 都 ban 了
cat /etc/fail2ban/filter.d/nginx-4xx.conf [Definition] failregex = ^<HOST>.*"(GET|POST).*" (404|444|403|400) .*$ ignoreregex = |
14
shijingshijing 2023-10-17 09:29:42 +08:00
@dann73580 哪里能下载 idc 段 ip 列表的?或者有什么规则可以自定义?
|
15
awalkingman 2023-10-17 09:45:22 +08:00
我是把后缀/wp-admin 之类的爆破路径直接重定向到测试网速下载 1000G 文件的链接
|
16
ysc3839 2023-10-17 13:23:53 +08:00 via Android
if ($public_ip) 应该能改用 deny 。
另外 error_page 有坑,在其中一个 server block 配置了 400 =444 ,其他 server block 也会继承,想要域名访问时正常返回 400 就不行了。 |
17
mikewang OP @ysc3839 deny 应该是可以的。关于 400 ,确实存在这个问题。但是目前没能找到更好的方法,因为客户端发送的可能就是垃圾数据,nginx 不能判断站点,只能一并切断。
echo 123 | nc example.com 12345 nginx 返回一个 400 响应就暴露了 |
18
sn0wdr1am 66 天前
听说 nginx 返回 444 ,效果比较好。
|