如何在 Active Directory 上使用 Bitwarden 进行密码保护

使用 Bitwarden Directory Connector 将您的 Linux 自托管 Bitwarden 实例与 AD 集成。
108 位读者喜欢这篇文章。
Is Occupy Wall St. really an "open source protest?"

Opensource.com

Bitwarden 是一款出色的密码管理工具。它拥有适用于每个平台的应用程序、浏览器插件和自托管版本,并提供一些很棒的密码管理技巧,如文件夹和集合。我最喜欢的功能之一是它会保留您的旧密码历史记录,这对于企业用户来说是一个很棒的功能。

如果您是企业用户,您可能正在自托管 Bitwarden,并希望将您的用户与员工目录同步。我的组织使用 Active Directory (AD),它是用户目录的标准,并与 Windows 桌面无缝集成。我也需要它与我们的开源工具一起工作,本文分享的秘诀就在于此。

允许您执行此操作的工具是 Bitwarden Directory Connector (BWDC)。如果您在 Google 上搜索,您不会找到太多关于在 Linux 上将 BWDC 与 AD 一起使用的信息。Bitwarden 的博客 如果您使用的是 Windows 版本,那么它是一个很好的起点,但它不会帮助您将其集成到 Linux 环境中。您可以在 Bitwarden 的 GitHub 页面上找到执行此操作的说明,但它们不是很清楚。因此,在这里我将解释如何让您的 Linux 自托管版本的 Bitwarden 与您的企业 Active Directory 集成(并且,希望为未来在 Google 上搜索此信息的搜索者提供更有成效的结果)。

在我的设置中,Bitwarden 和 Active Directory 都托管在 AWS 上,前者在 EC2 实例中,后者在 AWS Simple Directory 中。Bitwarden Docker 容器安装在名为 bitwarden 的用户的 home 目录下。Bitwarden 的说明 使此设置变得容易。但是设置 BWDC 并不那么清楚,因此我将尝试在此处修复它。

安装 BWDC

首先为 BWDC 设置一个目录,然后下载 ZIP 文件并解压缩

cd /home/bitwarden
mkdir directory-connector
cd directory-connector
wget https://github.com/bitwarden/directory-connector/releases/download/v2.6.2/bwdc-linux-2.6.2.zip
unzip bwdc-linux-2.6.2.zip
chmod +x bwdc

(在撰写本文时,BWDC 2.6.2 是当前版本;这可能会更改,因此请确保下载最新版本。)

现在您将拥有一个名为 bwdc 的二进制文件和一个名为 keytar.node 的文件;将这两个文件都放在原位。

接下来,编辑 bitwarden 用户的配置文件

vi /home/bitwarden/.profile

并添加以下行

export BITWARDENCLI_CONNECTOR_PLAINTEXT_SECRETS=true
export PATH=$PATH:/home/bitwarden/directory-connector

注销并重新登录以获取新设置,或者您可以使用以下命令 sourcing 配置文件

  . ~/.profile

BITWARDENCLI_CONNECTOR_PLAINTEXT_SECRETS=true 行告诉 BWDC 不要使用任何基于桌面的密钥库。由于这是一台服务器,并且不太可能安装桌面,因此您将不得不将密码以纯文本形式保存(但您将采取预防措施稍后对其进行保护)。第二行设置了 bwdc 二进制文件的路径,以便它可以从您所在的任何目录运行。

配置 BWDC

安装 BWDC 后,将其配置为连接到您的 Bitwarden 实例

bwdc login
? Email address: <your email for your master account>
? Master password: [hidden]

登录后,您就可以开始处理 data.json 文件了。

如果您使用上述步骤设置 BWDC,则其配置信息将存储在 /home/bitwarden/.config/Bitwarden Directory Connector/data.json 中。此文件包含 appIdaccess token;这些是您 Bitwarden 实例的登录凭据。但是 Active Directory 呢,您会说?您可以通过编辑 data.json 文件手动添加它(我假设您在服务器上并正在使用 Vi)

vi '/home/bitwarden/.config/Bitwarden Directory Connector/data.json'

appId 行下方添加以下内容

"rememberEmail": true,
  "rememberedEmail": "<the email address you logged in with>",
  "organizationId": "<your organization id>",
  "directoryType": 0,
  "directoryConfig_0": {
    "ssl": false,
    "sslAllowUnauthorized": false,
    "port": 389,
    "currentUser": false,
    "ad": true,
    "hostname": "<hostname of your active directory>",
    "rootPath": "<root path of AD, something like; dc=com,dc=au>",
    "username": "<username with privilege to read the AD; DOMAIN\\Username>",
    "password": "<password for the above account>"
  },
  "directoryConfig_2": {},
  "directoryConfig_1": {},
  "directoryConfig_3": {},
  "syncConfig": {
    "users": true,
    "groups": true,
    "interval": 5,
    "removeDisabled": true,
    "overwriteExisting": true,
    "useEmailPrefixSuffix": false,
    "creationDateAttribute": "whenCreated",
    "revisionDateAttribute": "whenChanged",
    "emailPrefixAttribute": "sAMAccountName",
    "memberAttribute": "member",
    "userObjectClass": "person",
    "groupObjectClass": "group",
    "userEmailAttribute": "mail",
    "groupNameAttribute": "name",
    "userFilter": "(&(memberOf=CN=bitwarden,OU=groups,DC=work,DC=corp))",
    "groupPath": "OU=Groups",
    "userPath": "CN=Users"
  },
  "environmentUrls": {
    "base": "<base url of your bitwarden instance; https://bitwarden.yourdomain>",
    "api": null,
    "identity": null,
    "webVault": null,
    "icons": null,
    "notifications": null,
    "events": null
  },

如果您仔细查看,您会发现您需要更改此条目中的几个值,包括 userFiltergroupPathuserPath。(我假设您熟悉 LDAP 和 AD,并且知道这些值对于您的实例应该是什么。)保留 CN=bitwarden 部分,用于您稍后将创建的 Bitwarden AD 组。您需要更改的另一个值是 organizationID,您可以在 bwdata 目录中找到它,作为其中一个 JSON 文件的名称。列出文件

ls /home/bitwarden/bwdata/core/licenses/organization

这应该返回一个目录列表,其中包含一个形式为 <organization id>.json 的文件名。文件名本身就是您组织的 ID。将其插入到上面代码中的 organizationID 行中。

一旦您获得正确的 data.json 文件,强烈建议您备份此文件。如果 BWDC 发现此文件有问题,似乎存在一个将此文件设置回默认设置的问题。这意味着如果您无意中对文件进行了更改并且出现错误,您将丢失整个配置。

接下来,以 bitwarden 用户身份测试与 AD 的连接

bwdc test

这应该返回 AD 中组的转储。为了保护您的密码,请设置该文件的权限,以便只有 bitwarden 用户可以读取它

chmod 700 '/home/bitwarden/.config/Bitwarden Directory Connector/data.json'

设置您的组

现在向您的 AD 添加一个组(我的组名为 bitwarden),您将在其中添加和删除需要访问 Bitwarden 的用户。此组是必要的,因为如果您不根据此组过滤用户,BWDC 将尝试使用您 AD 中的所有用户。如果用户数量大于您的 Bitwarden 许可证允许的数量,BWDC 将静默失败,您会恨自己很长时间……就像我一样!

一旦组设置好并且至少有一个用户,请再次运行测试。您应该在输出中看到您用户的电子邮件地址。

现在是同步的时候了。同步后,bitwarden 组中出现的任何用户都将被添加到 Bitwarden,并且将向他们发送电子邮件,邀请他们注册。以 bitwarden 用户身份工作,使用以下命令同步目录

bwdc sync

鉴于 removeDisableddata.json 文件中设置为 true,您可以设置一个 cron 作业来保持 bitwarden 组的成员和 Bitwarden 用户 постоянно 同步,以便您在 AD 中所做的任何更改都会立即反映在您的 Bitwarden 实例中。将以下内容添加到您的 /etc/crontab

# Sync for Active Directory to Bitwarden
* *     * * *   bitwarden export BITWARDENCLI_CONNECTOR_PLAINTEXT_SECRETS=true ; /home/bitwarden/directory-connector/bwdc sync >/dev/null 2>&1

一旦您进行了自动同步,您将在 Bitwarden 中拥有所有 AD 组的完整列表。从那里开始,只需将组分配给集合,然后在您的 AD 中向组添加成员即可。用户将自动分配到正确的密码集合,并看到他们需要的密码。

潜在陷阱

最后,我将告诉您一些我在设置此过程时遇到的陷阱。首先,请注意 AD 主组。如果您的任何 Linux 或其他 POSIX 系统从 AD 获取登录凭据,您可能已经为此用户设置了此项。似乎 AD 不会将用户包含在组搜索结果中(如果该组设置为主组);这可能会从组中删除用户,从而失去对集合的访问权限。

其次,当您需要删除用户时,您可能会认为从 AD 中的组中删除帐户会删除用户……错了!似乎 Bitwarden 在其数据库中保留了一些用户信息。当我删除自己的帐户,然后发现重新创建后我无法再登录时,这一点变得非常明显,因为多因素身份验证 (MFA) 仍然处于活动状态,并且令牌已过期,实际上将我锁定在外。您必须明确告知 Bitwarden 删除数据库中的内容。为此,请转到 URL

https://<your bitwarden site>/#/recover-delete

输入用户注册时使用的电子邮件地址。他们将收到一封电子邮件,指示他们单击链接以确认删除帐户。完成后,可以将用户放回 Bitwarden AD 组,然后再次完成注册过程。

现在您知道如何让您的自托管 Bitwarden 与您的 AD 一起工作了。我认为您仍然会遇到一些问题,但是只要有一点耐心并调整配置,它就会工作。一旦它开始工作,就不要过多地摆弄它!

接下来阅读什么
User profile image.
我是一名专业的系统管理员,专门从事 Unix 和 Linux 系统。自 90 年代初以来,我一直从事企业网络、Unix 系统、网络/系统安全和 Web 技术方面的工作,我甚至还学到了一些关于 Windows 的知识。

评论已关闭。

© . All rights reserved.