Linux 用户使用 google-authenticator 的行业标准是什么?

Linux 用户使用 google-authenticator 的行业标准是什么?

想问一下,特别是那些运行拥有大量用户的大型环境的人,是否有任何标准化或行业推荐的方法可以安全地将验证码分发给远程用户和/或强制用户在第一次通过 ssh 登录到配置了 libpam 模块的 Linux 主机时重新运行 google-authenticator,该模块要求用户每次通过 ssh 登录时都输入 unix 密码和验证码?假设系统管理员设置了帐户,是否有办法;

(a)第一次登录时不需要 google-authenticator,并强制他们运行它,以便他们可以安全地检索他们的验证码 - 或 - (b)系统管理员在创建帐户时为他们运行它,并且安全地(并且很容易,因为可能有很多用户)将代码和 unix 密码分发给用户?

请注意,系统管理员可以使用“chage”命令强制用户在第一次登录时更改其 unix 密码。

对所有实用的解决方案都很感兴趣,尤其是那些在大型环境中成功实施的解决方案。您如何将双因素代码发送给新用户?通过短信将其发送到他们的手机上?将其写在纸上并交给他们?......?

答案1

据我所知,google 2fa 没有行业标准。

如果您有配置管理解决方案,则可以使用它向所有用户部署 google 2fa。

我有和你一样的需求,就我而言,我编写了一个 Ansible 模块,它安装、配置并向用户显示紧急密钥,希望用户有足够的责任心自己写下来。

该模块还创建了一个名为“rescue”的用户,该用户始终可以访问该机器。

通过对模块进行一些添加,您可以让模块将每个用户的紧急密钥导出到您将管理/备份的某个共享网络驱动器。

我不确定这是否是完整的答案,但请看一下我的模块

答案2

我不知道有任何公开可用的解决方案(开源或其他)可以将密钥分发给本地系统。我使用这两种方法。

1)FreeIPA(Redhat IDm)

如果您可以选择使用 FreeIPA 作为用户管理系统,则可以向所有帐户添加 TOTP/Google 身份验证,并管理哪些系统需要使用 HBAC 进行 2FA。

2)开发人员编写的内部应用程序

在一个案例中,我们将 BASE32 密钥集中存储在 SQL 数据库中(使用 2016 加密),并将这些密钥分发给网关身份验证服务器 (radius)。这些服务器各自都有一个代理,用于从 API 端点提取密钥并将其写入特定文件夹。我们的内部应用程序还用于其他员工信息,因此我们在那里公开他们的二维码。我们不使用 google-auth 来生成代码,只使用 pam 模块本身。

我们也没有编写一次性使用的密钥,因为这些密钥实际上不是一次性使用的,并且这些文件的重新分配会阻止这些密钥轮换。

还要考虑本地文件权限、服务用户和 selinux,不要以 root 身份运行 pam。

相关内容