不過最近幾年,聽到 LastPass 有安全泄露問題的消息越來越多,對于一個軟件開發從業者來說,密碼的安全是我非常關注的。

可沒想到的是,安全帶來的代價,卻讓我最終放棄 LastPass ,可能你無法相信,但事實確實如此。
不知何時開始的,LastPass 經常定期會要求已經授權的設備進行重新授權(事后才知曉的)。
這聽起來是一件好事,但給我帶來了非常糟糕的使用體驗。
有一次印象非常深刻,也是第一次出現這種問題,當時我以為是使用時間太久,輸入主密碼就可以重新登陸使用,但是那次無論我用密碼登陸多少次,都提示我去郵箱重新授權,但死活在 163 郵箱里收不到郵件,我非常的害怕,害怕我這么多年的保險箱就這么沒了。這種狀態給了我非常大的打擊,我非常懊惱當時為什么選擇它,也非常納悶為什么一個產品會越來越用?
直到一次偶然的機會,我登陸了我多年未使用的 QQ ,發現在 QQ 郵箱里有 LastPass 的郵件,原來 LastPass 把郵件發到了這里,但是為什么呢?難道以前設置過安全郵箱?可是過后我在 LastPass 的官網里好像找不到相關的設置(或許是我沒有找到)。
重新授權登陸后,由于工作忙,我沒有繼續跟進這件事了,也沒有進行復盤,怎么會遇到這種事情,下次遇到這種事情該如何處理。
以至于到昨天晚上,我需要登陸一些帳號, LastPass 又在關鍵時刻,罷工了。
是的,它又提示我要重新授權才能使用,可問題是163 郵箱無論如何也收不到授權郵件。由于時間過了太久,不記得之前是發到 QQ 郵箱里去了,我開始又陷入了深深的自責,吃一墊為什么不長智?
幸運的是,由于近期做一些項目,手機上有下載 QQ,經常要登陸 QQ,看到郵箱里的消息,才又回想起之前的種種。
如果不是兩次偶然的機會,讓我有機會在 QQ 郵箱里看到授權郵件,恐怕我積累多年的 200 百多個密碼,就全部丟失了,要知道密碼數據對我來說有多么的重要,因為不是所有的帳號都能使用手機重設密碼的。
經歷了兩次生與死的掙扎,害怕這種事情再次發生在自己的身上,于是我開始尋找市面上其他的解決方案,準備遷移數據到其他更好用的工具上。
在開始之前,先梳理了下自己的需求:
- 跨平臺:瀏覽器,手機(Android,iOS)、電腦(Windows、MacOS),而且還要不限制設備數
- 免費:能免費就盡量用免費的(前提是安全性滿足),省點錢畢竟還要還房貸
安全:這點最重要了,自不必說
綜合考量之下,選定了 Bitwarden 這款工具,相對于LastPass的優勢,Bitwarden有如下幾個優勢:
- 開源:Bitwarden是一款開源軟件,這意味著任何人都可以查看并審查其代碼,確保無后門、安全可靠。而LastPass則是一個閉源商業軟件。
- 更便宜:Bitwarden提供免費和付費的服務計劃。對于個人用戶來說,它的付費計劃要比LastPass便宜,提供的功能也更豐富。
- 更好的隱私:與LastPass不同,Bitwarden不會跟蹤或出售用戶的數據。此外,Bitwarden使用加密技術存儲您的數據,并且只有用戶擁有解密的密鑰。
- 跨平臺支持:Bitwarden支持iOS、Android、Windows、macOS、Linux等多個平臺。而LastPass則僅支持較少的平臺。
- 無限密碼共享:在Bitwarden中,用戶可以創建任意數量的密碼共享組,并分享其中的密碼給其他人,這是LastPass不支持的一個功能
- 社區氛圍:由于Bitwarden使用范圍更廣泛,因此它有一個更大的社區,這意味著更好的支持、反饋和開發。它還提供了各種各樣的瀏覽器插件和應用程序,使得我的體驗更加完美。:
說干就干,從晚上 11 點開始查看文檔,開始部署 Bitwarden,遇到了一些小問題,整到了凌晨一點,終于自己部署了下,以下是自己的部署過程,給有需要的朋友們可以做個參考
1. 前置知識
Bitwarden是一個強大的密碼管理工具,它有著豐富的功能和強大的加密保護機制,同時也有易于使用的界面和跨平臺支持。
- 加密存儲:Bitwarden將所有的密碼和賬戶信息加密后存儲在云端或本地設備,并使用256位AES加密和PBKDF2 SHA-256哈希算法保護數據安全。每個用戶都有自己的主密碼,這是唯一能夠解鎖其加密數據的密碼。
- 跨平臺支持:Bitwarden提供了多種客戶端應用程序,包括Windows、macOS、Linux、iOS和Android,以及瀏覽器擴展程序和Web應用程序,用戶可以在各種平臺上使用Bitwarden。
- 密碼生成器:Bitwarden內置了隨機密碼生成器,可以生成更加復雜和安全的密碼,這些密碼包括數字、字母、符號等。
- 自動填充:Bitwarden能夠自動填充登錄憑據,用戶無需手動輸入用戶名和密碼。
- 分享和協作:Bitwarden允許用戶與家人、朋友和同事共享密碼和敏感信息。同時也可以創建組織并邀請團隊成員進行協作。
- 多語言支持:Bitwarden支持多種語言,包括英語、中文、法語、德語、日語、韓語、西班牙語等。用戶可以選擇自己習慣的語言來使用。
- 開源授權:Bitwarden是一個開源軟件,采用AGPLv3授權協議,用戶可以自由分發和修改其代碼。同時,Bitwarden使用了透明的開發過程,定期發布安全審計報告以保證安全性。
在搜索 Bitwarden 的使用時,還會經常看到 Vaultwarden 和 bitwarden_rs ,它們與 Bitwarden 是什么關系呢?
Bitwarden
- 有專門開發團隊運營的密碼管理器,大部分功能是免費的,部分高級是收費的(如目錄同步、SSO、群組、自定義角色以及基于企業組織層面的 Duo Security 兩步登錄)
- 可以私有部署,但對對服務器的要求高,使用 .net 開發,用的是mssql,內存必需大于2G,對于小內存機器來說是跑不起來的。
Vaultwarden
- Vaultwarden 是第三方開發的,并沒有像Bitwarden那樣的社區規模,但它也有自己的貢獻者群體在維護和改進。
- 可以私有部署,但比官方更輕量,使用 Rust 編寫,改用 SQLite 數據庫(現在也支持 MySQL 和 PostgreSQL),運行時只需要 10M 內存,可以說對硬件基本沒有要求。
- 以前的 bitwarden_rs,為了區分于官方的版本,特意改的名字
對比之下,Vaultwarden 優勢非常的明顯,建議大家和我一樣,無腦使用 VaultWarden即可。
1. 私有部署
部署 Bitwarden 的方法有很多,使用 docker 是最方便的,一條命令即可
“`shell
docker run -d –name vaultwarden \
–restart=always \
-e WEBSOCKET_ENABLED=true \
-e SIGNUPS_ALLOWED=true \
-e DOMAIN=https://vault.youdomain.com \
-e ADMIN_TOKEN=<you_master_password> \
-v /data/bitwarden/:/data/ \
-p 8080:80 \
-p 3012:3012 \
vaultwarden/server:latest
<pre><code class=””>上面用到的參數有
“`shell
# 啟用或禁用新用戶注冊:true啟用,false禁用
SIGNUPS_ALLOWED=false
# 設置web訪問域名,必須使用 https
DOMAIN=https://vault.yourdomain.com
# 是否啟用WebSocket通知:true啟用,false禁用
WEBSOCKET_ENABLED=true
# 啟用管理后臺并設置token,默認為空不啟用,設置token后則啟用
ADMIN_TOKEN=XXXXXXXXXXXX
還有更多的參數,可根據自己的需要進行設置
-
-
-
-
# 日志級別選項:trace、debug、info、warn、error 以及 off
-
-
-
-
-
DATABASE_URL=data/vaultwarden.db
-
-
# 是否啟用web客戶端:true啟用,false禁用
-
-
-
# 修改線程,默認為10,若用戶多可修改為更大,一般默認不需要設置
-
-
-
-
-
-
-
-
-
-
SMTP_USERNAME=test@test.com
-
-
# 自v1.25.0起,不再設置SMTP_SSL和SMTP_EXPLICIT_TLS,使用SMTP_SECURITY替代,它有以下選項:starttls、force_tls和off。
-
# 465端口使用force_tls,587端口使用starttls,25端口使用off。
-
-
-
-
INVITATIONS_ALLOWED=false
-
-
# 啟用或禁用分享發送功能,默認開啟,啟用true,禁用false
-
2.1 域名解析
后端的 Bitwarden 服務已經成功運行,前端如何訪問呢?
有兩種方法:
- 直接使用?
https://{ip}:{password}? 訪問 web
- 申請個域名,使用?
https://{domain}? 訪問 web
使用 ip 訪問,記得去設置安全組,開放端口
使用域名訪問,可以使用子域名,省得再申請域名,個人推薦使用域名,使用上更方便。
在云廠商上設置好 DNS 解析后,還需要設置下 nginx 的反向代理,才可以使用域名進行訪問。
2.2 反向代理
找到你的 nginx 配置文件路徑,假設是 /usr/local/nginx/conf/nginx.conf,添加如下配置,并重啟 nginx 服務。
-
# ‘upstream’ 指令確保你有一個 http/1.1 連接
-
# 這里啟用了 keepalive 選項并擁有更好的性能
-
-
-
upstream vaultwarden-default {
-
zone vaultwarden-default 64k;
-
-
-
-
upstream vaultwarden-ws {
-
-
-
-
-
-
-
-
-
-
server_name pwd.iswbm.com;
-
return 301 https://hostrequest_uri;
-
-
-
-
-
listen [::]:443 ssl http2;
-
server_name pwd.iswbm.com;
-
-
-
ssl_certificate /etc/letsencrypt/live/iswbm.com/cert.pem;
-
ssl_certificate_key /etc/letsencrypt/live/<you_domain>/privkey.pem;
-
ssl_trusted_certificate /etc/letsencrypt/live/<you_domain>/cert.pem;
-
-
client_max_body_size 128M;
-
-
-
-
proxy_set_header “Connection” “”;
-
-
proxy_set_header Host host;
-
proxy_set_header X-Real-IPremote_addr;
-
proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
-
proxy_set_header X-Forwarded-Protoscheme;
-
-
proxy_pass http://vaultwarden-default;
-
-
-
location /notifications/hub/negotiate {
-
-
proxy_set_header “Connection” “”;
-
-
proxy_set_header Host host;
-
proxy_set_header X-Real-IPremote_addr;
-
proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
-
proxy_set_header X-Forwarded-Protoscheme;
-
-
proxy_pass http://vaultwarden-default;
-
-
-
location /notifications/hub {
-
-
proxy_set_header Upgrade http_upgrade;
-
proxy_set_header Connection “upgrade”;
-
-
proxy_set_header Hosthost;
-
proxy_set_header X-Real-IP remote_addr;
-
proxy_set_header Forwardedremote_addr;
-
proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
-
proxy_set_header X-Forwarded-Protoscheme;
-
-
proxy_pass http://vaultwarden-ws;
-
-
-
# 除了 ADMIN_TOKEN 之外,還可以選擇添加額外的身份驗證
-
# 刪除下面的 ‘#’ 注釋并創建 htpasswd_file 以使其處于活動狀態
-
-
-
# # 參閱: https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/
-
-
# auth_basic_user_file /path/to/htpasswd_file;
-
-
# proxy_http_version 1.1;
-
# proxy_set_header “Connection” “”;
-
-
# proxy_set_header Host host;
-
# proxy_set_header X-Real-IPremote_addr;
-
# proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
-
# proxy_set_header X-Forwarded-Protoscheme;
-
-
# proxy_pass http://vaultwarden-default;
-
-
3. 創建帳號
設置好反向代理后,就可以使用域名直接登陸 BitWarden,首次登陸,要先創建帳戶

輸入郵箱 等其他相關信息,密碼千萬記住,主密碼提示最好寫下,省得忘記主密碼。
帳號創建完成后,跳轉到登陸界面輸入主密碼進行登陸

登陸后的界面如下

4. 數據遷移
萬事具備,只剩遷移,VaultWarden 對于市面上的幾乎所有的密碼管理器都提供數據導入功能,你聽過的沒聽過的都支持,應該有幾十種,包括:
- LastPass
- 1Password
- KeePass
- Chrome & Firefox & Safari
- 等等
我之前的主要平臺是 LastPass ,在如下位置就可以將密碼導出為 csv 格式

回到 https://vault.youdomain.com 選擇工具 – 導入數據

5. 客戶端
Bitwarden 提供了全平臺的客戶端軟件,以下是常用的一些平臺客戶端,附上了鏈接,可以直接下載
未在此列的平臺,可前往官網進行下載:https://bitwarden.com/download
以 Chrome 插件和 iOS 為例,介紹下用法
Chrome 插件
安裝完成后,先點擊左上角的設置私人服務器(https://vault.youdomain.com)后

再使用郵箱登陸,就能連接到自己的密碼庫啦~

iOS 客戶端
在 App Store 安裝后,也是和上面一樣,先設置私人服務器,也就是前面設置的域名。再輸入主密碼,就可以登陸上自己的密碼管理器。
為了在手機上有更好的體驗,需要設置一下,開啟自動填充。
在?設置? ->?密碼? ->?密碼選項?,允許 BitWarden 做為密碼的填充源

其他平臺
若你手上有其他的設備,方法都是類似的,可自行設置。
?6. 高級功能
安全報告
Bitwarden 還會生成一系列的安全報告,以保護用戶密碼的安全。

它會將密碼以及郵箱地址與已經公開的,被泄露的數據庫中的內容進行對比,并找出這些不安全的密碼,另外也會與你自己的密碼庫中的密碼進行對比,防止一個密碼被重復使用多次。它能夠找到那些非常容易被破解的密碼,在自動填寫的域名中未使用 https 的,以及網站有兩步驗證但并未被啟用的,并進行提醒,增加密碼的安全程度。
測試了下自己的密碼,有很多都是有高危風險,這兩天就要統一整改下。

賬戶保護
除了普通的賬號密碼,以及兩步驗證(必須通過網頁端開啟)外,Bitwarden 還通過 “指紋短語”(fingerprint phrase)來保護帳號安全。每個帳號都有一個固定的,由 5 個英語單詞組成的指紋短語,且不會改變。可以通過驗證指紋短語,來判斷所連接到正確的的 Bitwarden 服務器。或用來驗證添加到組織中的帳號是否為正確的帳號。

它還支持通過修改 KDF 迭代來防止主密碼遭到暴力破解。

其他一些安全措施,別的密碼管理軟件也具有,像后臺自動鎖定,禁止截圖等等,這里就不展開細說了。
總而言之,它所提供的功能非常豐富,在生成管理密碼外,還有一系列保護賬戶安全的功能,
7. 說在最后
私有部署 BitWarden ,不僅自己可以用,也可以給家里人使用,但注冊好后,請及時將關閉 web 功能,或者關閉注冊功能。
雖然數據和隱私完全掌握在自己的手里,但這一切的前提是安全,服務器的安全需要自己維護,若有沒有安全方面的經驗,最好去學習一下,明哥這邊給一些基本的建議:
- 服務器禁止密碼登陸,只開啟使用密鑰登陸
- 及時升級軟件,避免三方軟件的安全漏洞
- 對數據進行定期的備份,防止數據誤刪除
- 限制不必要的端口,安全組別亂開
總之,便利與安全是兩個是相互對抗,只能平衡,不能消除,使用 BitWarden 一定要注意做好安全措施。
8. 參考文檔
- BitWarden 幫助中心 – 中文版:https://help.ppgg.in/
- BitWarden 客戶端下載中心:https://bitwarden.com/download/
-=||=-收藏贊 (0)
評論 搶沙發
保貝狗
保貝狗是一款免費的個人信息保護產品
大家都在用的隱私保護軟件
保貝狗專注于個人信息保護的研究
實用、簡單、方便、快捷
QQ聯系我們微信聯系我們