使用 Bitwarden 和 Podman 管理您的密码

在过去的一年中,您可能遇到过一些试图向您推销密码管理器的情况。 一些例子是 最后通行证, 1密码, 或者 达什兰. 密码管理器消除了记住所有网站密码的负担。 您不再需要重复使用密码或使用易于记忆的密码。 相反,您只需要记住一个密码即可为您解锁所有其他密码。

这可以通过使用一个强密码而​​不是多个弱密码来提高您的安全性。 如果您有 LastPass、1Password 或 Dashlane 等基于云的密码管理器,您还可以跨设备同步密码。 不幸的是,这些产品都不是开源的。 幸运的是,有可用的开源替代品。

开源密码管理器

这些替代方案包括 Bitwarden、 少通行证, 或者 通行证. Bitwarden 是 一个开源密码管理器 将您所有密码加密存储在服务器上,其工作方式与 LastPass、1Password 或 Dashlane 相同。 LessPass 有点不同,因为它专注于成为一个无状态的密码管理器。 这意味着它根据主密码、网站和您的用户名派生密码,而不是存储加密的密码。 另一方面是 KeePass,这是一个基于文件的密码管理器,其插件和应用程序具有很大的灵活性。

这三个应用程序中的每一个都有自己的缺点。 Bitwarden 将所有内容存储在一个地方,并通过其 API 和网站界面向网络公开。 LessPass 无法存储自定义密码,因为它是无状态的,因此您需要使用它们的派生密码。 KeePass 是一种基于文件的密码管理器,无法在设备之间轻松同步。 您可以将云存储提供商与 网络DAV 来解决这个问题,但很多客户端不支持它,如果设备没有正确同步,您可能会遇到文件冲突。

本文重点介绍 Bitwarden。

运行一个非官方的 Bitwarden 实现

有一个服务器及其 API 的社区实现,称为 bitwarden_rs. 此实现是完全开源的,因为它可以使用 SQLite 或 MariaDB/MySQL,而不是官方服务器使用的专有 Microsoft SQL Server。

重要的是要认识到官方和非官方版本之间存在一些差异。 例如, 官方服务器已通过第三方审核,而非官方的则没有。 在实现方面,非官方版本缺乏 电子邮件确认和支持使用 Duo 或电子邮件代码的两因素身份验证.

让我们开始使用 SELinux 来运行服务器。 按照 bitwarden_rs 的文档,您可以构建一个 Podman 命令,如下所示:

$ podman run -d  
--userns=keep-id
--name bitwarden
-e SIGNUPS_ALLOWED=false
-e ROCKET_PORT=8080
-v /home/egustavs/Bitwarden/bw-data/:/data/:Z
-p 8080:8080
bitwardenrs/server:latest

这将下载 bitwarden_rs 图像并在用户命名空间下的用户容器中运行它。 它使用 1024 以上的端口,以便非 root 用户可以绑定到它。 它还使用 :Z 更改卷的 SELinux 上下文,以防止在 /data 上出现读写权限问题。

如果您在域下托管它,建议将此服务器置于反向代理下 Apache 或 Nginx。 这样您就可以使用端口 80 和 443,它们指向容器的 8080 端口,而无需以 root 身份运行容器。

在 systemd 下运行

现在 Bitwarden 正在运行,您可能希望保持这种状态。 接下来,创建一个保持容器运行的单元文件,如果它没有响应则自动重启,并在系统重启后开始运行。 将此文件创建为 /etc/systemd/system/bitwarden.service:

[Unit]
Description=Bitwarden Podman container
Wants=syslog.service

[Service]
User=egustavs
Group=egustavs
TimeoutStartSec=0
ExecStart=/usr/bin/podman start 'bitwarden'
ExecStop=-/usr/bin/podman stop -t 10 'bitwarden'
Restart=always
RestartSec=30s
KillMode=none

[Install]
WantedBy=multi-user.target

现在,启用并使用它启动它 sudo:

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

成功! Bitwarden 现在正在系统下运行,并将继续运行。

添加 LetsEncrypt

如果您有域,强烈建议通过加密通道使用 LetsEncrypt 之类的东西运行您的 Bitwarden 实例。 Certbot 是一个为我们创建 LetsEncrypt 证书的机器人,他们有一个 完成此操作的指南 Fedora.

生成证书后,您可以按照 bitwarden_rs 关于 HTTPS 的指南. 请记住将 :Z 附加到 LetsEncrypt 卷以在不更改端口的情况下处理权限。

摄影者 CMDR 谢恩不飞溅.

相关阅读:

Posted in: LinuxTags: , ,