V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Datetime.app
Datetime.app 是开源的世界时钟与时间查看和转换工具。
Promoted by BeCool
E263AFF275EE4117
V2EX  ›  程序员

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

  •  
  •   E263AFF275EE4117 · 35 天前 · 7935 次点击
    这是一个创建于 35 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 服务器配置 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  
       35 天前   ❤️ 1
    我的也差不多,只有 SSL 证书用的是 Let's Encrypt ,管理日常的密码也够用,至少比用同一个密码安全性高。
    重要密码(涉及资金的),还是别记到里面比较好,安全往往出在最薄弱的环节
    suuuch
        2
    suuuch  
       35 天前   ❤️ 2
    有一个比较特殊的方式,每个密码后面人工记忆一个固定后缀/前缀。
    比如说 自动保存的密码是:xxxxx
    但是实际的密码是 xxxx-abc 这样。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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