Google身份validation器/ SSH:每个用户拥有多个共享密码,并可以共享用户的共享密码

如本文所述,我想将Google的身份validation器应用程序添加到我们的SSH身份validation工具链中

但是,PAM模块似乎基本上在“linux用户”和“authentication用户”之间build立了硬连接。 这给我们带来以下两个问题:

  • 如果我们在系统上有多个用户(用于多种不同的目的),那么在他们之间共享谷歌authentication方法(TOTP共享秘密)是困难的(不可能)。
  • 如果多个真实的用户想要login同一个linux用户,这就迫使我们在真实用户中分享这个秘密。

在标准的SSH方法中,任何真人的密钥都可以添加到任何给定的linux用户的authorized_keys中,这些问题是不适用的。 如何在Google-pam设置中创build相应的对等项?

共享帐户在双因素身份validation方面效果不佳,因为2fa通常用于certificate用户是他们自称的用户。 您应该使用angular色或用户切换,而不是共享帐户:某人连接自己的凭据作为自己的帐户,然后执行sudo操作成为共享帐户。 这有多个好处,包括审计能力大大改善。

我不相信你可以让PAM按照你想要的方式工作,而不会创build一个你给所有用户的共享密钥 – 即使这样,当人们由于令牌重用而被locking时也会遇到麻烦(例如userA连接使用令牌555555,那么userB同时连接并尝试使用相同的令牌555555,因为它已被使用一次而失败)。 我相信你可以允许在股票谷歌validation器令牌重用,但基本上否定了“OTP”的整个“一次”部分。

有一种方法可以在login过程中区分人,尽pipe所有5人都使用相同的“根”帐户。

当然,PAM模块在这一点上有其局限性。

但你应该看看隐私的IDEA 。 我的这个项目可以让你pipe理任何types的令牌(也就是TOTP,HOTP Google Authenticator,硬件令牌,yubikey等),并将这些令牌分配给用户。

现在有两种可能性:

A)你可以分配几个令牌给用户root。 而且你知道哪个令牌交给了哪个人。 在服务器上安装一个privacyidea pam模块,该模块对privacyidea服务器进行身份validation。 privacyidea确定使用哪个令牌以root身份进行身份validation,并将其logging在数字签名的审计日志中。 这样你就可以推断出哪个人login了。

B)每个人都有自己的用户帐户privacyidea。 您为每个用户帐户分配一个令牌并将该令牌交给人。 现在您可以将“远程”令牌分配给root用户。 因此,用户根获得某种虚拟令牌,链接到人类用户的真实令牌。 当用户“root”进行身份validation时,您将在审计日志中获取有关虚拟/远程令牌和领域用户令牌的信息。 这样你就可以直接看到哪个人login为root用户。

共享帐户是一个坏主意

据说共享帐户是一个坏主意。 我会赞成这个说法。 避免共享帐户! 但有时可能很难避免共享帐户。 所以问题是,共享帐户有什么坏处。 如果我们可以减轻共享帐户的这个不好的情况,那么共享帐户就不会那么邪恶了。

我想关于共享帐户的一大坏事是,你无法区分哪个人login并执行了这些操作。 因此,如果您有可能区分哪个人login为shared_user_A ,那么问题可能不再那么大。 在这种情况下,2FA是一个很好的可能性,因为您可以识别哪个第二拥有因子用于login共享帐户。 而且,如果你可以将拥有因素的序号与人匹配,那么你又相对干净了。

在您的SSH场景中,您可能希望将ssh密钥(在授权密钥中)与共享的TOTP Google Authenticator结合使用。 一个人必须拥有一个唯一的ssh密钥(通过它可以识别人)和一个共享的TOTP。