在过去的一年中,您可能遇到过几次试图向您推销密码管理器的情况。 一些例子是 最后通行证, 1密码, 或者 达士兰. 密码管理器消除了记住所有网站密码的负担。 您不再需要重复使用密码或使用易于记忆的密码。 相反,您只需要记住一个密码即可为您解锁所有其他密码。
这可以通过使用一个强密码而不是多个弱密码来提高您的安全性。 如果您拥有 LastPass、1Password 或 Dashlane 等基于云的密码管理器,您还可以跨设备同步密码。 不幸的是,这些产品都不是开源的。 幸运的是,有可用的开源替代品。
开源密码管理器
这些替代品包括 Bitwarden、 少通行证, 或者 记事通. 比特沃登是 一个开源密码管理器 它将所有加密的密码存储在服务器上,其工作方式与 LastPass、1Password 或 Dashlane 相同。 LessPass 有点不同,因为它专注于成为无状态密码管理器。 这意味着它会根据主密码、网站和您的用户名派生密码,而不是存储加密的密码。 另一方面是 KeePass,这是一个基于文件的密码管理器,其插件和应用程序具有很大的灵活性。
这三个应用程序中的每一个都有自己的缺点。 Bitwarden 将所有内容存储在一个地方,并通过其 API 和网站界面向网络公开。 LessPass 无法存储自定义密码,因为它是无状态的,因此您需要使用它们的派生密码。 基于文件的密码管理器 KeePass 无法在设备之间轻松同步。 您可以将云存储提供商与 网络视频 解决这个问题,但很多客户端不支持它,如果设备未正确同步,您可能会遇到文件冲突。
本文重点介绍 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。 这样您就可以使用指向容器的 8080 端口的端口 80 和 443,而无需以 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.
生成证书后,您可以按照 关于 HTTPS 的 bitwarden_rs 指南. 只需记住将 :Z 附加到 LetsEncrypt 卷以在不更改端口的情况下处理权限。