iT邦幫忙

2024 iThome 鐵人賽

DAY 18
1
Security

資安與開源:面對威脅探索系列 第 18

Day 18 -開源軟體 Bitwarden 架設

  • 分享至 

  • xImage
  •  

前言

Bitwarden 提供自架服務,使用者可以在自己的伺服器上運行 Bitwarden
這樣不僅能提高安全性,還能完全掌控個人資料,特別適合企業內部使用或重視隱私的使用者
今天的教學中,我們將介紹如何在 Ubuntu 虛擬機中安裝和設定 Bitwarden

虛擬機環境

以下是我所使用的虛擬機環境設定,供大家參考

  • 作業系統: Ubuntu 22.04
  • 記憶體: 至少 4GB RAM
  • 處理器:至少雙核 CPU
  • 容器平台: Docker、Docker-compose

安裝 Bitwarden 前置作業

在安裝 Bitwarden 時,請勿使用 root 安裝 Bitwarden,否則安裝過程中可能會遇到許多權限問題,以下所有操作都將在 /opt/bitwarden 目錄下進行

  1. 安裝 Docker 和 Docker Compose
    在 Ubuntu 上執行以下命令來安裝 Docker 和 Docker Compose:
# 更新系統
sudo apt-get update
# 升級所有已安裝到最新版本
sudo apt-get upgrade
# 設定時區為臺灣(Asia/Taipei)
sudo timedatectl set-timezone Asia/Taipei
# 安裝 Docker 
sudo apt-get install -y docker.io
# 安裝 Docker Compose 
sudo apt-get install -y docker-compose

安裝完成後,確認 Docker 服務正在運行:

# 啟動 Docker 服務
sudo systemctl start docker
# 設定 Docker 服務開機自動啟動
sudo systemctl enable docker
  1. 建立使用者和目錄
    在安裝 Bitwarden 前,請建立新的使用者並設定相關目錄的權限,以避免安裝過程中出現權限問題
  • 建立新使用者並設定密碼
sudo adduser <user>
sudo passwd <password>
  • 建立 Docker 群組並將使用者加入該群組
sudo groupadd docker
sudo usermod -aG docker <user>
  • 建立 Bitwarden 目錄並設定權限
sudo mkdir /opt/bitwarden
sudo chmod -R 700 /opt/bitwarden
sudo chown -R <user>:<user> /opt/bitwarden
  • 確認目錄權限是否正確
ls -ld /opt/bitwarden

image

  • 重新啟動群組變更
    newgrp docker
  • 檢查群組成員
    getent group docker
    image
  • 確認Docker服務是否正常啟動
    sudo systemctl status docker
    image
  • 確認使用者是否可以使用Docker指令
    docker ps
    image
  1. 安裝 Bitwarden步驟
    以下是 Bitwarden 的安裝與設定流程:
  • 進入 Bitwarden 目錄
    cd /opt/bitwarden
  • 下載並設定 Bitwarden 安裝腳本
    curl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux" && chmod 700 bitwarden.sh
  • 執行安裝腳本
    ./bitwarden.sh install

以下說明 bitwarden.sh 檔案內容
1. 顯示Bitwarden 圖示與版權資訊
image
2. 檢查是否是 root 來執行檔案
會檢查是否以 root 使用者執行,如果"是"會顯示警告,因為建議以非 root 使用者來進行安裝,以避免權限問題
image

  1. 安裝設定過程
    執行安裝腳本後,系統進行一系列設定:
    image
  • 輸入 Bitwarden 網域名稱
    Enter the domain name for your Bitwarden instance (ex. bitwarden.example.com):
  • 輸入資料庫名稱:
    Enter the database name for your Bitwarden instance (ex. vault):
  • 輸入安裝 ID 和密鑰:
    Enter your installation id (get at https://bitwarden.com/host):
    Enter your installation key:
  • 點選Request Hosting Installation Id & Key取得 Installation ID 和 Installation Key 並貼入
    image
  • 選擇區域
    Enter your region (US/EU) [US]:
    選擇伺服器所在區域 US 或 EU
  • SSL 設定:
    Do you have a SSL certificate to use? (y/N):
    1. 如果已準備好 SSL 證書,可選擇 y 請將檔案並將其放置在 ./bwdata/ssl/your.domain 目錄中
    2. 若無,可選擇 N 使用SSL 憑證
  • 是否生成自簽名 SSL :
    Do you want to generate a self-signed SSL certificate?
    1. 選擇 Y 讓 Bitwarden 為您 SSL 憑證
    2. 選擇 N 會使用 SSL 證書,並且您將需要在安裝前使用 HTTPS,否則 Bitwarden 應用程式將無法正常運作
  1. 設定環境變數 global.override.env

    1. 編輯 global.override.env文件
    vi /opt/bitwarden/bwdata/env/global.override.env
    
    1. 在文件中找到相應的設定,並替換為你的設定值:
      以下是使用 Google SMTP 的範例配置:
    globalSettings__mail__smtp__host=smtp.gmail.com
    globalSettings__mail__smtp__port=587
    globalSettings__mail__smtp__ssl=false # 使用 TLS 而非 SSL
    globalSettings__mail__smtp__username=your-email@gmail.com
    globalSettings__mail__smtp__password=your-app-password
    

    提示:記得將 your-email@gmail.com 和 your-app-password 替換為你自己的 Gmail 應用程式專用密碼

    如果你是 Google 設定應用程式密碼,可以參考以下步驟:
    * 前往 應用程式密碼 頁面
    * 輸入應用程式或裝置名稱,然後點選 建立
    * 系統將生成一組 16 位數字的密碼,將這組密碼填入 global.override.env 文件中的 globalSettings__mail__smtp__password 欄位
    image

  2. 執行 Bitwarden
    ./bitwarden.sh start

  3. 確認Docker是否有正常運行服務
    docker ps
    image

  4. 確認服務是否運作正常
    在瀏覽器中輸入您設定的網域(例如 https://localhost)以確認 Bitwarden 網頁是否可以正常顯示
    image

錯誤排除

1. 目錄權限錯誤:
若目錄權限設定不正確,可能會導致權限不足的錯誤訊息
解決方式:
確認使用者是否正確加入 Docker 群組,並擁有相應的目錄權限
image

2. 使用 root 安裝的警告:
若以 root 身份進行安裝,可能會出現一系列警告
解決方法:
退出 root,改用非 root 使用者進行安裝
image

結語

今天介紹了如何在 Ubuntu 虛擬機中安裝與設定 Bitwarden,並提供了常見錯誤的排除方法
Bitwarden 讓你在自架環境中完全掌控個人資料
在下一篇文章中,我們將介紹 Bitwarden 的使用技巧,敬請期待!

參考資料


上一篇
Day 17 - 開源軟體 - Bitwarden 密碼管理介紹
下一篇
Day19 - 開源軟體 -Bitwarden 功能介紹
系列文
資安與開源:面對威脅探索30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言