如何自动化 SSH 访问的 google-authenticator MFA 配置

如何自动化 SSH 访问的 google-authenticator MFA 配置

在我的公司,我们目前有一个 SSH 跳转服务器,我们的工作人员可以通过它访问客户的服务器端点。我们设置了几个 Ansible 剧本,通过创建用户帐户并设置基于公钥的访问权限,基本上可以创建/删除/更新用户对该跳转服务器的访问权限。

我现在正在尝试使用google-authenticator在那个服务器上。我经历过本教程它有效地涵盖了为给定用户的 SSH 访问添加 MFA 键盘交互保护的过程,但我想知道如何自动化该过程以将其与我们当前的工作流程集成。

我苦苦挣扎的要点如下:

  • 在教程的某些步骤中,bash 中会输出二维码以及一堆安全访问代码,以防 MFA 崩溃或失败。我理解它使用库伦代码为此目的。我想知道是否有任何方法可以使用 Ansible 将此输出放在电子邮件中并将其发送给正在设置的用户。
  • 此外,为了实现上述效果,我需要每个用户的电子邮件地址。目前,用户仅通过其用户名/句柄进行管理(即jdoe)。我能否在 Linux 中将他们的电子邮件地址信息添加并维护到用户帐户中?

我知道这个问题涵盖了很多信息,但我并不是在寻找规范的答案(这可能甚至是不可能的),而是在寻找关于在哪里寻找信息的可靠指示,并希望有人也能指出我的想法/方法中的任何缺陷,因为这对我来说都是很新的,我有点迷茫。

编辑: 在研究了这些主题一段时间之后,我决定应该使用稍微不同的方法/方式来实现这种自动化。

我仍将使用 Google Authenticator PAM,但我决定简化设置过程,即在用户帐户设置了 MFA 时不通过电子邮件通知用户,而是允许他们在第一次 SSH 访问时通过 RSA 密钥进行访问,但立即强制他们按照上述教程设置自己的 MFA。这是通过在 SSH 访问上运行命令来实现的。所有后续访问都需要 MFA,我可以配置 SSH 主机以验证用户的主文件夹中是否存在 MFA 配置文件。如果存在,则用户已配置 MFA,如果 MFA 检查有效,则可以继续;否则,用户的 MFA 访问尚未配置,用户通过 SSH 访问时将被提示进行设置。

我认为它足够强大,因为我涵盖了未配置的 MFA(即google_authenticator用户主目录中的文件丢失)或被篡改(MFA 验证将失败)。如果有人知道我的方法存在任何缺陷,那将非常有帮助!

答案1

您可以在 Ansible 中做任何您想做的事情,只是可能需要一些 shell 脚本,而其中没有可以执行您想要的操作的模块。

复制现有的 ~/.google_authenticator 文件很容易。

如果用户在相关系统上生成第一个密钥,则他们必须先进行身份验证。README.md 解释了如果用户不存在密钥,如何允许身份验证:

在初始推出过程中,您可能会发现并非所有用户都已创建密钥。如果您仍希望他们能够登录,您可以在模块的命令行上传递“nullok”选项:

身份验证需要 pam_google_authenticator.so nullok

二维码并不神秘,它们otpauth URI。有了已知的秘密,您就可以自己生成这些。(google-authenticator 使用的简洁的 ASCII 颜色技巧无法很好地转换为电子邮件。)

对于用户到电子邮件的映射,请实现目录服务器。最终你不能只将一个域名添加到用户名上,尽管这可能在简单的环境中有效。我想你也可以在主机上设置别名,以便[电子邮件保护] 找到了正确的人。

答案2

您可以使用任何 BASE32 密钥作为种子。[2-7A-Z]

使用 Google Charts 生成二维码

FWzx4v5qVmSbn43oUcAbGT

您可以将该文件放在任何您想要的位置并由不同的用户拥有。

auth required pam_google_authenticator.so user=root secret=/var/lib/google-authenticator/${USER}

如果域名相同,您可以轻松地将域名附加到文件中,这并不重要。

auth required pam_google_authenticator.so user=root secret=/var/lib/google-authenticator/${USER}@domain.tld

至于文件名,您可以使用任何环境变量,我不知道电子邮件的文件名,因为我们的用户是通过 AD 使用的,所以我们使用 userprincipalname,它是[电子邮件保护]

现在更好的答案是设置 FreeIPA,它支持 AD Trusts、用户管理、Radius 身份验证后端和 Google Auth 2FA……以及许多其他好处。

相关内容