• 使用Bitwarden搭建属于自己的私人密码库


    1 前言

    作为一个计算机爱好者,选择统一的密码还是每个软件一个单独的密码,永远是个困境;
    一个人要记住太多的密码是不太现实的,保持密码以书面形式又是非常不安全的;
    对于数量越来越多的账号密码,一直以来,我都在寻找一个安全、快速、方便的密码长期保存方式;
    从手写笔记到手机备忘录,
    从txt文档到word文档,
    从自己手动备份到onedrive自动同步... 汗.png

    现如今比较流行的方式是使用密码管理工具进行密码的统一管理,这类软件一般拥有多平台客户端、浏览器插件等,密码一般加密保存到本地或者云端;

    密码管理工具很多,有人说最好的密码管理工具是 1Password,但是他实在是卖的太贵了,暂时不考虑;
    再对比各大软件,其实各有特色。有的倾向于将密码库储存到云端,有的可将密码库储存到本地进行自己保存,有的开源,有的是私有化,有的还提供私有化部署 太开心.png
    最终我选择使用Bitwarden来搭建私人密码库,比较全的客户端覆盖,提供开源免费版,还提供私有化部署,满足了我对密码库的所有要求;

    2 Bitwarden Server

    Bitwarden 官方提供私有化部署,有一键部署脚本和手动部署两种方式,不过官方由于使用的是 MSSQL 数据库,整体部署下来对机器配置要求较高

    官方推荐服务器配置

    2020-11-30T12:45:05.png

    只部署一个私人密码库,使用这么重量级的应用是不符合我的习惯的(钱包顶不住) 捂嘴笑.png
    经过我的一番查找,终于在Github发现了有dalao使用 Ruby 开发了一个兼容的 Bitwarden 服务器:bitwarden_rs,并且提供了 Docker 镜像部署;
    Github传送门:https://github.com/dani-garcia/bitwarden_rs
    该服务器端系统配置要求很低,Docker镜像体积也很小,部署非常方便,使用 SQLite 服务器来存储数据,对于个人来说已经足够;
    最终就选择使用它来作为我的密码库的服务器端。

    3 准备

    首先需要你有一个域名,一台安装了Docker环境的服务器;
    可参考Docker官方文档:https://docs.docker.com/get-docker/ 来进行Docker的安装
    为方便部署和更新,本文使用 docker-compose 来管理服务
    在linux下可使用如下命令进行 docker-compose 的安装和更新

    sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose

    如果要进行更新,替换1.27.4为最新的版本号即可。
    查看最新版本:https://github.com/docker/compose/releases

    4 安装Bitwarden

    4.1 创建Bitwarden数据存放目录

    mkdir -p /data/bitwarden && cd /data/bitwarden

    4.2 创建docker-compose配置文件

    cat >> docker-compose.yml <<EOF
    version: '3'
    
    services:
      # 服务名称
      bitwarden:
        # 指定使用 Docker Hub 中的最新镜像
        image: bitwardenrs/server:latest
        # 容器名称
        container_name: bitwarden
        # 开机自动启动
        restart: always
        # 指定容器内的 /data 目录挂载到宿主机的当前目录下的 /data/bitwarden/data 目录,这样你可以在宿主机上执行数据库的备份操作
        volumes:
          - /data/docker/bitwarden/data:/data
        # bitwarden配置
        environment:
          # 开启网页访问
          WEB_VAULT_ENABLED: 'true'
          # 开启新用户注册,我们注册后关闭即可
          SIGNUPS_ALLOWED: 'true'
          # 开启长连接
          WEBSOCKET_ENABLED: 'true'
          # 日志文件
          LOG_FILE: /data/bitwarden.log
        # 将容器内的80/3012端口映射到宿主机的7006/7007端口;其中80端口为 HTTP 服务,3012 端口是 websockets 服务
        ports:
          - 7006:80
          - 7007:3012
    EOF

    4.3 Nginx反向代理配置

    #bitwarden
    location / {
      proxy_pass http://127.0.0.1:7006;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
    }
    location /notifications/hub {
      proxy_pass http://127.0.0.1:7007;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }
    location /notifications/hub/negotiate {
      proxy_pass http://127.0.0.1:7006;
    }

    以上配置为最基础的配置,你还可以加入 HSTS / 压缩 / XSS 防护等配置;
    详细配置请参考官方文档:https://github.com/dani-garcia/bitwarden_rs/wiki/Proxy-examples
    现在已经是 2020 年,请为域名配置 HTTPS 证书,并将 HTTP 流量阻挡或重定向到 HTTPS,以保障数据传输的安全。

    4.4 启动docker服务

    docker-compose up -d

    4.5 内存占用

    可以看到,该服务器端仅仅占用10M内存
    2020-11-30T13:07:43.png

    5 用户注册和数据导入

    启动完成后,我们就可以通过我们配置的域名来访问网页版了
    2020-11-30T13:14:30.png

    点击创建账号进行账号的注册
    2020-11-30T13:15:29.png

    注册登录后可在上方的工具中进行数据导入,支持多种格式的数据导入
    2020-11-30T13:16:20.png

    6 关闭新用户注册

    现在你的bitwarden服务器允许任何人访问和注册,如果你只需要自己使用,可以关闭用户注册功能。
    调整docker-compose配置文件

    SIGNUPS_ALLOWED: 'false'

    改动配置后需要运行以下命令来删除并重新创建容器以使配置生效,无需担心你的数据,我们的数据均保存在我们第4.1中创建的目录中

    docker-compose down && docker-compose up -d

    这样就关闭了用户注册功能,并禁用了 web 的访问。密码数据我们还是可以在客户端中进行编辑的。

    7 登录客户端

    服务器端安装完毕后,我们需要登录到客户端来进行密码的管理和自动填充,Bitwarden的客户端都大同小异,这里以Chrome扩展为例:
    首先我们在登录页面点击小齿轮
    2020-11-30T13:22:28.png

    然后我们填入我们自己的Bitwarden服务器地址
    2020-11-30T13:23:15.png

    之后使用我们刚刚注册的账号进行登录即可,其他客户端的配置和这里是一样的。

    8 备份

    我们在使用过程中的所有数据都保存在我们创建的目录:/data/bitwarden 中
    为保证数据安全我们最好定期将该目录的数据进行备份
    你可以自己手动备份也可以使用我们的自动备份脚本:WebServerAutoBackup
    Github: https://github.com/ehaut/WebServerAutoBackup
    配置文件中填写备份目录为:/data/bitwarden
    然后在crontab定时任务中添加定时任务,即可每日进行备份到你指定的地方。

    #每日凌晨 2:15 备份bitwarden
    15 2 * * * cd /root/WebServerAutoBackup && ./backup.sh config-bitwarden.ini > /data/backup/log/bitwarden-cron.log  2>&1 & 1

    9 更新

    由于使用的是非官方的服务器端,所以作者们会经常同步更新到官方的更新中,以保证与客户端的兼容性
    更新也是直接运行如下命令即可

    cd /data/bitwarden
    //停止运行的bitwarden容器
    docker-compose stop
    //拉取最新镜像
    docker-compose pull
    //重新构建并启动
    docker-compose up -d --build

    10 安全提醒

    对于使用任何密码管理工具的人来说,主密码的重要性不言而喻。一旦主密码泄漏,相当于将所有帐号密码拱手相让;一旦主密码丢失,所有数据也都化作随机噪音,变得一文不值。所以,请时常审视、改进你的安全策略,定期对帐号做安全审查,不定期修改并牢记主密码。

  • 相关阅读:
    碎碎念五九
    从边际成本角度思考程序员职业
    质量看板开发实践(五):给echarts图例添加数值
    质量看板开发实践(六):添加一个jira数据列表,并可点击跳转至jira详情
    质量看板开发实践(七):使用旭日图汇总每个人的故事点
    JIT JustInTime(即时编译)
    cocos中常用的一些第三方库(astar、proto、jszip、decimal、crypto、socketio、pako)
    【MySql】远程访问问题
    sql server rml,sql server RML Utilities
    (1.5)mongodb备份恢复,mongodb备份还原,mongodb迁移
  • 原文地址:https://www.cnblogs.com/kuku0223/p/14631281.html
Copyright © 2020-2023  润新知