V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
E263AFF275EE4117
V2EX  ›  程序员

自建 Bitwarden,想问下 V 友们这样安全系数高吗?

  •  
  •   E263AFF275EE4117 · 3 天前 · 6885 次点击
    • 服务器配置 OpenVPN ,通过根证书+自签名密钥+账户密码方式访问
    • 服务器关闭 22 端口,即由 OpenVPN 网络下,通过公钥方式进行免密登录,仅放开 443 端口(有个博客站)
    • 数据源用 MySQL ,异云服务商、异地主机搭建主从数据库
    • Nginx 屏蔽 Web 端及页面访问,只保留相关 API 接口,API 接口访问受限 OpenVPN 网络白名单
    • 启用自签名 SSL 证书,并导入安卓手机\PC ,即访问 https://11.1.0.1 网络 (Bitwarden 的服务访问需要 ssl)
    109 条回复    2025-07-11 20:47:03 +08:00
    1  2  
    yiwayhb
        1
    yiwayhb  
       3 天前   ❤️ 1
    我的也差不多,只有 SSL 证书用的是 Let's Encrypt ,管理日常的密码也够用,至少比用同一个密码安全性高。
    重要密码(涉及资金的),还是别记到里面比较好,安全往往出在最薄弱的环节
    suuuch
        2
    suuuch  
       3 天前   ❤️ 2
    有一个比较特殊的方式,每个密码后面人工记忆一个固定后缀/前缀。
    比如说 自动保存的密码是:xxxxx
    但是实际的密码是 xxxx-abc 这样。

    这样的弊端就是操作 valut 的时候要额外注意,不要把真实密码给存进去了。
    E263AFF275EE4117
        3
    E263AFF275EE4117  
    OP
       3 天前
    @yiwayhb 谢谢,我也是用的 Let's Encrypt 的 SSL 证书,但是我不想互联网访问,就搞的自签 SSL 证书并通过 VPN 网络访问。
    我目前也不会把涉及资金相关密码存网络上,上面存的一些常用的。
    onice
        4
    onice  
       3 天前   ❤️ 10
    我所了解的,几乎所有的密码管理器,都不会把明文存储到服务器上。服务器上存储的,都是加密后的数据。

    其获得你的密码,核心的地方在于你的密码库密码。只要你的密码库密码泄露,攻击者就拿不到你的密码数据。

    由上可知,关注定反而不应该放在密码库的密码是否安全。由于是自建,关注点应该放在数据的完整性。即密码库要有备份,不要被攻击者删除或被加密勒索。
    onice
        5
    onice  
       3 天前
    @onice 第二行少了个字,出现了歧义。应该为:只要你的密码库密码不被泄露,攻击者就拿不到你的密码数据。

    倒数第二行,关注定是关注点。
    E263AFF275EE4117
        6
    E263AFF275EE4117  
    OP
       3 天前
    @suuuch 真牛的啊!自己记忆一个 XXXX 固定后缀就只有自己晓得!安全等级又提高了! 谢谢
    E263AFF275EE4117
        7
    E263AFF275EE4117  
    OP
       3 天前
    @onice 是的,自建就怕数据丢。 如果我密码库主密码泄露,确实相当于这个密码库里都是明文了。
    2L 的老哥回复的,也给了我一个启发,我现在能做的就是提高下安全等级,并且不保存涉及资金安全信息在上面。
    rulagiti
        8
    rulagiti  
       3 天前   ❤️ 1
    做的很好了
    YaakovZiv
        9
    YaakovZiv  
       3 天前
    我也自建了,但是我配置了云平台上的防火墙,仅限我自己的 IP 访问。
    Felix2Yu
        10
    Felix2Yu  
       3 天前   ❤️ 1
    @E263AFF275EE4117 其实数据丢失不用太担心。如果你用手机、浏览器客户端,即使服务端挂了,也能离线导出密码本。大不了重部署后再导入回去
    crackself
        11
    crackself  
       3 天前 via Android
    同是自建,配置 iptables 防火墙禁止端口,绑定 local host 端口,经 nginx 转发代理访问。重点是数据库要有多个备份
    CnpPt
        12
    CnpPt  
       3 天前 via Android
    比我安全系数高姥姥家去了,我自建用 CloudFlared 扔公网了,密码库密码非弱密码加 MFA 验证搞定。
    neroxps
        13
    neroxps  
       3 天前 via Android
    我司程序还在用记事本 企业微信在线文档存密码高多了。

    全公司就我用密码管理器。
    E263AFF275EE4117
        14
    E263AFF275EE4117  
    OP
       3 天前
    @YaakovZiv 如果多端,怎么做到固定 IP 地址访问的啊
    E263AFF275EE4117
        15
    E263AFF275EE4117  
    OP
       3 天前
    @Felix2Yu 我以为那个导出是需要联网的,这样说来,即使服务端挂了,其他终端也是保存了一份的,最差是同步数据有差异。
    imba97
        16
    imba97  
       3 天前
    用了好几年了,现在有 MFA 、PassKey 是真的好用
    hefish
        17
    hefish  
       3 天前
    我都是写纸上,缝内裤里面一层的。不到最后关头不拿出来看。
    Madrid
        18
    Madrid  
       3 天前 via iPhone
    安全的 放心用吧 不要泄漏你的主密码就好了
    docx
        19
    docx  
       3 天前 via iPhone
    偏个题,都主从了,这个成本为什么不直接开个官方 pro 还不用自己维护
    docx
        20
    docx  
       3 天前 via iPhone
    @hefish 那你这内裤水洗一次就看不清了
    MFWT
        21
    MFWT  
       3 天前
    可以了,我目前也是类似措施,Vaultwarden 不暴露到公网,只能在我自己的网络内访问(杏泉网络,类似 DN42 那种 Overlay Network )用自己的域名后缀+自己的证书,每隔一小时自动拉取最新数据库备份到我本地 NAS
    zhenjiachen
        22
    zhenjiachen  
       3 天前 via iPhone
    我都是直接暴露在公网的,服务器不买公网 IP ,使用 cloudflared 链接 cf ,证书也是 cf ,用的 google 旧配置服务器,一个月 0.5 刀,已经稳定运行 4 年了
    skiy
        23
    skiy  
       3 天前 via iPhone
    我是 sqlite 。有次升级,登录不了了。然后备份数据库后重新安装,把那密码提取到旧数据库中就能登录了。
    所以…
    irrigate2554
        24
    irrigate2554  
       3 天前 via Android   ❤️ 1
    光是用密码管理器就已经超过 99% 的人了
    memcache
        25
    memcache  
       3 天前
    很安全了已经.
    我是 ddns+ nginx + nas docker 暴露公网
    Qiuchi
        26
    Qiuchi  
       3 天前
    @docx 感觉服务定时给备个份都够了,没那么频繁加密码
    LnTrx
        27
    LnTrx  
       3 天前
    关键是终端设备的安全性
    mx1700
        28
    mx1700  
       3 天前 via Android
    我是不搞备份,服务器挂过,离线导出本地密码库,重新搭建服务器导入即可
    jiangliuli
        29
    jiangliuli  
       3 天前
    本地服务器用 cloudflare tunnel 放到公网 但是并不知道这样是不是安全
    zhhmax
        30
    zhhmax  
       3 天前   ❤️ 1
    你这个也太谨慎了。

    我是部署在公网上的 VPS 了,ssh 仅允许公钥方式进行免密登录,SSL 证书用的 Let's Encrypt 。vaultwarden 开启了 admin ,admin 登录密码长达 32 位,包含字母数字和特殊字符。

    为什么我不担心,因为首先别人不知道我注册的邮箱是什么,然后再加上高强度 20 位登录密码以及两步验证,我不相信还有人能爆破的了。其次就是 ssh 只通过公钥登录已经最大程度上避免了数据库上密码文件的泄漏,更别提数据泄漏后破解密码文件的复杂程度了。
    jqtmviyu
        31
    jqtmviyu  
       3 天前
    @zhhmax #30 你这最大的风险反而是 vps 的数据了. 例如那种机房出事故.
    silencefly
        32
    silencefly  
       3 天前 via iPhone
    ddns https fail2ban 定时备份加密后传 OneDrive
    siweipancc
        33
    siweipancc  
       3 天前 via iPhone
    官方也就 10 美元……我选省心的,自己的服务器我可没信心哈哈
    zhhmax
        34
    zhhmax  
       3 天前
    @jqtmviyu 我设置了定时任务每 5 分钟加密压缩数据文件夹上传到 onedrive 里面
    kqz901002
        35
    kqz901002  
       2 天前
    @memcache 一样的配置,很方便
    383394544
        36
    383394544  
       2 天前
    我之前加密 ssh 的方式是用 cloudflare 的 argo tunnel ,然后服务器 22 端口只放行 cf 的 ipv6 段。
    JKOR
        37
    JKOR  
       2 天前
    我是公网 ip 服务器,使用 nginx 转发,配上了域名直接暴露在公网,但是加了 mTLS ,客户端需要证书才能访问,我感觉在安全性方面 mTLS 已经够用了,更多地需要关注数据库备份情况。
    ZGeek
        38
    ZGeek  
       2 天前
    @suuuch #2 基于算法的加密手段
    StarUDream
        39
    StarUDream  
       2 天前
    我的 vaultwarden 是放在 nas 里的,然后 tailscale 组网到公网服务器,用 nginx+域名暴露出去。
    数据库用的 sqlite ,所以备份很简单。
    账户开启了二次验证,倒也不会出很大问题。
    基本上现在很少增改密码了,即使断网,bitwarden 的插件也有缓存能继续用。
    YangQingLin
        40
    YangQingLin  
       2 天前   ❤️ 1
    @onice 说的太对了,自建一定要做好数据备份,推荐用下面这个容器做定时备份: https://hub.docker.com/r/bruceforce/vaultwarden-backup

    一个备份文件才 400 多 KB ,我直接一小时备份一次

    并且部署成功之后一定要本地起一个 vaultwarden 测试一下恢复操作
    YangQingLin
        41
    YangQingLin  
       2 天前
    @zhhmax 有试过恢复操作吗?我之前也和你一样直接压缩数据目录备份的,后来发现无法恢复
    concernedz
        42
    concernedz  
       2 天前
    腾讯云轻量服务器
    1panel 搭的,每天定时加密压缩到七牛云
    vaultwarden 没开 admin 管理
    ssh 关闭了密码登录,防火墙限制了只限国内的
    限 ip 这个方法想过,但多端不知道咋解决
    wtf12138
        43
    wtf12138  
       2 天前
    牛,我用 bitwarden 官方的,懒得自己搭
    python35
        44
    python35  
       2 天前
    我是腾讯云 docker 部署+cos 每日备份+直接公网访问
    我倒是不担心服务器出问题,毕竟服务器上是加密存的,更怕本地浏览器的插件缓存或者浏览器内存被读了
    Rehtt
        45
    Rehtt  
       2 天前
    @zhhmax #30 主要是提高爆破成本,5 毛钱的数据值不值花 500 块爆破
    superrichman
        46
    superrichman  
       2 天前   ❤️ 1
    @hefish 你这密码太骚了
    seth19960929
        47
    seth19960929  
       2 天前
    1panel 开 2FA, 然后直接用商店里的镜像
    挂载数据目录, 每天自动备份三处, 服务器, 七牛云, 腾讯云

    q534
        48
    q534  
       2 天前
    官方免费的有什么问题吗?
    ryan4290
        49
    ryan4290  
       2 天前
    我一直用的坚果云的 WebDav 配合 KeePass 去用的,这个支持 WebDav 协议吗?
    wyfig
        50
    wyfig  
       2 天前
    之前也想过,后来完全放弃这方面想法了。 官方免费的用了四五年了,一点问题没有。 想用高级的一年 10 美元也挺划算的,完全没有必要折腾。
    E263AFF275EE4117
        51
    E263AFF275EE4117  
    OP
       2 天前
    @docx 是刚好有这套配置在,顺便利用起来自建密码管理的。 如果单独搭建这套确实不如开 pro 了。
    E263AFF275EE4117
        52
    E263AFF275EE4117  
    OP
       2 天前
    @concernedz 我有一台也是轻量云,限 ip 就是通过 openvpn 网络+自签名 SSL 证书实现多端访问。
    concernedz
        53
    concernedz  
       2 天前
    @E263AFF275EE4117 #52 那客户端还要挂客户端,感觉挺麻烦的
    E263AFF275EE4117
        54
    E263AFF275EE4117  
    OP
       2 天前
    @ryan4290 我暂时还不太清楚,是否支持 WebDav 协议。我也才刚开始用这个才搭建好的。
    E263AFF275EE4117
        55
    E263AFF275EE4117  
    OP
       2 天前
    @python35 你说的本地浏览器插件缓存或浏览器内存被读了,这种有什么好的方式避免嘛。。。我想了下,即使安全等级在高,就像主密码泄露一样,所有的功夫都白搭了。
    ZColin
        56
    ZColin  
       2 天前
    嗯……bitwarden 本身的加密已经很好了,别人盗了你的 db ,没主密码他也搞不定。
    我一般直接映射公网绑定域名然后关闭注册,定时备份到 onedrive 上就行了。
    保证东西不丢就行,至于盗取破解……基本不可能,除非你的主密码泄露。
    如果实在是感觉怕被盗的话不如本地部署 keepass
    CSGO
        57
    CSGO  
       2 天前
    我也是自建,按我了解数据即使被人拿也没事。我对其安全的要求是不丢失,以及不被人后台破坏。所以我是数据定期备份到 google 云盘,后台白名单 ip 访问,整个站点套了 cf ,登录用了 fail2ban 。
    skiy
        58
    skiy  
       2 天前 via iPhone
    @ZColin 如果是 sqlite ,可以破的。创建个新的,把那行用户信息添加到旧的 db 上,就能登录了…我试过。所以 sqlite 有一定的风险。
    W4J1e
        59
    W4J1e  
       2 天前
    看起来比我折腾(安全)得多,我就做了简单的混淆(子目录),每天备份到 onedrive 。
    whobuki
        60
    whobuki  
       2 天前
    这一长串流程都可以扔给赛博菩萨 cloudflare tunnel 解决,就是服务端和客户端都需要折腾一下出国网络
    BardOS
        61
    BardOS  
       2 天前
    N1 盒子搭建的放公司,CFTunnel 打洞,WAF 设置规则,主密码还有二次验证,没那么容易破的。
    sarices
        62
    sarices  
       2 天前
    自建的特别是 docker 部署的,如果稳定就别手贱 pull 新的镜像,先备份!先备份!先备份!,别问我怎么知道的。
    我现在都是用官方的服务
    bowencool
        63
    bowencool  
       2 天前
    @imba97 #16 最近自动填充不好用了,总是会提示创建新密码,而不是选择已经存在的密码。。
    bowencool
        64
    bowencool  
       2 天前
    @memcache #25 差不多,以前是 ddns ,现在是 frp
    twinsdestiny
        65
    twinsdestiny  
       2 天前
    @skiy #57 那能看到旧 DB 原有用户的密码吗,看不到等于新建了个用户而已,这也叫破?
    bowencool
        66
    bowencool  
       2 天前
    @YangQingLin #41 我也是备份数据目录,刚才问了 AI ,确实有概率恢复不了🤡
    bowencool
        67
    bowencool  
       2 天前
    @YangQingLin #40 太复杂了,还是在客户端导出 JSON 方便
    ZingLix
        68
    ZingLix  
       2 天前   ❤️ 1
    再提一点,vaultwarden 可以设置 subpath 的

    域名很容易被各种途径扫到,但加了 subpath 之后,光扫到域名 https://11.1.0.1 没用,还得找到 https://11.1.0.1/xxx/xxx ,不带 subpath 的挂个什么别的东西,这样藏得更深
    skiy
        69
    skiy  
       2 天前 via iPhone
    @twinsdestiny ???你回复前能不能看看我回别人的信息?别人说是拿到了 db 。拿到 db 不就相当于裸了吗?再部署个,把 db 丢进去,密码不就能显示了吗?
    neptuno
        70
    neptuno  
       2 天前
    bitwarden 开个 pro 会员就行了,你这个成本也不低,稳定性还不如官方
    aimerforreimu
        71
    aimerforreimu  
       2 天前
    bitwarden 库都是加密的,只要主密码不泄露就行,唯一需要担心的是中间人攻击吧
    gogogo2000
        72
    gogogo2000  
       2 天前
    现在主流密码管理器的设计在服务器上存放的都是高度加密的密文,而打开密码库的主密钥从头到尾是不会在网络上传输的,即便被监听了也抓不到。但如果是访问者中了木马被记录键盘了自然就另当别论了。
    conky
        73
    conky  
       2 天前
    @skiy #69 部署完了,你想进密码管理器也需要输入主密码
    buxiny
        74
    buxiny  
       2 天前
    @ZingLix 有的, 在 /config.json 内设置

    {
    "domain": "https://***.youdomain.com/subpath",
    ...
    }

    https://rs.ppgg.in/reverse-proxy/using-an-alternate-base-dir
    lucifer9
        75
    lucifer9  
       2 天前
    自建主要是备份数据库,记住一定要异地备份
    最重要的是如果备份是加密的话,千万别把密码只存在 vaultwarden 里面
    skiy
        76
    skiy  
       2 天前 via iPhone
    @conky …那你又得找我前一条回复了。。。参考#58 再参考我 #23 的回复。我是实践过才说话的。如果你觉得不可能,你可以尝试下再回复我。我没必要说假话,又没利益冲突。
    okzy520
        77
    okzy520  
       2 天前
    @hefish 不洗内裤是吧! hentai
    justwkj07
        78
    justwkj07  
       2 天前
    每天同步到 oss 备份
    sayemike
        79
    sayemike  
       2 天前
    大佬们若是发现惊天大漏洞的,建议向 bitwarden 提交漏洞悬赏,赚美刀
    https://bitwarden.com/help/is-bitwarden-audited/#bug-bounty-program
    raycloud
        80
    raycloud  
       2 天前
    @skiy 你是不是不知道 db 里存的密码是经过主密码加密的?
    byiceb
        81
    byiceb  
       2 天前
    做的真复杂,我直接用免费版
    ZxykM
        82
    ZxykM  
       2 天前
    @skiy #76 你怕是不知道 db 里面密码都是主密码加密的,没有主密码啥都看不到
    skiy
        83
    skiy  
       2 天前 via iPhone
    @ZxykM ?你先理清楚我的逻辑。不是说你主密码加密不加密。

    1. 先将旧后 db 备份成 bak.db
    2. 删除 db ,重新部署。新数据库为 db 。注册个管理员账号
    3. 将这个新数据库 db 的字段及值,拷贝到 bak.db
    4. 将 bak.db 恢复成 db 文件名。重新启动。
    5. 用新的管理员账号就能登录。服务就侧正常运行了。再配合相应的客户端,就能查看到数据。

    不是说你原来的管理员账号能被解出来,而是说能重置密码。
    skiy
        84
    skiy  
       2 天前 via iPhone
    @raycloud 看我 #83 的回复。
    你要说,各条记录的密码也要把主账号的密码加入,再加密。这个我确实不知道。因为我之前有次升级后,主账号和密码登录不上,就使用此方法恢复了。不过是去年还是前年的事情了。不清楚现在的版本有没有升级。

    至于怎么说,你们自己认为吧。反正我遇到过一次,现在悠着点了,不敢随意升级了。
    nekoneko
        85
    nekoneko  
       2 天前
    我是 所有服务器和设备通过 zerotier 和 easytier 组网
    之后 NAS 部署服务, 腾讯云部署 Lucky 来做转发
    wangbingxu
        86
    wangbingxu  
       2 天前
    Elpass 日常使用(macos 原生非常舒服),买了 Proton Pass + SimpleLogin Lifetime ,作为备用,以及使用邮箱无限别名,基本就够用了。

    试过自建 Bitwarden ,实在太丑了,还是放弃了
    nekoneko
        87
    nekoneko  
       2 天前
    @nekoneko 另外备份方案是每天把需要备份的数据备份到 NAS 另一块硬盘/我的电脑/腾讯云/搬瓦工各一份
    since2021
        88
    since2021  
       2 天前
    不试试 lesspass 吗,根本不用存储密码
    zhhmax
        89
    zhhmax  
       2 天前
    @YangQingLin #41 可以的,我都不知道换过多少台服务器重新部署了,解压文件夹之后直接重新 docker 命令启动就行。我的一个备份文件大小是 3 兆,所以我把历史所有每 5 分钟的备份都存起来了,如果其中一个备份不可用,再往前推 5 分钟用另外一个就行。
    ZColin
        90
    ZColin  
       2 天前
    @skiy #83 现在不行的,每个字符串的加密参数都是跟主密码加 KDF 的迭代参数派生的,比如参数种子是你的主密码+600001 ,你就算移花接木换了管理员账号密码,也会因为主密码派生的密钥不同导致无法解密。
    suyuyu
        91
    suyuyu  
       2 天前
    我直接用,没想还有这么多门道
    skiy
        92
    skiy  
       2 天前
    @ZColin ...看到了。修改主密码时,"同时轮换账户的加密密钥" 这个也要选上才行。

    我现在怀疑我这个的所有数据可能都还没有把“主密码”加入盐值加密的。得更新一下才行了。

    https://imgur.com/a/xLBpKkQ
    waleslau
        93
    waleslau  
       2 天前
    @skiy #58 有道理,那部署 vw 的小主机一定得保护好,SSH 换个非标准端口,关闭密码登录,远程只用密钥登录。
    skiy
        94
    skiy  
       2 天前
    @waleslau 新版本把管理员密码也加入盐值计算了。不知道默认打开这个功能的吗。我查下文档才行。
    waleslau
        95
    waleslau  
       2 天前
    @skiy #94 哦,之前没注意过 ,那个“更高的 KDF 迭代可以帮助保护您的主密码免遭攻击者的暴力破解。 ”么,默认就开了的。
    frankilla
        96
    frankilla  
       2 天前
    我就装在家里的软路由里,这玩意不是明文的吧~
    E263AFF275EE4117
        97
    E263AFF275EE4117  
    OP
       2 天前
    @neptuno 有其他业务需求在用,所以自建这个密码管理是顺带的。不利用起来资源也是半闲置状态的。
    YaakovZiv
        98
    YaakovZiv  
       2 天前
    @E263AFF275EE4117 你是说多个设备不同 IP 作为访问源,需要每次都加白名单的问题吗。我是用的公有云,每次都是手机端 APP 上加白名单后使用。用完再删除
    zololiu
        99
    zololiu  
       2 天前
    @hefish 我去,谢谢你的新思路,真的振奋人心!
    zololiu
        100
    zololiu  
       2 天前
    直接购买了官方的服务,一年也就几十块钱,省心不折腾。
    1  2  
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   924 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 19:51 · PVG 03:51 · LAX 12:51 · JFK 15:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.