DUICUO

BitwardenとPodmanでパスワードを管理する

[[272787]]

過去1年間、LastPass、1Password、Dashlaneといったパスワードマネージャーの広告を目にしたことがあるかもしれません。パスワードマネージャーを使えば、ウェブサイトのパスワードをすべて覚えておく手間が省けます。繰り返し使うパスワードや覚えやすいパスワードを使う必要はもうありません。代わりに、他のすべてのパスワードのロックを解除できるパスワードを1つだけ覚えておけば良いのです。

複数の弱いパスワードを使う代わりに、強力なパスワードを一つ使うことで、セキュリティを強化できます。クラウドベースのパスワードマネージャー(LastPass、1Password、Dashlaneなど)をご利用の場合は、デバイス間でパスワードを同期することもできます。残念ながら、これらの製品はオープンソースではありません。幸いなことに、他にもオープンソースの代替手段があります。

オープンソースのパスワードマネージャー

代替手段としては、Bitwarden、LessPass、KeePassなどがあります。Bitwardenはオープンソースのパスワードマネージャーで、すべてのパスワードを暗号化してサーバーに保存します。LastPass、1Password、Dashlaneと同様の仕組みです。LessPassはこれらと若干異なり、ステートレスなパスワードマネージャーであることに重点を置いています。つまり、暗号化されたパスワードを保存するのではなく、マスターパスワード、ウェブサイト、ユーザー名に基づいてパスワードを生成します。一方、KeePassはファイルベースのパスワードマネージャーで、プラグインやアプリケーションの柔軟性に優れています。

これら3つのアプリケーションにはそれぞれ欠点があります。Bitwardenはすべてを1か所に保管し、APIとウェブインターフェースを通じてネットワークに公開します。LessPassはステートレスであるため、カスタムパスワードを保存できず、生成されたパスワードを使用する必要があります。KeePassはファイルベースのパスワードマネージャーであるため、デバイス間で簡単に同期できません。この問題はクラウドストレージやWebDAVを使用すれば解決できますが、多くのクライアントがこれをサポートしておらず、デバイス間で適切に同期できない場合はファイルの競合が発生する可能性があります。

この記事では Bitwarden に焦点を当てます。

非公式のBitwarden実装を実行する

bitwarden_rsと呼ばれるサーバーとそのAPIのコミュニティ実装があります。この実装は、公式サーバーで使用されている独自のMicrosoft SQL Serverではなく、SQLiteまたはMariaDB/MySQLを使用できるため、完全にオープンソースです。

公式版と非公式版にはいくつかの違いがあることを認識することが重要です。例えば、公式サーバーは第三者機関による監査を受けていますが、非公式サーバーは受けていません。実装面では、非公式版にはメールによる確認や、Duoまたはメールコードによる二要素認証がありません。

SELinuxでサーバーを実行してみましょう。bitwarden_rsのドキュメントによると、Podmanコマンドは以下のように構築できます。

  1. $ podman run - d \
  2. -- userns = keep - id \
  3. -- name bitwarden \
  4. - e SIGNUPS_ALLOWED = false \
  5. - e ROCKET_PORT = 8080 \
  6. - v / home / egustavs / Bitwarden / bw - data /: /data/ : Z \
  7. - p 8080 : 8080 \
  8. bitwardenrs / server : latest

これにより、bitwarden_rs イメージがダウンロードされ、ユーザーの名前空間内のユーザーコンテナで実行されます。非rootユーザーがバインドできるように、1024以上のポートが使用されます。また、ボリュームのSELinuxコンテキストを:Zで変更することで、 /dataの読み取り/書き込み権限の問題を回避します。

ドメインでホストしている場合は、このサーバーをApacheまたはNginxのリバースプロキシの下に配置することを推奨します。これにより、コンテナをrootとして実行することなく、ポート80と443を使用してコンテナのポート8080を指定できます。

systemd で実行

Bitwarden は実行中なので、このままの状態を維持したいでしょう。次に、コンテナの実行を継続し、応答がなくなった場合に自動的に再起動し、システムの再起動後に実行を開始するためのユニットファイルを作成します。` /etc/systemd/system/bitwarden.service system/bitwarden.service` ファイルを作成します。

  1. [ Unit ]
  2. Description = Bitwarden Podman container
  3. Wants = syslog . service
  4. [ Service ]
  5. User = egustavs
  6. Group = egustavs
  7. TimeoutStartSec = 0
  8. ExecStart = /usr/ bin / podman run 'bitwarden'
  9. ExecStop =- /usr/ bin / podman stop - t 10 'bitwarden'
  10. Restart = always
  11. RestartSec = 30s
  12. KillMode = none
  13. [ Install ]
  14. WantedBy = multi - user . target

次に、sudo を使用してサービスを有効にして開始します。

  1. $ sudo systemctl enable bitwarden . service && sudo systemctl start bitwarden . service
  2. $ systemctl status bitwarden . service
  3. bitwarden . service - Bitwarden Podman container
  4. Loaded : loaded ( /etc/ systemd / system / bitwarden . service ; enabled ; vendor preset : disabled )
  5. Active : active ( running ) since Tue 2019 - 07 - 09 20 : 23 : 16 UTC ; 1 day 14h ago
  6. Main PID : 14861 ( podman )
  7. Tasks : 44 ( limit : 4696 )
  8. Memory : 463.4M

成功しました!Bitwarden は現在実行中で、今後も実行され続けます。

LetsEncrypt を追加

ドメイン名をお持ちの場合は、LetsEncryptなどの暗号化証明書を使用してBitwardenインスタンスを実行することを強くお勧めします。CertbotはLetsEncrypt証明書を作成してくれるボットです。FedoraでCertbotを実行する方法については、こちらのガイドをご覧ください。

証明書を生成したら、bitwarden_rsガイドのHTTPSセクションに従ってください。ポートを変更せずに権限を管理するには、LetsEncryptに:Zを追加することを忘れないでください。