最近,因为觉得Edge自带的密码管理器太鸡肋了,所以我便私有化部署了Bitwarden(Vaultwarden),同时为了提高安全性我开启了2FA。但是我发现在Vaultwarden的后台管理面板中居然能关闭2FA,且管理面板的密码和我Bitwarden主密码库的密码是一致的,这导致一旦我的Bitwarden密码库的密码泄露了,2FA也无法做到给我兜底
解决方案
我首先想到的是修改管理面板的地址,将入口从/admin修改成更复杂的入口,但是Vaultwarden的管理面板是无法修改管理面板入口的。
借助AI我才意识到,可以使用VPN,将/admin配置成只有内网才能访问。在这之前我一直以为VPN是一种配置起来非常麻烦且复杂的东西,不过好在AI也同时回答了我可以使用什么软件。
我便了解到了Tailscale,Tailscale配置起来非常的简单,我在服务器上仅用了两条命令就将其配置好了,这打破了我对VPN配置起来非常复杂的刻板印象。
安装 & 配置Tailscale
在Linux服务器上我仅用了下面两条命令就将其配置好了
在Linux上安装Tailscale
curl -fsSL https://tailscale.com/install.sh | sh
在Linux上启动Tailscale
tailscale up
执行以上命令后会提示我们访问下面的URL
访问后会要求我们登录Tailscale
登录后点击Connect按钮服务器这边就已经配置好了
!{tip 提示}
其他操作系统配置步骤都大差不差,都是安装Tailscale,运行后按照Tailscale的提示登录连接就行了
所有设备配置好后,打开Tailscale的控制台就能看到有哪些设备加入了网络,在连接上VPN后就能通过Addresses里的域名或地址访问对应的设备了
!{tip 犯蠢经历}
因为是100开头,一开始看到这个IP地址时我以为这些是能被路由的公网地址
但是实际上 100.64.0.0/10 是 保留地址是无法在互联网中路由的
不过学校的教材上并没有关于这个地址段的介绍,可以说是课外拓展了
!{tip 温馨提示}
Tailscale 会优先尝试建立直连连接,如果网络环境不允许(例如: 防火墙、NAT等导致的无法直连)Tailscale会尝试走derp服务器中继
Tailscale官方的derp服务器在国内没有节点,这可能导致延迟比较高/不稳定,对于能有公网ip的设备可以开放
41641/UDP端口
利用Tailscale提升网络服务安全性
对Vaultwarden的管理面板进行限制
回到我是如何解决Vaultwarden管理面板不安全这个问题的
# 注意!这个配置并不安全
location /admin {
if ($host != "bw.ts.kzhik.cn") {
return 403;
}
# 反向代理配置...
}
!{tip 我又犯蠢了}
一开始我将 bw.ts.kzhik.cn(用于通过VPN访问Bitwarden的域名) 解析到了 100.104.68.96 (也就是上面那张图的server这个机器) 上,nginx配置如上
过了半天我才反应过味来,HTTP 协议的Host字段是可以被伪造的
如果攻击者知道我的Vaultwarden的服务器地址,想要绕过这个限制是非常简单的
后面我就改成了 只允许源IP地址在100.64.0.0/10范围内的请求通过,其他请求全部拒绝,也就是下面这段配置
location /admin {
allow 100.64.0.0/10;
deny all;
# 反向代理配置...
}
其他
除了Vaultwarden我做了限制之外,我还对1Panel、2FAuth做了相应的配置。现在这些服务都无法通过公网访问,必须要通过VPN才能访问,这大大减小了我服务器被入侵/数据泄露的概率