在Ubuntu系統底下建立Bitwarden

目錄

前言與起源

網路上相關文章非常多,但寫錯寫不清楚的占比大約90%
這就是為什麼我寫這篇文章來教學Bitwarden。

還有,樂團成員總是問來問去某個服務的帳號密碼,但在通訊軟體交換密碼又是一件危險的事情
成員本身也沒有使用密碼管理器的習慣,所以乾脆在原本的Server上建立一個管理器服務
如此一來主管理員控制整個密碼資料存取,成員各自也可以建立自己的密碼資訊。

什麼是Bitwarden

Bitwarden

一款密碼管理工具,顧名思義就是一個管理你所有密碼的平台

類似的平台有很多,例如:1passwordlastpass

為什麼需要密碼管理器

因為根本不該使用瀏覽器的密碼管理功能

想像你有三棟房子在台北、台中、高雄,三個家門的鑰匙會用同一把嗎?
這個答案非常肯定是「不會」,因為危險。

所以你的臉書、IG、信箱都不算資產囉?
既然三棟房子使用不同的鑰匙,為什麼三個不同平台的密碼要用同一組?
一組密碼打天下的的優點就是「便利」,但是便利的背後隱藏的卻是嚴重的資安問題
有的人會說:我只是個賣茶葉的,又不是工程師,幹嘛學這個?
「資訊安全,人人有責」、「預防勝於治療」希望各位都理解。

如果使用的網路平台有一百個,不就要記一百組不同的密碼?
所以你現在看到這篇文章,教你怎麼使用密碼管理器與搭建。

需求

更新一下

  • 更新軟體資訊列表
apt-get update
  • 更新軟體
apt-get upgrade

安裝Nginx

apt-get install nginx -y

安裝Docker

  • 安裝
apt install docker.io
  • 啟動Dcoekr
sudo systemctl start docker
  • 設定伺服器重啟後,自動運行Docker
sudo systemctl enable docker

安裝Docker-compose

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

安裝Bitwarden

  • 建立儲存資料夾
mkdir -p /data/bitwarden && cd /data/bitwarden
  • 建立docker-compose設定文件
    • 建議複製到筆記本修改好後,再貼到伺服器的終端機內執行
cat > docker-compose.yml <<EOF
version: '3'

services:
  bitwarden:
    image: bitwardenrs/server:latest
    container_name: bitwarden
    restart: always
    volumes:
      - /data/docker/bitwarden/data:/data
    environment:
      WEB_VAULT_ENABLED: 'true'
      SIGNUPS_ALLOWED: 'true'
      WEBSOCKET_ENABLED: 'true'
      LOG_FILE: /data/bitwarden.log
      # 郵件SMTP這段不是必須,爽用再用
      SMTP_HOST: 'mail.gandi.net' # 郵件伺服器
      SMTP_FROM: '[email protected]' # 寄件者
      SMTP_PORT: '465'
      SMTP_SSL: 'true'
      SMTP_USERNAME: '[email protected]'
      SMTP_PASSWORD: 'password'
      SMTP_EXPLICIT_TLS: 'true'
    ports:
      - 7006:80
      - 7007:3012
EOF

設定Nginx反向代理

  • 移動到nginx設定檔案的位置,並新增設定檔案
cd /etc/nginx/sites-available && vi bitwarden.conf
  • 建議先使用筆記本編輯好下面的內容後,在貼到bitwarden.conf中

upstream bitwardenrs-default { server 127.0.0.1:7006; }
upstream bitwardenrs-ws { server 127.0.0.1:7007; }

# Redirect HTTP to HTTPS
server {
    listen 80;
    server_name pass.league2eb.me; # 改成你自己的網域
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name pass.league2eb.me;

    #SSL
    # 這裡的SSL憑證請改成自己的路徑
    ssl_certificate /etc/nginx/ssl/league2eb.me/fullchain.cer;
    # 這裡的SSL憑證請改成自己的路徑
    ssl_certificate_key /etc/nginx/ssl/league2eb.me/keyfile.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    add_header Content-Security-Policy upgrade-insecure-requests;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options nosniff;
    add_header Referrer-Policy "no-referrer-when-downgrade";

    #Location
    location / {
      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;

      proxy_pass http://bitwardenrs-default;
    }

    location /notifications/hub/negotiate {
      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;

      proxy_pass http://bitwardenrs-default;
    }

    location /notifications/hub {
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $http_connection;
      proxy_set_header X-Real-IP $remote_addr;

      proxy_pass http://bitwardenrs-ws;
    }
}

連結設定檔案符號表

  • 連結檔案並刷新nginx服務
cd /etc/nginx/sites-enabled && ln -s ../sites-available/bitwarden.conf . && systemctl reload nginx

正式啟用Bitwarden

  • 移動到bitwarden資料夾
cd /data/bitwarden
  • 啟動
docker-compose up -d
  • 建立成功

使用、建立帳號

  • 訪問自己的網域名稱將會看到這個畫面
  • 選擇「建立帳戶」

  • 填寫資料送出

禁止建立帳號

當家人、團隊組織成員或者自己建立好帳號後,必須關閉該註冊功能
否則就是開大門。

  • 回到伺服器內終端機操作移動到bitwarden資料夾
cd /data/bitwarden
  • 編輯docker-compose.yml
vi docker-compose.yml
  • 將SIGNUPS_ALLOWED改為false
  • 如果不打算用網頁版本管理,WEB_VAULT_ENABLED改為false

重啟容器

docker-compose down && docker-compose up -d
  • 成功

手機端使用(iOS)



  • 應用首頁後,使用方才網頁建立的帳號密碼登入

後記

整理一下「我覺得」密碼外洩、被盜用、重複登入警告的原因

  • 將密碼儲存在Google瀏覽器或者Safari瀏覽器。
    • 就是為了便利所以勾選「記住我」導致
  • 同一組密碼使用所有平台。
  • 使用通訊軟體直接交換密碼,如果你硬要,那我推薦 Telegram

警告

  • 如果要自己架設,需要有相對應管理Server的能力或者阻擋被攻擊的能力。
  • 只要密碼儲存在「網路」就是不可能永遠安全。
  • 這則教學文章建立在你沒有能力買NAS的前提下,如果有能力還是建議買NAS來架設Bitwarden。

好文推薦 !

在群暉 Docker 搭建免費開源密碼管理器 Bitwarden

發佈留言