SSH:两因素验证


30

我目前有一个运行OpenSSH以及Samba和其他一些服务的Ubuntu Server 12.04。目前,我已经设置了公钥身份验证,并且我想知道是否可以设置两因素身份验证?我一直在查看当前用于我的Gmail帐户的Google身份验证器。

我发现一个看起来像它可以兼容的PAM模块,但是似乎您被迫使用密码和生成的代码。

我想知道是否可以使用Google Authenticator应用程序(或类似的东西)以及我的公钥来对SSH服务器进行身份验证?


大多数评论似乎是错误报告,其中提到无法在OpenSSH中使用PAM和公共密钥身份验证。我还发现一些部分提到它是多余的,因为我在密钥中使用了密码短语。在所有解决方案中,似乎仅允许使用Google Authenticator和密码,而不允许公用密钥。我可能会完全错过它,但我只是看不到如何实现两者。
混凝土驴

不确定为什么会有-1,这是一个非常有趣的问题,我也想知道答案(不是我可能会使用它,但即使这样,也可以藏在知识库中)
Mark Henderson

@Pierre你们是不是需要两个公钥认证,以及谷歌的OTP?
mgorven

@mgorven是的,我试图同时设置公共密钥和Google OTP。我听说有人说,只需在密钥数上输入密码短语就足够了,但这是两个因素,但我担心恶意软件会从内存中窃取未加密的密钥。我宁愿有两个完全独立的设备用于身份验证,我有点偏执。
混凝土驴

它打算在6.2中正式实现:bugzilla.mindrot.org/show_bug.cgi?
id=983#c59

Answers:


8

Red Hat已在RHEL 6.3(因此是CentOS)6.3中为OpenSSH添加了补丁,以要求多种认证机制,因此您可以执行以下操作:

RequiredAuthentications2 publickey,keyboard-interactive

有关更多详细信息,请参见发行说明

不幸的是,OpenSSH上游或Ubuntu 12.04都没有此功能,因此除非您想找到补丁并重新编译OpenSSH,否则恐怕您不走运。


我必须说,我很感谢您为找到答案而付出的努力,我当然尝试浏览Google搜索结果的几页,但所有内容都暗示您所说的我只需要使用密码和OTP。我可能会创建一个CentOS VM来使用该功能。
混凝土驴

@Pierre没有那么多的努力,我在;-)之前就知道这个功能;
mgorven 2012年

我发现了相应的错误一些进一步的注意事项。该错误包括修补程序作为附件。
罗比·巴萨克

这是上游的opensh bug。看起来类似的功能很快将在openssh中上游。
罗比·巴萨克

openssh 6.2已加入Ubuntu的开发版本,因此,除非有任何灾难,否则此支持将在预期的13.10版本中提供。它使用上游的AuthenticationMethods方法来指定多种必需的方法,以便您可以同时要求ssh密钥和PAM,而PAM则需要在Google Authenticator端进行。
罗比·巴萨克


5

您可以同时使用Google Authenticator PAM模块和公共密钥,但是一次只能用于一个给定的身份验证。也就是说,如果用户使用授权的公共密钥登录,则不需要令牌。

或者,换句话说:仅密码身份验证才需要令牌,而SSH密钥则不需要。

顺便说一下,此限制不是来自Google Authenticator模块,而是来自SSH,它仅对ChallengeResponseAuthenticationPAM 实现两因素身份验证(通过),但在提供有效的公共密钥时不会调用PAM。


这是正确的,但现在已更改。openssh 6.2添加了一个AuthenticationMethods可以将其翻转的配置参数。现在您可以同时要求两者。
罗比·巴萨克

3

这个问题来自2012年。此后,SSH发生了变化,并且SSH2协议已实现。

在较新版本的SSH(> = 6.2)上,man sshd_config提到:

AuthenticationMethods
       Specifies the authentication methods that must be successfully completed for a user to be
       granted access.  This option must be followed by one or more comma-separated lists of
       authentication method names.  Successful authentication requires completion of every method
       in at least one of these lists.

       For example, an argument of ``publickey,password publickey,keyboard-interactive'' would
       require the user to complete public key authentication, followed by either password or key-
       board interactive authentication.  Only methods that are next in one or more lists are
       offered at each stage, so for this example, it would not be possible to attempt password or
       keyboard-interactive authentication before public key.

       This option is only available for SSH protocol 2 and will yield a fatal error if enabled if
       protocol 1 is also enabled.  Note that each authentication method listed should also be
       explicitly enabled in the configuration.  The default is not to require multiple authentica-
       tion; successful completion of a single authentication method is sufficient.

此页面http://lwn.net/Articles/544640/还提到了同时使用公用密钥和PAM身份验证的可能性。


2

我知道这个问题有些陈旧,但是为了将来寻找解决方案的人们(包括我本人),也有人在谈论使用sshd_config文件中的ForceCommand选项来运行脚本,然后执行身份验证。这里有一个示例脚本您可以根据需要进行一些修改,尽管在该示例中,他是从authorized_keys文件中调用的,而不是使用sshd_config的ForceCommand在系统范围内进行调用。



0

如果您在私钥上设置了密码短语,那么您已经具有两因素身份验证。为了登录,人们需要:

  1. 您拥有的东西-您的私钥
  2. 您知道的事情-私钥的密码短语

3
两个密码进行二重身份验证。密钥本身不是有效的“拥有的东西”,因为它不是事物,而只是一条信息。事物必须不可复制,或者至少不可复制,才能用作身份验证因素。
MadHatter支持Monica 2012年

2
我完全不同意。如果密钥和证书不是“您拥有的东西”,那么它们是什么?它们绝对不是“您知道的东西”(您是否有学习SSH密钥的习惯?),也绝对不是“您知道的东西”。这是仅有的三个选择,因此通过淘汰的过程,它们肯定是“您拥有的东西”。
巴特·B

1
我同意; 对我来说,问题出在格言(您所知道的)。两因素身份验证的思想是要求具有不同属性的两个类的成员。您知道的东西很容易携带,但在您知道的同时也可以被其他人知道;因此我们添加了另一个不同的因素。“拥有的东西”只有在无法复制(或难以复制)的情况下才不同。否则,可以肯定,这不是您所知道的,但是与您所知道的在质上没有什么不同,因为其他人可以与您同时拥有它。
MadHatter在2012年

2
我绝对同意密码保护的密钥对相对于直接的用户名和密码在安全性方面有很大的改进。不幸的是,我不同意将这样的货币对视为两个因素,我们可能不得不同意不同意。
MadHatter支持Monica 2012年

3
如果您具有密码加密的私钥,则仅向服务器证明一件事:您的客户端知道私钥。并不能向服务器证明您知道密码。服务器甚至不知道密码的存在。因此,这仅仅是“您知道的事情”(因为您的客户知道),并且只是一个因素。如果攻击者仅持有一件事(您的私钥),那么您就会受到威胁。那是一个因素。争论说密码和私钥是两个因素,这只是诡辩。重要的是线上发生了什么。
罗比·巴萨克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.