Bitwarden を セルフホスト 2021
編集:2021.04.07
編集:2021.04.08
Bitwarden をセルフホスト
パスワード管理ツールを標的にしたマルウェアにデータを盗まれる恐れがあるため
いままでは、自分だけがわかるパスワード管理ツールを使用しない安全な方法でパスワードなどの情報を管理していました。
でも、
・何らかの原因で、記憶消失
・何らかのアクシデントにより本人が操作できず、本人以外の家族がID、パスワードがわからない
・ハードウェアの物理的論理的損傷
といった状況のいずれかが将来必ず発生します。
コロナで隔離されたら誰も数か月操作できないことにもなります。
ということで、
(予定)パスワード管理ツールで情報を整理して家族でもわかるようにする。
①物理的な紙面などにアプリの使い方とID
②別の紙面とUSBメモリにマスターパスワードだけを入れておく
ことにします。
別のクラウドパスワード管理アプリへこれだけのマスターパスワード1個だけを保存しておくのもありかもしれません。
好みの項目をカスタマイズしたいのとレポート印刷機能が欲しかったので、
パスワード暗号管理ツールを自作しようと思っていましたが
どうせなら常用できて、スマホやタブレットでも使えたほうがいいかもということで
ググると下記の2個がヒットしてよさそうでしたので、インストールしました。
・KeePassXC
・Bitwarden
KeePassXCは「タイトル、ユーザー名、パスワード、URL、メモ」の項目しかなくイマイチでした。クラウド同期機能もありません。
フォーク改造して、好みのアプリにデコレーションするのもありなのですが、そこまで時間さくのはナシです。
Windowsで 無メンテナンスで永年動作可能なので魅力的だっただけに残念ですね。
さて、本命のBitwarden
ストアでBitwardenを検索すると3件ヒットします。 作者「8bitなんちゃら」が公式アプリなのでインストールします。
早速起動します。
→ 使えません
どうやらアプリからクラウドログインして初めて利用可能になる仕様のようです。
ということで、
・公式のサービス内にアカウント作成し、データを保存する
・歯車マークを押して、自前のサーバーを指定する
の2択を迫られます。
いつのまにかサービス終了でデータ消失とか最初からデータ移行という事態は避けたいので
永年使用可能が前提なので
そのまま公式のサービスを使わず、自前でサービスを用意します。
📝このアプリに限りませんが
インポート(取り込み)機能を利用する場合は、https通信で届くまでは安全に暗号化されて届きますが、インポートデータの保存時に相手のサーバーにまるまる無暗号、無防御状態で、すべての情報が入ったファイルがキャッシュされますので
よっぽど信用のできるサイト以外は、利用してはいけません。
また、エクスポート時も相手のサーバーで無暗号状態で全データがキャッシュされてから送られてくるかもしれませんので、利用には十分気を付ける必要があります。
たとえセルフホストでもインポート、エクスポートのキャッシュは適切に削除するように設定しておかないと危険です。
公式のサーバーはアプリは、「動作が重い」「使える機能に制限がある」などの理由で
今回は、有志で作られた vaultwarden(旧bitwarden_rs) サーバーを利用することにします。
ここで、vaultwarden を使えば、パスワード共有などすべての機能が使えます。
公式サーバーアプリではなく
vaultwarden を使うデメリットは、
① 開発がストップするとクライアントアプリと整合性がとれなくなった場合にクライアント、アプリで開けなくなる。
今回の用途では
→ webインターフェースで永久アクセスできるので問題ないでしょう
② 定期的にvaultwardenを自動更新しておく必要がある。
くらいでしょうか。
今回は、あくまでも、なんらかの理由で家族がログインに必要な情報が必要になった場面を第一に想定しています。
おまけで、普段使いも利用しよう程度です。
機器の構成(今回)
サーバー : vaultwarden セルフホスト (イントラネット)
クライアント:
・Windows:ストアアプリ[Bitwarden] (ストアから入手なので自動更新される)
・スマホ:ストアアプリ[Bitwarden] (ストアから入手なので自動更新される)
サーバーも仮想化せず直接クライアントと同じマシンで実行します。
ここで重要な注意点があります
★ オフライン作業での編集に対応していない.
一般的なパスワード管理アプリは、オフライン作業での編集を後から同期できますが、vaultwarden はその機能がありません。
クライアントにロードした内容を変更したい場合はサーバーへ接続できることが必要です。
Bitwarden:「フォルダが単階層」「すぐにロックされる」「ホーム画面がみにくい」「更新履歴がない」「オフライン編集できない」とても使いにくいです
スマホアプリは、端末を再起動するとマスターパスワード要求されます。
公開サーバーやホームNASを常時稼働させている人は不便ないでしょうがそうでない場合は、難ありです。
それって、KeePassXC でよくない? ってなります。KeePassXCは階層構造でわかりやすいですが、データ入力とコピペなどに難ありなんですよね
ホストファイルを編集したい場合は、
コマンドプロンプトを管理者で開いて
C:\Windows\System32\notepad.exe C:\Windows\System32\drivers\etc\hosts
で編集できます。
(開く前にセキュリティアプリの上記ファイルのロックを一時的に解除する必要があります。)
自前の独自ドメインで指定するのもありですし、そのままipで指定するのもありです。
会社や外出先で頻繁に使いたいっていう場合は、
VPSクラウドとドメインを用意すると月に最低500円は かかるので
ほかの有料の市販のパスワードマネージャーをかったりしたほうが手間なく安心かもですね
インストールに必要なもの
・インターネット接続
・Docker
の2点
Docker Desktop for Windows
ダウンロード
https://www.docker.com/products/docker-desktop
説明 : https://www.atmarkit.co.jp/ait/articles/2011/20/news015.html
Installing Docker Desktop 3.2.2 (61853)
Configuration
✅ Install required Windows components for WSL 2
✅ Add shortcut to desktop
OK
デスクトップがショートカット汚染するので
Add shortcut to desktop
のチェックは外しておく
上記インストール後、PCが再起動されてしまうので要注意。
Docker Desktop for Windowsを初回起動すると
下記のリンクへいけとポップされるので
https://docs.microsoft.com/ja-jp/windows/wsl/install-win10
に従って、インストールする必要があります。
[2021年の中盤には、上記の面倒な作業が
wsl.exe --install --distribution ubuntu
wsl.exe --update
で簡単にインストールできるようになるらしい。
ここまでが済みましたら
そのまま起動すると原因不明のエラーが発生していつまでも使えませんので
コンピューターを再起動します。
コマンドプロンプトを開いてbitwardenrsをインストールします。
dockerへbitwardenrsをインストール
docker pull vaultwarden/server:latest
docker run -d --name vaultwarden -v C:/マイデータ/data-vaultwarden/:/data/ -p 8080:80 vaultwarden/server:latest
80ポートは、何かに使うかもなので8080にマッピングしました。
なんらかの漏洩を考えると自己証明書と443ポートに接続したほうがいいかもしれないです。
http://localhost:8080/
を開くと、セルフホストの bitwarden(vaultwarden) が表示されていると思います。
vaultwardenの更新
dockerを入れると
結構ディスク消費しました。
SSDの負荷・老朽化を考慮すると外部サーバーに置いたほうがPCにさやしいかもです。
オレオレ証明書のセットアップは後日したいと思います。
せっかくインストールしたのでKeePassとvaultwarden(bitwarden)両方に保存したいと思います。
[翌日]
コンピューターを接続すると起動していません。
自動起動する設定を行います
前回登録で「--name vaultwarden」
にしているので
ここでは、このように書きます。
docker update --restart=always vaultwarden
これで次回コンピューターを起動したときに自動的に起動するようになりました.
再ログインして確認
ログイン時にdockerのポップアップが表示されて邪魔です。
→ 設定を開いてスタート時のダッシュボードメッセージをOFF
ログイン後、起動には1分くらいかかるみたいです。
vmwareで普通に外付けHDDのmintLinux立ち上げるより遅いですよ
重すぎです。
これは、Windowsで運用するには、ちょっと痛いですね。
SSDが痛むから
やっぱり使う時だけでいいから自動起動を無効にしたいときは、
docker update --restart=no vaultwarden
自動起動
有効
docker update --restart=always [コンテナ名]
無効
docker update --restart=no [コンテナ名]
結論
→ 手軽に使いたいなら、vaultwarden(bitwarden)のセルフホスト(イントラネット)は、やめたほうがいい。
立ち上がりが遅いのでイライラするかもしれないです。
→ 公開サーバーの利用の場合、侵入攻撃にあう可能性がある
→ 安全性を考慮するなら完全ローカル仕様のKeePassXC
→ 緊急時用としては、何らかの原因でクラッシュしてサーバーが立ち上がらない場合を想定すると KeePassXCを利用したほうがいいかもしれませんが、起動方法が面倒です。
緊急時用として
・詳細な説明書📝を印刷して添付しておくか、事前に周知させておく必要がある
・想定外のログインできない場合を想定して、アクセス方法は 2種類用意したほうがいい
今回設定した http通信 では、マルウェア類にパスワードを盗聴されてしまうので
次回は、セルフホスト(イントラネット)で自己証明書に設定して、https化したいと思います。😊
自己証明書で利用するには、
[ブラウザ]で利用する場合
画面の警告を無視してアクセスすると自動で証明書がインストールされて、閲覧できるようになります。
[アプリで利用する場合]
自己証明書を手動でインストールするがあります。有効期限を短くしていると、手間がかかり面倒ですね。
Android: 設定:セキュリティ:認証情報ストレージ:ストレージから証明書をインストールする必要があります。
Windows:
iPhone
いろいろ総合すると、vaultwardenは通常の証明書運用でないと使い勝手が悪いということになります。
スマホでは
vaultwardenのマスターパスワード解除用に 別途フリーのオフライン作業可能なものをいれておくと便利がいいと思います。
大手のアプリでは再起動しても指紋認証は有効なので すぐ解除が必要なものだけ厳選して保存しておくと便利です。
keepassとクラウドストレージでもいいともいますが、オフライン作業での上書き誤消去の問題があるので
avastパスワードのようなものだとオフライン作業と同期のどちらも可能です。
keepassデータとvaultwardenデータを完全同期するアプリがあれば理想的で便利なんですけどね。
コピペ拒否する設定のサイトやアプリは、自動キーボード入力機能のkeepassのほうが断然便利なんですよ