V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。

如果没有发送到 /go/in,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
takanashisakura
V2EX  ›  NAS

关于自建 bitwarden 安全性

  •  
  •   takanashisakura · 2023-11-06 17:05:58 +08:00 · 9209 次点击
    这是一个创建于 367 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,题主使用家用 nas ,采用开源版本的 vaultwarden/server 的 docker 镜像搭建了 bitwarden 服务。为了方便使用域名访问,是通过有公网 ip 的服务器,采用 nginx 反向代理的模式进行的内网穿透。

    公网服务器和内网 nas 之间通过 tailscale 打通的,使用 tailscale 的 acl 限制公网服务器仅可以访问 bitwarden 提供服务的端口,例如映射的 8080,然后再通过公网服务器的 nginx 反向代理把 nas 的服务配置在对应的子域名下。公网服务器前面还有一层 cloudflare 的代理和 ssl 加密,不知道这样是否还存在一些比较大的风险?

    网络结构大概这样:

    网络拓扑

    60 条回复    2024-09-09 15:54:08 +08:00
    Noicdi
        1
    Noicdi  
       2023-11-06 17:10:23 +08:00 via iPhone   ❤️ 2
    网络层面我不了解,但是在使用上我有一个建议,重要的账户密码采取两步密码,服务器上记录的秘密是实际密码的子串
    shirasu
        2
    shirasu  
       2023-11-06 17:13:28 +08:00
    @Noicdi 记录的是密码的字串是什么意思?不太明白,可以详细说一下吗?
    Huelse
        3
    Huelse  
       2023-11-06 17:14:40 +08:00
    理论上最危险的是你的客户端和你的主账号密码,https 是不用担心的,不然一众翻墙手段早就 G 了。
    yaott2020
        4
    yaott2020  
       2023-11-06 17:15:16 +08:00 via Android
    直接在 nas 上部署 cloudflare tunnel 不是更好吗
    DataSheep
        5
    DataSheep  
       2023-11-06 17:17:33 +08:00 via iPhone
    cf tunnel +1
    ZhiyuanLin
        6
    ZhiyuanLin  
       2023-11-06 17:19:44 +08:00
    不放心还能加个 Mutual TLS
    billlee
        7
    billlee  
       2023-11-06 17:24:02 +08:00
    @yaott2020 cloudflare tunnel 会受到 gfw 影响吧
    momooc
        8
    momooc  
       2023-11-06 17:25:21 +08:00 via Android
    要啥 cf ,慢死了,直接 https 反代本地 8080
    momooc
        9
    momooc  
       2023-11-06 17:27:18 +08:00 via Android
    主密码弄长点复杂点加上 Toto ,本地多备份,可以 gpg 、AES 加密备份坚果阿里云
    iphoneXr
        10
    iphoneXr  
       2023-11-06 17:48:10 +08:00   ❤️ 5
    bitwarden 浏览器插件-设置-安全-密码库超时 选择 从不 。
    哈哈 我觉得我的最大的风险点 应该就是这个了。
    takanashisakura
        11
    takanashisakura  
    OP
       2023-11-06 17:52:58 +08:00   ❤️ 1
    @momooc 你是想说 totp 的两步验证吗? cf 套在公网服务器的前面,一是因为我域名在 cf 托管,二是 cf 代理可以隐藏主机 ip 吧,所以顺带开了。
    takanashisakura
        12
    takanashisakura  
    OP
       2023-11-06 17:56:42 +08:00
    @yaott2020 cf tunnel 好像之前看到有些问题,然后我之前实际上是用的 tailscale 把 nas 和笔记本做的共享。最近是因为手机上使用有点不太方便,所以走公网服务器的 nginx 做了个反代。
    Noicdi
        13
    Noicdi  
       2023-11-06 17:59:23 +08:00 via iPhone   ❤️ 1
    @shirasu #2 假设我的微信的实际密码是 123456abc ,我在 bitwarden 上的密码记录的是 123456 ,然后在实际填密码时还会补上 abc 。这个做法包括但不限于开头、中间和结尾补密码,特定位换密码。类似于两步验证
    dudewei
        14
    dudewei  
       2023-11-06 18:06:20 +08:00   ❤️ 1
    bitwarden, lastpass 这种产品,最大的安全问题可能不在于你的网络传输(当然网络传输也重要),而在于你的 主密码到底有多长。
    如果不是 15 个以上的随机混合字符串,那就自求多福吧。
    看看去年 lastpass 被偷走的数据,现在开始很多人的数据被破解出来了。
    比如下面这个
    https://bgr.com/tech/last-years-lastpass-security-breach-was-linked-to-35-million-in-crypto-heists/
    momooc
        15
    momooc  
       2023-11-06 18:08:44 +08:00 via Android
    @takanashisakura o 和 p 太近了点太快,你有服务器还用 nas 吗,多此一举
    0x535
        16
    0x535  
       2023-11-06 18:24:02 +08:00 via iPhone
    我认为这种服务放在局域网就够了。安全和便利总是要做一点取舍的。
    lekai63
        17
    lekai63  
       2023-11-06 18:33:42 +08:00 via iPhone
    要么本地搭建 cf tunnel 暴露出去

    要么服务器部署 挂一层 cf

    叠加的收益是什么?

    ———

    危险点:主密码、bw 0day 、服务器因其他问题被攻破
    dna1982
        18
    dna1982  
       2023-11-06 18:55:25 +08:00
    费时费力不讨好
    我用 Keepass
    shijingshijing
        19
    shijingshijing  
       2023-11-06 19:08:37 +08:00
    这种图是什么画的? Drawio?
    neroxps
        20
    neroxps  
       2023-11-06 19:13:18 +08:00 via iPhone
    @dna1982 早期 keepass 的 ios 客户端难用的一批。客户端还是 bitwarden 最舒服(免费的)
    bao3
        21
    bao3  
       2023-11-06 19:39:16 +08:00   ❤️ 1
    与网络相比,自建密码库最大的风险就是数据损坏。简单来说,如果你真的要自建,那么你需要:
    1. 定期备份你的密码库文件,备份到另一个物理盘。
2. 异地备份你的密码(比如同时用 biwarden 和 chrome /icloud 来记录同一个网站)
3. 定期导出为其他密码管理器的格式,并加密存储(比如使用 veracrypt ,放入存储中,这个文件你可以放心在网盘中备份)

    大多数自建的人,会遇到悲惨命运,就是因为没有考虑到数据风险而只考虑了网络通讯风险
    jqtmviyu
        22
    jqtmviyu  
       2023-11-06 19:53:27 +08:00
    当然是 Keepass, 坚果云 webdav 支持历史版本. 密钥在本地.
    jqtmviyu
        23
    jqtmviyu  
       2023-11-06 19:54:11 +08:00
    最大的风险就是电脑被偷了.我没设置主密码.
    weak
        24
    weak  
       2023-11-06 20:11:54 +08:00 via iPhone
    @bao3 其实还好 同步到手机上 服务端崩了,手机里的还在,原来服务端直接删了,起个 docker ,把手机的恢复过去
    zhhmax
        25
    zhhmax  
       2023-11-06 21:56:38 +08:00
    主密码 20 位包含大小写特殊字符,开了 2FA ,密码文件每 5 分钟打个加密压缩包 rclone 到谷歌 drive ,关闭新用户注册。
    IV16SL
        26
    IV16SL  
       2023-11-06 22:10:04 +08:00
    0day ,cf 那边的风险这两者的风险你无法控制,剩下的只要你没有弱密码,保持安全更新就不会有啥问题,甚至说自建只是自用的话的风险比官方服务都要小,因为谁知道你的这个服务。
    neroxps
        27
    neroxps  
       2023-11-06 23:09:15 +08:00
    @bao3 https://github.com/jeessy2/backup-x

    简单的备份任务即可。定期打压缩包
    etnperlong
        28
    etnperlong  
       2023-11-06 23:43:41 +08:00
    自建 Bitwarden (Vaultwarden) 稳定用了至少三年了 上面存了我几乎所有帐号所有密码 期间迁移过服务器

    我的方案是直接 Docker 拉起镜像 + Cloudflared Tunnel ,每天定时 SQLite 备份数据库 + 打包压缩静态文件,然后 Rclone 同步到 Google Drive 加密盘
    只保留过往两周的记录,所以个人 15G 绰绰有余了
    迁移就直接关掉服务然后整个文件夹拷走再重新部署

    稳定性还是很强的,我目前服务运行三年,一次都没挂掉,也没动用备份恢复过数据
    etnperlong
        29
    etnperlong  
       2023-11-06 23:46:13 +08:00
    @etnperlong 不建议使用 NAS 储存,增加了复杂度,性能要求很低,用闲置的 VPS 搭建更合适,日常访问挂代理就好。
    Northshad0w
        30
    Northshad0w  
       2023-11-06 23:48:50 +08:00
    我是用云函数自建的,阿里云的函数计算能直接跑镜像,超级便宜,一个月用不到一毛钱
    EthanLau
        31
    EthanLau  
       2023-11-07 00:08:58 +08:00
    建议直接通过 vpn 访问 nas 里的服务, 别暴露在公网上
    duduke
        32
    duduke  
       2023-11-07 00:13:05 +08:00 via iPhone
    cf tunnel ,简单粗暴,这种也不需要多快网速,偶尔断网也无所谓,都在本地存着
    0o0O0o0O0o
        33
    0o0O0o0O0o  
       2023-11-07 00:33:18 +08:00 via iPhone
    侧重点请放在备份上,不要担心网络传输的安全性,也不用担心服务器上数据的安全性

    bitwarden 的明文只存在于客户端在你输入主密码解锁后的内存中 https://bitwarden.com/help/bitwarden-security-white-paper/ 你只需要信任你的客户端,不需要信任任何网络或是服务器

    记得禁用 web https://github.com/dani-garcia/vaultwarden/blob/cec1e87679cfd0e2f0bce9b7dc3256dbbd2effa8/.env.template#L70

    建议你读一遍这个 env 文件里每项的注释,非必要的都禁用掉,不懂的选项在 issues 里搜一下
    liuguang
        34
    liuguang  
       2023-11-07 00:40:47 +08:00
    bitwarden 拿到数据库都不能解密,只有自己的主密码可以解开。
    cosette
        35
    cosette  
       2023-11-07 02:09:29 +08:00
    注意一下默认设置,不需要的功能可以全部禁用,修改加密方式为 Argon2 (不知道现在是不是默认启用,可能是),定时的备份数据库到其他设备。

    BW 最让我不满意的点就是绑定了账户,需要一个服务器登录账号才能同步使用,如果服务端坏了可能造成非常大的麻烦。Server-first 让我有点不爽,这一点上我更喜欢 enpass ,但是 enpass 也更加的封闭,不够透明。
    wzw
        36
    wzw  
       2023-11-07 07:46:30 +08:00
    @Northshad0w 具体说说, 是否写了教程, 谢谢
    Kaiyuan
        37
    Kaiyuan  
       2023-11-07 08:23:27 +08:00 via iPhone
    @bao3 定时加密备份到多个云盘。我是两天一备份的。
    YangWaleed
        38
    YangWaleed  
       2023-11-07 09:04:03 +08:00
    @Noicdi #13 那这个需要补充的子串,以及补充的位置是什么记忆的?
    不同网站之间有什么规律吗?
    token10086
        39
    token10086  
       2023-11-07 09:31:08 +08:00
    我是没把端口放出去的 tailscale 打通了用的,放出去怕有问题
    redial39
        40
    redial39  
       2023-11-07 09:39:12 +08:00
    docker 部署,data 目录挂载,wg 后访问,每天定时备份 data 目录,gpg 加密后放 dropbox
    Noicdi
        41
    Noicdi  
       2023-11-07 09:45:44 +08:00 via iPhone
    @YangWaleed #38 这个就纯看个人了,补充的子串可以是个人名字的缩写,或者特殊意义的字符串,或者待登陆网站的域名;位置可以放结尾也能放开头。
    这些纯看你怎么舒服怎么来。
    况且不是所有账号的密码都这么搞,我只把几个关键账号的密码这么操作了,其他的就直接存 bitwarden 里了
    owwo
        42
    owwo  
       2023-11-07 09:56:06 +08:00
    bitwarden 安卓用不了 还是老老实实 1PASS
    mdn
        43
    mdn  
       2023-11-07 10:24:45 +08:00
    bitwarden 最重要的就是记住账号和主密码
    服务器是次要的,数据库中只保存加密数据,拿到数据库也需要账号对应的主密码解密,备份倒是有必要,虽然 ios 客户端在服务器宕掉也能使用和导出,但是可以避免误删数据
    传输过程更不用担心,传的都是数据库加密数据,解密是在客户端输入主密码之后完成的
    dislazy2023
        44
    dislazy2023  
       2023-11-07 10:28:42 +08:00
    @owwo 安卓正常用啊 不过我很少用手机来输入账号密码
    tyzrj766
        45
    tyzrj766  
       2023-11-07 10:31:22 +08:00
    我懒,所以只选现成服务省时间。bit 这种自建的,尤其是密码这种极其重要的数据,还得想办法去多份异地备份,服务器也得加强安全防护。
    gaodq
        46
    gaodq  
       2023-11-07 10:35:37 +08:00
    @Noicdi 这个方法妙啊
    shunia
        47
    shunia  
       2023-11-07 10:44:01 +08:00
    @owwo #42 什么地方用不了?我用了很久,没发现你说用不了的情况
    cnkuner
        48
    cnkuner  
       2023-11-07 11:01:06 +08:00
    @Northshad0w 阿里云的云函数跑镜像?能具体说说咋建的吗?
    jackmod
        49
    jackmod  
       2023-11-07 11:01:10 +08:00
    如果能连上的话,可以试试 cf 的 zero trust ,直接丢在局域网网段里
    maniaccn
        50
    maniaccn  
       2023-11-07 13:44:49 +08:00
    cf tunnel +1
    YangWaleed
        51
    YangWaleed  
       2023-11-07 23:12:45 +08:00
    @Noicdi #41 对我个人而言感觉并没有增加太多的安全性,又降低了一些便利性。

    如果只有个别网站特殊处理并且每个网站不一样,那就是降低了便利性,提升的是 bitwarden 泄漏后的安全;
    如果特殊处理都一样,那便利性和安全性基本没什么变化,和不做特殊处理差不多;

    所以我现在就完全只用 1password
    iwdmb
        52
    iwdmb  
       2023-11-08 00:46:57 +08:00
    Tailscale
    body007
        53
    body007  
       2023-11-08 11:05:13 +08:00
    @YangWaleed #38 我的规律就是网址中间夹的那部分,例如:www.<pass>.com ,我还会首字母大写,以及太长了只用单词首字母。后缀有年份,每年用的时候发现年份不对就改一次密码。
    lm930129
        54
    lm930129  
       2023-11-08 11:14:46 +08:00
    @owwo 估计你安卓是因为证书的问题,安卓要求要有 fullchain 证书,如果在部署的时候,用 nginx ,没生成 fullchain 证书的话,安卓会报错,要求你安装证书。
    YangWaleed
        55
    YangWaleed  
       2023-11-08 20:26:48 +08:00
    @body007 #53 我个人觉得健壮的密码就是单纯的随机,密码管理软件帮助管理这些随机密码。
    在这之上增加任何有规律的内容都提升不了太多的安全性。靠人肉记忆的规律内容总会被找到规律。
    如果担心密码库泄露,那不如用两个完全隔离的密码管理软件,每个只存半段密码。但这样牺牲的就是便利性了
    libook
        56
    libook  
       364 天前
    我是在外面的时候用 vpn 连上家里的网络环境,然后用访问本地局域网的方式访问家里的服务。

    除了 vpn 还可以用带认证的代理协议,比如 vmess 、ss 。安卓上可以用 tasker 在连上或者断开家里 wifi 的时候自动开启或关闭 vpn 、代理。

    这样我家里所有服务全都隐藏在 nat 里面,除非我 vpn 或路由器被攻破了才会暴露在外面。
    libook
        57
    libook  
       364 天前
    我个人觉得 vaultwarden 本身的安全加密已经做得挺好了,这样反而最大的安全问题是数据完整性问题,也就是怎么备份密码数据的问题。
    72MpQOSsJhyLs88N
        58
    72MpQOSsJhyLs88N  
       363 天前 via iPhone
    @lekai63 这不是跟只要你家大门比邻居家的结实就行了一样吗?网络上大多都是脚本小子找弱密码的,只要保持最新版本几乎无风险吧。普通人有何德何能值得顶级黑客定向攻击?
    benjaminliangcom
        59
    benjaminliangcom  
       304 天前
    ciki
        60
    ciki  
       59 天前
    我在 nas 上自建的,现在 nas 坏了,一堆设备上的服务全部宕机
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3498 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:35 · PVG 12:35 · LAX 20:35 · JFK 23:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.