LazyBlog

前言與起源

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

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

什麼是Bitwarden

Bitwarden

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

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

為什麼需要密碼管理器

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

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

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

需求

更新一下

  • 更新軟體資訊列表

    1
    apt-get update
  • 更新軟體

    1
    apt-get upgrade

安裝Nginx

1
apt-get install nginx -y

安裝Docker

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

安裝Docker-compose

1
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

  • 建立儲存資料夾
1
mkdir -p /data/bitwarden && cd /data/bitwarden
  • 建立docker-compose設定文件
    • 建議複製到筆記本修改好後,再貼到伺服器的終端機內執行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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: 'service@league2eb.me' # 寄件者
SMTP_PORT: '465'
SMTP_SSL: 'true'
SMTP_USERNAME: 'service@league2eb.me'
SMTP_PASSWORD: 'password'
SMTP_EXPLICIT_TLS: 'true'
ports:
- 7006:80
- 7007:3012
EOF

設定Nginx反向代理

  • 移動到nginx設定檔案的位置,並新增設定檔案
1
cd /etc/nginx/sites-available && vi bitwarden.conf
  • 建議先使用筆記本編輯好下面的內容後,在貼到bitwarden.conf中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55

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服務
1
cd /etc/nginx/sites-enabled && ln -s ../sites-available/bitwarden.conf . && systemctl reload nginx

正式啟用Bitwarden

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

使用、建立帳號

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

  • 填寫資料送出

禁止建立帳號

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

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

重啟容器

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

手機端使用(iOS)



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

後記

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

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

警告

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

好文推薦 !

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


 評論