$30 off During Our Annual Pro Sale. View Details »

Vaultwarden: Build Your Private Password Fortress

Vaultwarden: Build Your Private Password Fortress

# Vaultwarden:打造你的私有密碼堡壘

在強調資訊安全的今日,許多團隊面臨著密碼管理的挑戰。Vaultwarden 是一個輕量級的非官方 Bitwarden server,我們除了可自建 (self-hosting) 密碼管理系統外,還使用官方各種 client (Desktop / Mobile / Web Browser Extensions) 來簡化各種操作。

本次將帶大家了解 Vaultwarden,並分享自己的實戰經驗。

* 活動網址:https://devops.kktix.cc/events/meetup-63

#Vaultwarden #Intro #DevOpsTaiwan #Security

Chu-Siang Lai

October 30, 2024
Tweet

More Decks by Chu-Siang Lai

Other Decks in Technology

Transcript

  1. ______________________________ < Vaultwarden:打造你的私有密碼堡壘 > ------------------------------ \ \ [ chusiang@DevOpsTaiwan ~

    ] $ cat .profile # Author: 凍仁翔 / [email protected] # Blog: https://note.drx.tw # Modified: 2024-10-30 =*. -@# =*. .%#- -@@@**@@@%+%@@% .+%+ =-. =@@@@@@@@@@%*#@@@@@@@@@@@ :=- .@@@@@@@@@@@@@@@ *@@@@@@@@@@@@@@* :#*==@@@@@@@%*+-::*@#+*@#::-=*%@@@@@@@%=+** .@@@@@@@@@+ .+#*: .#@@@@@@@@@* ++++@@@@@@@@@@. :@@@@@@@@@@#+++: +@@@@@@@@@@@@@% %@@@@@@@@@@@@@@. .:@@@@@@@@@@@@@@+ *@@@@@@@@@@@@@@*:. +@@@@@@@@*@@@@@@@@@- -@@@@@@@@@#*@@@@@@@@. =@@@%*#@##@@@@@@@@@. .@@@@@@@@@@=@@#%@@@#. =+#@@@ *@*%@@@@@@@@% #@@@@@@@@@+@@ *@@@*=: .*@@@@@%*#@%=:@@@@@@@@@+ =@@@@@@@@@+:%@%+*@@@@@%= :@@@@@*-. =@@@@@@@@@: .@@@@@@@@@# :+%@@@@# =%@@@@@@. #@@@@@@@@% #@@@@@@@@@. +@@@@@@*. :+@@@@@@. %@@@@@@@@* +@@@@@@@@@- =@@@@@#= -@@@@@= :@@@@@@@@@= :@@@@@@@@@+ +@@@@#. :%@@@@@@@ =@@@@@@@@@: %@@@@@@@@# @@@@@@@* .-+@@@@@# *@@@@@@@@% *@@@@@@@@@. *@@@@#=: *@@@@@@+ %@@@@@@@@# -@@@@@@@@@- +@@@@@@- +%@@@@@@@+ :@@@@@@@@@+@@@@@@@@@+ *@@@@@@@%. .@@@@@@* =@@@@@@@@@@@@@@@@@# :%@@@@@+ #@@@@@@@@*#%@@+ #@@@@@@@@@@@@@@@@.:%@%#*#@@@@@@@@- :---@@@@@@-.:%@. %@@@@@@@@@@@@@@- #@=.:#@@@@@*---. :@@@@@@-.-%@*.:@@@@@@@@@@@@@+ -@@=.:#@@@@@# .=-:-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:-== .@@@#@@@@@@@@@@@@@@@@@@@@@@@@@#%@@* :. -@@@%@@@@@@@@@@@@@@@%@@@@ :. *+. .@@@==@@@#-*@@* -*-
  2. DevOps Taiwan Meetup #63 - Vaultwarden:打造你的私有密碼堡壘 📆 2024/10/30 (周三) 20:00

    (+0800) ~ 21:00 (+0800) 🛜 線上活動 🧑💻 71 / 100 🏢 DevOps Taiwan 社群
  3. 1. Vaultwarden 是什麼? 2. Up and Running 3. 功能介紹 4.

    火 力 展 示 Outline 4 Feature What Up & Run Play
  4. 身 為 Ops team 成員, 我想要 自 架服務來管理、同步最新的密碼, 這樣就可以即時更新共 用

    密碼給 Dev team 伙伴, 並取代四散各地的 KeePass 密碼庫。 契機 5
  5. 中長期 目 標 短期 目 標 Kill KeePass 即時同步共 用

    密碼 更新共 用 密碼 強化 ACL 管控 整合 Ansible 改變 文 化 6 root /// 123456
  6. • Vaultwarden = vault + warden . • Google Translate:避難所守望者。

    • Me:保險庫管理者。 • GitHub:Uno ff i cial Bitwarden compatible server written in Rust. [AGPL v3.0] • Bitwarden:The best password manager for securely storing, managing, and sharing sensitive online data such as passwords,passkeys, credit cards, and more. [AGPL v3.0] aultwarden 是什麼? 7 What
  7. Docker docker-compose.yml services: vaultwarden: image: vaultwarden/server restart: unless-stopped environment: #

    ROCKET_TLS: ‘{certs=“/ssl/lab_drx_tw.crt”,key=“/ssl/lab_drx_tw.key”}’ DOMAIN: http://vaultwarden.lab.drx.tw volumes: - ./data/:/data/ # - ./ssl/:/ssl/ ports: - 443:80 [ chusiang@ubuntu-2404 /opt/vaultwarden ] $ sudo aptitude install docker.io docker-compose What Up & Run
  8. Process [ chusiang@ubuntu-2404 /opt/vaultwarden ] $ sudo docker compose ps

    NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS devopstw—vaultwarden-1 vaultwarden/server "/start.sh" vaultwarden 39 hours ago Up 8 hours (healthy) 0.0.0.0:80->80/tcp, 3012/tcp 10 [ chusiang@ubuntu-2404 /opt/vaultwarden ] $ sudo docker compose up -d Creating network "vaultwarden_default" with the default driver Creating vaultwarden_vaultwarden_1 ... done Up & Run Up
  9. 密 文 (Ciphertext) 11 Up & Run 檔案類型:SQLite [ chusiang@ubuntu-2404

    /opt/vaultwarden/data ] $ sudo file db.sqlite3 db.sqlite3: SQLite 3.x database, last written using SQLite version 3044000, writer version 2, read version 2, file counter 34, database pages 149, 1st free page 141, free pages 4, cookie 0x4e, schema 4, UTF-8, version-valid-for 34 [ chusiang@ubuntu-2404 /opt/vaultwarden/data ] $ sudo tail db.sqlite3 ... UUf7b62acb-0c67-496d-910a-06444dd49646b5ebfe52-03a9-488f-8857-978b218cbc7d UU4383659e-42aa-46b1-9991-4de98e92dd6eb5ebfe52-03a9-488f-8857-978b218cbc7d
  10. Vaults (1/4) • Item: Main data. • Folder: Grouping items

    for private user. • Collection: Grouping items for Organizations. 14 Feature
  11. Reports 1. Exposed passwords 2. Reuse passwords 3. Weak passwords

    4. Unsecure websites 5. Inactive two-step login 6. Data breach Feature
  12. _________ < 火 力 展 示 > --------- \ \

    =*. -@# =*. .%#- -@@@**@@@%+%@@% .+%+ =-. =@@@@@@@@@@%*#@@@@@@@@@@@ :=- .@@@@@@@@@@@@@@@ *@@@@@@@@@@@@@@* :#*==@@@@@@@%*+-::*@#+*@#::-=*%@@@@@@@%=+** .@@@@@@@@@+ .+#*: .#@@@@@@@@@* ++++@@@@@@@@@@. :@@@@@@@@@@#+++: +@@@@@@@@@@@@@% %@@@@@@@@@@@@@@. .:@@@@@@@@@@@@@@+ *@@@@@@@@@@@@@@*:. +@@@@@@@@*@@@@@@@@@- -@@@@@@@@@#*@@@@@@@@. =@@@%*#@##@@@@@@@@@. .@@@@@@@@@@=@@#%@@@#. =+#@@@ *@*%@@@@@@@@% #@@@@@@@@@+@@ *@@@*=: .*@@@@@%*#@%=:@@@@@@@@@+ =@@@@@@@@@+:%@%+*@@@@@%= :@@@@@*-. =@@@@@@@@@: .@@@@@@@@@# :+%@@@@# =%@@@@@@. #@@@@@@@@% #@@@@@@@@@. +@@@@@@*. :+@@@@@@. %@@@@@@@@* +@@@@@@@@@- =@@@@@#= -@@@@@= :@@@@@@@@@= :@@@@@@@@@+ +@@@@#. :%@@@@@@@ =@@@@@@@@@: %@@@@@@@@# @@@@@@@* .-+@@@@@# *@@@@@@@@% *@@@@@@@@@. *@@@@#=: *@@@@@@+ %@@@@@@@@# -@@@@@@@@@- +@@@@@@- +%@@@@@@@+ :@@@@@@@@@+@@@@@@@@@+ *@@@@@@@%. .@@@@@@* =@@@@@@@@@@@@@@@@@# :%@@@@@+ #@@@@@@@@*#%@@+ #@@@@@@@@@@@@@@@@.:%@%#*#@@@@@@@@- :---@@@@@@-.:%@. %@@@@@@@@@@@@@@- #@=.:#@@@@@*---. :@@@@@@-.-%@*.:@@@@@@@@@@@@@+ -@@=.:#@@@@@# .=-:-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:-== .@@@#@@@@@@@@@@@@@@@@@@@@@@@@@#%@@* :. -@@@%@@@@@@@@@@@@@@@%@@@@ :. *+. .@@@==@@@#-*@@* -*-
  13. • Desktop APP: GNU/Linux, Windows, macOS.
 - https://bitwarden.com/download/#downloads-desktop • Browser

    extension: Chrome, Safari, Firefox, Vivaldi, Opera, Brave, Microsoft Edge, Tor Browser, DuckDuckGo for macOS.
 - https://bitwarden.com/download/#downloads-web-browser • Mobile APP: Android, iOS.
 - https://bitwarden.com/download/#downloads-mobile • CLI: Windows, macOS, GNU/Linux, npm, Chocolatey, Snapcraft.
 - https://bitwarden.com/download/#downloads-command-line-interface Bitwarden client 支 援 31 Option
  14. • 需有 DNS 和 HTTPS 才有完整使 用 體驗 (Client &

    MFA support)。 • 攔截域名。 域名 & TLS 32 [ chusiang@ubuntu-2204 ~ ] $ sudo vim /etc/hosts .. 127.0.0.1 vaultwarden.lab.drx.tw Option ▌ [Windows] C:\Windows\System32\drivers\etc\hosts
  15. [ chusiang@ubuntu-2404 /opt/vaultwarden ] $ echo -n "devops" | argon2

    "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4 $argon2id$v=19$m=65540,t=3,p=4$WXAwNFBYSmppM3dhZlJnZzdMOTgxUGt5ai9USFNVKzBzT29NZWRkcTlrND0$F10d RpHKOEzfTMvcTJkmVI/CM5RS/fi8eprlZMDLlbY 啟 用 admin 頁 面 (1/3) 33 Option • 用 argon2 × openssl 產 生 密 文 密碼。 [ chusiang@ubuntu-2404 /opt/vaultwarden ] $ echo -n "devops" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4 | sed ’s/\$/\$\$/g' $$argon2id$$v=19$$m=65540,t=3,p=4$$WXAwNFBYSmppM3dhZlJnZzdMOTgxUGt5ai9USFNVKzBzT29NZWRkcTlrND0$ $F10dRpHKOEzfTMvcTJkmVI/CM5RS/fi8eprlZMDLlbY • 當 ADMIN_TOKEN 前,需把 $ 字元取代成 $$。
  16. services: vaultwarden: image: vaultwarden/server restart: unless-stopped environment: DOMAIN: http://vaultwarden.lab.drx.tw ADMIN_TOKEN:

    $$argon2id$$v=19$$m=65540,t=3,p=4$ $WXAwNFBYSmppM3dhZlJnZzdMOTgxUGt5ai9USFNVKzBzT29NZWRkcTlrND0$ $F10dRpHKOEzfTMvcTJkmVI/CM5RS/fi8eprlZMDLlbY volumes: - ./data/:/data/ ports: - 443:80 啟 用 admin 頁 面 (2/3) Option
  17. • DevOps Taiwan Meetup #63 - Vaultwarden:打造你的私有密碼堡壘
 - https://devops.kktix.cc/events/meetup-63 •

    Bitwarden o ffi cial website - https://bitwarden.com • dani-garcia / vaultwarden | GitHub - https://github.com/dani-garcia/vaultwarden • Enabling admin page · dani-garcia/vaultwarden Wiki | GitHub
 - https://github.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page • Vaultwarden Wiki 中 文 版 - https://rs.ppgg.in/home • 使 用 Bitwarden 與 自 架後端 Vaultwarden 來管理密碼 | omegaatt
 - https://www.omegaatt.com/blogs/develop/2023/bitwarden_with_self_hosted_password_backend • 處理個 人 資料須知 | InfoSec 資訊安全網
 - https://www.infosec.gov.hk/tc/best-practices/person/handling-personal-information • OTP application overview | Yubico
 - https://docs.yubico.com/yesdk/users-manual/application-otp/otp-overview.html Reference 38 Option
  18. [ chusiang@DevOpsTaiwan ~ ] $ cat .profile # Author: 凍仁翔

    / [email protected] # Blog: https://note.drx.tw # Modified: 2024-10-30 _________ < THE END > --------- \ \ \ =*. -@# =*. .%#- -@@@**@@@%+%@@% .+%+ =-. =@@@@@@@@@@%*#@@@@@@@@@@@ :=- .@@@@@@@@@@@@@@@ *@@@@@@@@@@@@@@* :#*==@@@@@@@%*+-::*@#+*@#::-=*%@@@@@@@%=+** .@@@@@@@@@+ .+#*: .#@@@@@@@@@* ++++@@@@@@@@@@. :@@@@@@@@@@#+++: +@@@@@@@@@@@@@% %@@@@@@@@@@@@@@. .:@@@@@@@@@@@@@@+ *@@@@@@@@@@@@@@*:. +@@@@@@@@*@@@@@@@@@- -@@@@@@@@@#*@@@@@@@@. =@@@%*#@##@@@@@@@@@. .@@@@@@@@@@=@@#%@@@#. =+#@@@ *@*%@@@@@@@@% #@@@@@@@@@+@@ *@@@*=: .*@@@@@%*#@%=:@@@@@@@@@+ =@@@@@@@@@+:%@%+*@@@@@%= :@@@@@*-. =@@@@@@@@@: .@@@@@@@@@# :+%@@@@# =%@@@@@@. #@@@@@@@@% #@@@@@@@@@. +@@@@@@*. :+@@@@@@. %@@@@@@@@* +@@@@@@@@@- =@@@@@#= -@@@@@= :@@@@@@@@@= :@@@@@@@@@+ +@@@@#. :%@@@@@@@ =@@@@@@@@@: %@@@@@@@@# @@@@@@@* .-+@@@@@# *@@@@@@@@% *@@@@@@@@@. *@@@@#=: *@@@@@@+ %@@@@@@@@# -@@@@@@@@@- +@@@@@@- +%@@@@@@@+ :@@@@@@@@@+@@@@@@@@@+ *@@@@@@@%. .@@@@@@* =@@@@@@@@@@@@@@@@@# :%@@@@@+ #@@@@@@@@*#%@@+ #@@@@@@@@@@@@@@@@.:%@%#*#@@@@@@@@- :---@@@@@@-.:%@. %@@@@@@@@@@@@@@- #@=.:#@@@@@*---. :@@@@@@-.-%@*.:@@@@@@@@@@@@@+ -@@=.:#@@@@@# .=-:-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:-== .@@@#@@@@@@@@@@@@@@@@@@@@@@@@@#%@@* :. -@@@%@@@@@@@@@@@@@@@%@@@@ :. *+. .@@@==@@@#-*@@* -*-