Slide 1

Slide 1 text

______________________________ < Vaultwarden:打造你的私有密碼堡壘 > ------------------------------ \ \ [ chusiang@DevOpsTaiwan ~ ] $ cat .profile # Author: 凍仁翔 / chusiang@drx.tw # Blog: https://note.drx.tw # Modified: 2024-10-30 =*. -@# =*. .%#- -@@@**@@@%+%@@% .+%+ =-. =@@@@@@@@@@%*#@@@@@@@@@@@ :=- .@@@@@@@@@@@@@@@ *@@@@@@@@@@@@@@* :#*==@@@@@@@%*+-::*@#+*@#::-=*%@@@@@@@%=+** .@@@@@@@@@+ .+#*: .#@@@@@@@@@* ++++@@@@@@@@@@. :@@@@@@@@@@#+++: +@@@@@@@@@@@@@% %@@@@@@@@@@@@@@. .:@@@@@@@@@@@@@@+ *@@@@@@@@@@@@@@*:. +@@@@@@@@*@@@@@@@@@- -@@@@@@@@@#*@@@@@@@@. =@@@%*#@##@@@@@@@@@. .@@@@@@@@@@=@@#%@@@#. =+#@@@ *@*%@@@@@@@@% #@@@@@@@@@+@@ *@@@*=: .*@@@@@%*#@%=:@@@@@@@@@+ =@@@@@@@@@+:%@%+*@@@@@%= :@@@@@*-. =@@@@@@@@@: .@@@@@@@@@# :+%@@@@# =%@@@@@@. #@@@@@@@@% #@@@@@@@@@. +@@@@@@*. :+@@@@@@. %@@@@@@@@* +@@@@@@@@@- =@@@@@#= -@@@@@= :@@@@@@@@@= :@@@@@@@@@+ +@@@@#. :%@@@@@@@ =@@@@@@@@@: %@@@@@@@@# @@@@@@@* .-+@@@@@# *@@@@@@@@% *@@@@@@@@@. *@@@@#=: *@@@@@@+ %@@@@@@@@# -@@@@@@@@@- +@@@@@@- +%@@@@@@@+ :@@@@@@@@@+@@@@@@@@@+ *@@@@@@@%. .@@@@@@* =@@@@@@@@@@@@@@@@@# :%@@@@@+ #@@@@@@@@*#%@@+ #@@@@@@@@@@@@@@@@.:%@%#*#@@@@@@@@- :---@@@@@@-.:%@. %@@@@@@@@@@@@@@- #@=.:#@@@@@*---. :@@@@@@-.-%@*.:@@@@@@@@@@@@@+ -@@=.:#@@@@@# .=-:-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:-== .@@@#@@@@@@@@@@@@@@@@@@@@@@@@@#%@@* :. -@@@%@@@@@@@@@@@@@@@%@@@@ :. *+. .@@@==@@@#-*@@* -*-

Slide 2

Slide 2 text

DevOps Taiwan Meetup #63 - Vaultwarden:打造你的私有密碼堡壘 📆 2024/10/30 (周三) 20:00 (+0800) ~ 21:00 (+0800) 🛜 線上活動 🧑💻 71 / 100 🏢 DevOps Taiwan 社群

Slide 3

Slide 3 text

3 Sr. SoftwaRe Engineer
 DevOps Taiwan 志 工 
 鋼彈模型製作家 (New) 凍仁.翔 @chusiang_lai

Slide 4

Slide 4 text

1. Vaultwarden 是什麼? 2. Up and Running 3. 功能介紹 4. 火 力 展 示 Outline 4 Feature What Up & Run Play

Slide 5

Slide 5 text

身 為 Ops team 成員, 我想要 自 架服務來管理、同步最新的密碼, 這樣就可以即時更新共 用 密碼給 Dev team 伙伴, 並取代四散各地的 KeePass 密碼庫。 契機 5

Slide 6

Slide 6 text

中長期 目 標 短期 目 標 Kill KeePass 即時同步共 用 密碼 更新共 用 密碼 強化 ACL 管控 整合 Ansible 改變 文 化 6 root /// 123456

Slide 7

Slide 7 text

• 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

Slide 8

Slide 8 text

Up and Running ※ 圖片來源:https://unsplash.com/photos/a-room-with-a-large-metal-object-in-the-middle-of-it-yciu-eRvhHQ

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

密 文 (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

Slide 12

Slide 12 text

功能介紹 12 ※ 圖片來源:https://unsplash.com/photos/opened-gray-stainless-steel-drawers-zLtXrNXJpKM

Slide 13

Slide 13 text

功能介紹 Vaults / Send / Tools / Reports / Organizations 13 Feature

Slide 14

Slide 14 text

Vaults (1/4) • Item: Main data. • Folder: Grouping items for private user. • Collection: Grouping items for Organizations. 14 Feature

Slide 15

Slide 15 text

Vaults (2/4) New item. 15 Feature

Slide 16

Slide 16 text

Vaults (3/4) New Folder. 16 Feature

Slide 17

Slide 17 text

Vaults (4/4) New Collection. 17 Feature

Slide 18

Slide 18 text

Send Securely share encrypted information with anyone. 18 Feature

Slide 19

Slide 19 text

Tools (1/3) Generator [Password|Username]. 19 Feature [ chusiang@ubuntu-2404 /opt/vaultwarden ] $ pwgen -N 4 ahqueiB0 ephaX4ah OoN0Waek Yio3MoG1

Slide 20

Slide 20 text

Tools (2/3) Import data. ▍ json, css, xml .. 20 Feature

Slide 21

Slide 21 text

Tools (3/3) Export vault. ▍ .json, .csv, .. 21 Feature

Slide 22

Slide 22 text

Reports 1. Exposed passwords 2. Reuse passwords 3. Weak passwords 4. Unsecure websites 5. Inactive two-step login 6. Data breach Feature

Slide 23

Slide 23 text

Organizations (1/3) Vault. ▌ An item can join multi-collection. 23 Feature

Slide 24

Slide 24 text

Organizations (2/3) Members. 24 Feature

Slide 25

Slide 25 text

Organizations (3/3) Policies. 25 Feature

Slide 26

Slide 26 text

Play 26 ※ 圖片來源:https://unsplash.com/photos/two-people-playing-sony-ps4-game-console-eCktzGjC-iU

Slide 27

Slide 27 text

打開瀏覽器 Go http://localhost , and click “Create account”. 27 Play

Slide 28

Slide 28 text

建立帳號 Email address / Name / Master password ▌ 請保管好 Master password! 28 Play

Slide 29

Slide 29 text

_________ < 火 力 展 示 > --------- \ \ =*. -@# =*. .%#- -@@@**@@@%+%@@% .+%+ =-. =@@@@@@@@@@%*#@@@@@@@@@@@ :=- .@@@@@@@@@@@@@@@ *@@@@@@@@@@@@@@* :#*==@@@@@@@%*+-::*@#+*@#::-=*%@@@@@@@%=+** .@@@@@@@@@+ .+#*: .#@@@@@@@@@* ++++@@@@@@@@@@. :@@@@@@@@@@#+++: +@@@@@@@@@@@@@% %@@@@@@@@@@@@@@. .:@@@@@@@@@@@@@@+ *@@@@@@@@@@@@@@*:. +@@@@@@@@*@@@@@@@@@- -@@@@@@@@@#*@@@@@@@@. =@@@%*#@##@@@@@@@@@. .@@@@@@@@@@=@@#%@@@#. =+#@@@ *@*%@@@@@@@@% #@@@@@@@@@+@@ *@@@*=: .*@@@@@%*#@%=:@@@@@@@@@+ =@@@@@@@@@+:%@%+*@@@@@%= :@@@@@*-. =@@@@@@@@@: .@@@@@@@@@# :+%@@@@# =%@@@@@@. #@@@@@@@@% #@@@@@@@@@. +@@@@@@*. :+@@@@@@. %@@@@@@@@* +@@@@@@@@@- =@@@@@#= -@@@@@= :@@@@@@@@@= :@@@@@@@@@+ +@@@@#. :%@@@@@@@ =@@@@@@@@@: %@@@@@@@@# @@@@@@@* .-+@@@@@# *@@@@@@@@% *@@@@@@@@@. *@@@@#=: *@@@@@@+ %@@@@@@@@# -@@@@@@@@@- +@@@@@@- +%@@@@@@@+ :@@@@@@@@@+@@@@@@@@@+ *@@@@@@@%. .@@@@@@* =@@@@@@@@@@@@@@@@@# :%@@@@@+ #@@@@@@@@*#%@@+ #@@@@@@@@@@@@@@@@.:%@%#*#@@@@@@@@- :---@@@@@@-.:%@. %@@@@@@@@@@@@@@- #@=.:#@@@@@*---. :@@@@@@-.-%@*.:@@@@@@@@@@@@@+ -@@=.:#@@@@@# .=-:-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:-== .@@@#@@@@@@@@@@@@@@@@@@@@@@@@@#%@@* :. -@@@%@@@@@@@@@@@@@@@%@@@@ :. *+. .@@@==@@@#-*@@* -*-

Slide 30

Slide 30 text

30 Q & A

Slide 31

Slide 31 text

• 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

Slide 32

Slide 32 text

• 需有 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

Slide 33

Slide 33 text

[ 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 前,需把 $ 字元取代成 $$。

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

Option ➀ ➁ ➂

Slide 36

Slide 36 text

今天提的 DevOps 是什麼? 36

Slide 37

Slide 37 text

https://t.me/devopstw https://www.facebook.com/groups/DevOpsTaiwan https://devopstw.club DevOps Taiwan 37

Slide 38

Slide 38 text

• 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

Slide 39

Slide 39 text

[ chusiang@DevOpsTaiwan ~ ] $ cat .profile # Author: 凍仁翔 / chusiang@drx.tw # Blog: https://note.drx.tw # Modified: 2024-10-30 _________ < THE END > --------- \ \ \ =*. -@# =*. .%#- -@@@**@@@%+%@@% .+%+ =-. =@@@@@@@@@@%*#@@@@@@@@@@@ :=- .@@@@@@@@@@@@@@@ *@@@@@@@@@@@@@@* :#*==@@@@@@@%*+-::*@#+*@#::-=*%@@@@@@@%=+** .@@@@@@@@@+ .+#*: .#@@@@@@@@@* ++++@@@@@@@@@@. :@@@@@@@@@@#+++: +@@@@@@@@@@@@@% %@@@@@@@@@@@@@@. .:@@@@@@@@@@@@@@+ *@@@@@@@@@@@@@@*:. +@@@@@@@@*@@@@@@@@@- -@@@@@@@@@#*@@@@@@@@. =@@@%*#@##@@@@@@@@@. .@@@@@@@@@@=@@#%@@@#. =+#@@@ *@*%@@@@@@@@% #@@@@@@@@@+@@ *@@@*=: .*@@@@@%*#@%=:@@@@@@@@@+ =@@@@@@@@@+:%@%+*@@@@@%= :@@@@@*-. =@@@@@@@@@: .@@@@@@@@@# :+%@@@@# =%@@@@@@. #@@@@@@@@% #@@@@@@@@@. +@@@@@@*. :+@@@@@@. %@@@@@@@@* +@@@@@@@@@- =@@@@@#= -@@@@@= :@@@@@@@@@= :@@@@@@@@@+ +@@@@#. :%@@@@@@@ =@@@@@@@@@: %@@@@@@@@# @@@@@@@* .-+@@@@@# *@@@@@@@@% *@@@@@@@@@. *@@@@#=: *@@@@@@+ %@@@@@@@@# -@@@@@@@@@- +@@@@@@- +%@@@@@@@+ :@@@@@@@@@+@@@@@@@@@+ *@@@@@@@%. .@@@@@@* =@@@@@@@@@@@@@@@@@# :%@@@@@+ #@@@@@@@@*#%@@+ #@@@@@@@@@@@@@@@@.:%@%#*#@@@@@@@@- :---@@@@@@-.:%@. %@@@@@@@@@@@@@@- #@=.:#@@@@@*---. :@@@@@@-.-%@*.:@@@@@@@@@@@@@+ -@@=.:#@@@@@# .=-:-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#:-== .@@@#@@@@@@@@@@@@@@@@@@@@@@@@@#%@@* :. -@@@%@@@@@@@@@@@@@@@%@@@@ :. *+. .@@@==@@@#-*@@* -*-