如何使用密码生成器进行远程登录的身份验证?

如何使用密码生成器进行远程登录的身份验证?

我想通过添加另一个因素来加强 SSH 登录的身份验证:密码生成器设备或手机上的密码生成应用程序。默认设置中唯一明显的选项是固定密码和密钥对。我该怎么做?

(如果我使用密码加上密码生成器,这提供了双因素身份验证(2FA):密码是“我知道的”,密码是“我拥有的”。)

答案1

一种方法是使用 Google 提供的工具Google 身份验证器

  1. 安装libpam-google-authenticator 安装 libpam-google-authenticator

    • 要不就sudo apt-get install libpam-google-authenticator
  2. 编辑/etc/pam.d/sshd以包含模块:

    • sudoedit /etc/pam.d/sshd
    • 然后在文件顶部并保存:

      auth required pam_google_authenticator.so
      
  3. 编辑你的 SSH 配置文件来开启挑战:

    • sudoedit /etc/ssh/sshd_config然后将响应身份验证从:

      ChallengeResponseAuthentication no 
      

      ChallengeResponseAuthentication yes
      

      然后保存文件。

  4. sudo restart ssh重新启动 SSH

  5. 跑步google-authenticator

    • 这会为您提供密钥、验证码和紧急刮擦代码。它还会询问您一些速率限制问题。

移动应用程序:

您需要其中一个才能在另一台设备上接收身份验证码。

相关且有用的:

请注意,将密码与一次性密码组合在一起是双因素身份验证:它将“您知道的”(密码)与“您拥有的”(密码生成器设备)组合在一起。另一方面,如果您将一次性密码与 SSH 密钥对组合在一起,那么一切都取决于“您拥有的”。当两个身份验证因素属于同一类型时,您就不是双因素身份验证;有时这被称为“单因素半身份验证”。

答案2

Google Authenticator 非常适合您的个人服务器,但您可能会发现它与您现有的身份基础架构不太匹配。如果您想探索其他选项,请考虑使用 RADIUS 作为身份验证协议和 pam-radius 插件。所有面向企业的双因素身份验证系统都支持 radius。我们编写了一份关于如何添加的文档通过 pam-radius 对 Ubuntu 进行 WiKID 双因素身份验证

使用 radius 可以将 SSH 以外的其他系统绑定到同一个身份验证服务器。您还可以通过 freeradius 将身份验证请求路由到 LDAP,然后再路由到您的 2FA 服务器,以将授权与身份验证分开。顺便说一句,您可以对 AD 执行相同操作。

答案3

我敦促大家把下面这句话放在顶部,而不是底部如上所述/etc/pam.d/sshd(现已更正):

auth required pam_google_authenticator.so

否则你的系统将保持容易受到暴力攻击您的密码,从而泄露双重身份验证的第一部分:您的密码。

系统将首先要求您输入验证码,然后输入密码(无论代码是否正确)。如果其中一个错误,则需要重新输入两个密码。您可以反过来配置,但在当前默认的 ubuntu (15.04) sshd 配置中,这种更改更难描述。

有关为什么需要它的详细信息,请查看此问题:

https://github.com/google/google-authenticator/issues/514

相关内容