家里一台机器安装了 pve(proxmox virtual environment)。在内网通过 https://10.10.10.3:8006 访问
点击 Proceed 即可正常访问(忽略这个警告即可)
VPS 上 frps 已部署好,内网 frpc 也已经配置好(内网配置如下)
[pve-dashboard]
type = http
custom_domains = pve.example.com
local_ip = 10.10.10.3
local_port = 8006
remote_port = 81
use_compression = true
use_encryption = true
frpc 这边日志显示 proxy 建立成功
[control.go:181] [0e57994403b3976e] [admin.pve-dashboard] start proxy success
但是访问 https://pve.example.com 是 frp 的默认 404 页面(如下图)。
我在 frp http 传输外层包了一层 nginx ,最外层套了 SSL 实现的 https 访问
有人知道这种情况下应该怎么做吗?
内网中,curl -v http://10.10.10.3:8006 结果如下,
* Empty reply from server
* Connection #0 to host 10.10.10.3 left intact
scheme 必须指定是 https 才行,curl -v https://10.10.10.3:8006
* Trying 10.10.10.3:8006...
* Connected to 10.10.10.3 (10.10.10.3) port 8006 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
* CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
这种自签证书的 web 服务可以通过 frp 暴露在公网吗,还请指教。
1
des 2022-06-15 21:08:12 +08:00 via iPhone
为什么不行?最简单的方式 type 用 tcp 就行
|
2
lcy630409 2022-06-15 21:11:12 +08:00
自签证书和购买的证书的区别 也就是购买的证书的根证书内置到系统里去了,在证书方面来说 暴漏在公网没啥问题
|
3
AllenHua OP @des 我也用了 type tcp ,但是没弄清楚两端应该分别怎么配置才能通过 https://pve.example.com 访问
|
4
Kaiyuan 2022-06-15 21:19:16 +08:00 1
|
5
des 2022-06-15 21:22:21 +08:00 via iPhone
|
7
AllenHua OP @des #5 tcp 配置项是更少,custom domain 都不需要,你说这种方式我再试试吧,如果可以实现 frps 那侧 nginx 也要配合写一条配置 (目前写的是 针对 http 服务的,proxy pass 到 81 端口,得改)
|
8
documentzhangx66 2022-06-15 21:40:37 +08:00 2
重要业务,包括这种后台、数据库端口等,是万万不能直接暴露给公网的。
正确的做法是: 1.建立一套 VPN ,想偷懒,就用 ZeroTier ,然后买个公有云装 moon 节点来避免高延迟与不稳定。 2.VPN 用强密码。 3.VPN 默认端口号改掉。 4.VPN 端口被连接后,不主动发信息。OpenSSH 就有这个毛病,被连接后,会主动告知对面,自己是 OpenSSH ,仿佛在邀请别人来攻击。 5. VPN 用强密码,至少 16 位随机数字 + 字符 + 字母大小写。 6.对外用蜜罐伪装对外开放 RDP 、常用 VPN 、SSH 、Mysql 、MSSQL 等端口,哪个 IP 连接就封它娘的。 7.留意 VPN 的 0day 漏洞,经常升级。 |
9
documentzhangx66 2022-06-15 21:41:44 +08:00
有了 VPN 后,所有访问都是内网访问了。
所以最好提前规划号内网 IP 。 另外 ZeroTier 免费版本只有 50 个免费 IP 节点。如果有超过 50 个设备,并且只打算白嫖,一定要规划好子网。 |
10
AllenHua OP |
11
LeeLou 2022-06-15 22:05:38 +08:00
@documentzhangx66 #8 原来蜜罐还有这么个用法
|
12
totoro625 2022-06-15 22:22:07 +08:00 1
用 http2https 插件把 https 转换成 http ,再用 nginx 套 ssl 即可
当然,用 VPN 更好 [pve-dashboard] type = http custom_domains = pve.example.com plugin = http2https plugin_local_addr = 10.10.10.3:8006 plugin_host_header_rewrite = 10.10.10.3 plugin_header_X-From-Where = frp |
13
AllenHua OP @totoro625 #12 从 frp 0.20.0 版本开始用,那时候好像还没插件,本帖最原始的诉求解决办法应该就是你这个,怪我一直没用过 frp 中的插件系统 🤣
|
14
AllenHua OP @totoro625 #12 已经成功访问了,目前 frp 版本是 0.39.0 ,真不错。不过还是要学习一下 VPN ,再次感谢介绍这个插件。
``` [pve-dashboard] type = http custom_domains = pve.example.com plugin = http2https plugin_local_addr = 10.10.10.3:8006 plugin_host_header_rewrite = 10.10.10.3 plugin_header_X-From-Where = frp use_compression = true use_encryption = true ``` |
15
documentzhangx66 2022-06-15 23:11:06 +08:00
@LeeLou 正经人,谁会去尝试连接别人的 ssh 、rdp 、mysql 等端口,这些基本上是黑客入侵的第一步,用软件对 IP 段进行扫描,对常用端口进行扫描,然后字典 + 弱密码 + 0day 攻击。所以用蜜罐就最合适了,谁连就封谁。
|
17
des 2022-06-16 10:05:52 +08:00 via iPhone
@360dust 如果是 type tcp ,原有的服务是 https ,那转发出去的自然是 https
不过还是像楼上建议一样用 vpn 访问 另外你问的“怎么给 IP 套 https”这个问题有错误。 不知道你是想问“怎么申请&设置 IP 证书”,还是“怎么配置通过 https 访问我的转发出来的服务” |
18
itnoob 2022-12-30 01:06:12 +08:00
然后应该就只剩逃了 nginx+ssl 以后的 web shell 需要再关注一下就好了。
|