在LXC容器中安装Bitwarden(例如Proxmox)
发布日期:2019年1月13日
众所周知,我非常重视安全性,因此相信这样一个理论:无法从互联网访问的服务比可访问的服务更难被攻击。在选择密码管理器时,这使选择变得不那么容易。当然,有Keepass及其衍生版本,但它们的问题是安全性完全基于主密码和终端设备的安全性。了解到有朋友使用Google Drive在设备间同步密码文件后,我考虑了该选项,但它不适合我(例如,浏览器集成、双因素认证等)。
Lastpass或1Password等密码管理器也不是适合我的解决方案。是的,我相信它们的加密技术很好,而且它们从未看到用户的密码,但双因素认证的安全性仅等同于丢失密码/双因素认证重置功能的安全性。我阅读并目睹了太多针对该功能的攻击,因此无法依赖它。
所有这些都让我选择了Bitwarden,它提供了与Lastpass或1Password相同水平的功能,但是开源的,并且可以托管在我自己的服务器上。不向互联网开放,仅通过VPN(我本来就有的)远程使用,使得攻击面非常小。这篇博客文章展示了我如何在Proxmox LXC容器中安装它,我这样做是为了将其与其他东西隔离,因此如果我需要升级某些东西,就没有依赖关系。我不喜欢在Proxmox主机本身上安装任何东西。由于这是我的第一次尝试,并且在非特权容器和其中的docker运行时遇到了问题,目前此设置仅适用于特权容器。我知道这不太好,但在这种情况下,这是一个我可以接受的风险。如果你找到了在非特权容器中运行它的解决方案,请给我发送电子邮件或在下方留言。
LXC容器
使用Debian 9创建LXC容器(2GB RAM,>5GB硬盘)后,不要立即启动容器。你需要将以下内容添加到/etc/modules-load.d/modules.conf:
|
|
如果你不想启动时加载模块,可以使用:
|
|
如果不这样做,你的安装将变得巨大(超过30GB)。现在,我们只需要将以下内容添加到/etc/pve/lxc/<vid>.conf:
|
|
现在你可以启动容器并进入它,我们稍后会检查一切是否正确,但我们需要docker来进行此操作。
Docker和Docker Composer
docker的一些要求:
|
|
现在我们可以添加docker的仓库:
|
|
现在我们可以安装它:
|
|
Debian自带的Docker Composer太旧,无法与此docker配合使用,因此我们需要以下操作:
|
|
并通过将以下内容添加到.bashrc中来将/usr/local/bin/添加到路径变量中:
|
|
并在bash中直接调用它,以便在不启动新bash实例的情况下设置它。我知道使用软件包会更好,但找不到,所以这是一个临时解决方案。如果有人找到更好的方法,请在下方留言。
现在我们需要通过调用docker info来检查overlay是否正常工作,希望你也得到overlay2作为存储驱动程序:
|
|
Bitwarden
现在我们只需要以下操作:
|
|
现在你完成了,你有了自己的密码管理器服务器,它还支持Google Authenticator(基于时间的一次性密码算法(TOTP)作为第二因素。也许我稍后会写一篇博客文章,介绍如何设置Yubikey作为双因素认证(桌面和移动设备)。
评论部分
Mike — 2019年7月6日
谢谢你的教程。不幸的是,在数据库迁移后我总是收到SQL错误消息。
Drew — 2020年9月26日
谢谢你的教程。我对这个非常陌生,我不确定如何完成第一步:“使用Debian 9创建LXC容器(2GB RAM,>5GB硬盘)后,不要立即启动容器。你需要将以下内容添加到/etc/modules-load.d/modules.conf:aufs overlay”。
我在我的proxmox服务器中创建了LXC容器,但我不知道如何在不启动容器的情况下访问/etc/modules-load.d/modules.conf。我假设我必须在proxmox shell中完成,但多次搜索几乎没有找到关于如何在不启动容器的情况下修改LXC文件的见解。任何建议都将不胜感激,谢谢!
robert — 2020年9月27日
抱歉,我的文字有误导性,你只需要将此添加到proxmox系统的modules.conf中,而不是容器中。
Lawr — 2021年4月29日
你好,谢谢这个!我会尝试一下。你找到使用特权容器的方法了吗?
Lawr — 2021年4月29日
打错了,抱歉,我的意思是“非特权”。