Linux上除S / Key以外的真正的一次性密码(OTP)?

从不受信任的计算机login到远程系统当然不是一个好主意。 但是有时候这是非常必要的。 公开未encryption的SSH密钥文件当然是不可以的。 input正规密码也不是。

S / Key似乎是“通常”的解决scheme,但它需要严格遵循列表中的密码顺序。 这对于共享帐户来说是不希望的,因为所有各方都需要同步使用该列表。

任何方式使OTP没有要求的使用顺序? 其他想法?

背景:两个pipe理员共享一个帐户。 另一个应该被给予一个“紧急信封”,其中包含了该帐户的信息。 只有在其他pipe理员不可用的情况下,才允许封印。

我们为此使用OTPW 。 简单的实现。 轻松复制密码列表。 系统通过号码请求密码,所以在保持列表同步的时候没有任何问题。

S / Key非常适合这种情况,但是您需要做更多的工作。

为每个紧急信封创build特殊帐户。 这些帐户被添加到sudoers,并可以承担根。 这可以为您提供您应该具有的审计跟踪(每个信封一个帐户,每个用户一个信封)以及您需要的灵活性。

紧急情况发生后,pipe理员必须将信封带回给下一个密码,这会给您提供审计线索。

我已经有一段时间了Yubikey的粉丝。

http://www.linuxjournal.com/article/10166

这个问题似乎是你正在尝试使用组帐户。 我看到两种可能性

  1. 为每个用户分别login,然后将它们分配给共享帐户。
  2. 如果操作系统支持它,请为两个login分配相同的UID号码。

在第二种情况下,您必须testing用户所认为的s / key(UID或UID号码),以及是否可以为每个login名分配一个单独的列表。

(我承认 – 我从来没有在Linux上试过#2,但是我们很久以前就用它来给操作员一个备用的shell,这实际上是一个菜单系统,它们以root身份运行一些固定的命令。天,你只要做到这一点瓦/ sudo)

看看mobile-otp – 这是一个“便宜”的软件令牌,你可以在支持java的手机上运行。 我只使用networking应用程序成功地使用它,但正如我所看到的,他们也有pam模块。

或者有wikid ,但我从来没有使用过这个。

这是一个古老的线程,但有人可能会偶然发现。 有两个有趣的要求:

  1. 一个人分享一个帐户

  2. 我认为应该只工作一次。

LinOTP可以解决这个问题。 您可以将不同供应商的多个不同的OTP令牌分配给一个用户。 (req。1)

另外你可以创build一个固定的密码令牌。 把它放在信封里。 现在来了一个很酷的部分:您可以定义一个令牌可以用来成功validation的频率。 因此,您可以为此紧急包络令牌设置此值= 1(请求2)

像Vasco Vacman这样的东西提供RADIUS身份validation,您可以使用常规PAM来login到Linux。 他们需要一个物理令牌,而且价格昂贵,所以可能不适合你目前的情况。

另一个强大的身份validation备用将是RSA SecurID。

优点:从“经典”遥控器设备到软件令牌(包括iPhone!)到“OnDemand”(即通过短信/电子邮件发送的OTP代码),这些都是我可能用于这种情况的很多因素。 (即,你有文章中提到的所有“选项”)

优点:易于与几乎任何系统集成,在大多数系统中启用强大的身份validation

优点:易于使用,从最终用户的POW。

缺点:价格。 这不是市场上最便宜的解决scheme。

我曾经使用OPIE。 它要求通过编号密码,所以你知道列表上的哪一个想要的。

但现在我已经转移到Yubikey了。

我不明白为什么标准的S / Key不能满足你的要求。

每次有人login时,都会向其发送一个可见的“挑战”,其中包括所需密码的索引号。 有足够的信息来找出要求打印的一次性密码列表中的哪一行…没有与任何其他共享帐户的用户进行任何协调。 (另一种看待这种情况的方法是由计算机本身提供所有必要的协调,而不需要多个用户彼此交谈。)类似地,有足够的信息(索引号和种子)给予程序重新生成请求的密码(当然你知道秘密)。

信封可以包含整个一次性密码列表的另一个印刷副本,或者仍然有效的原始密码(非密钥)。 (当然,为了最大的安全性,如果信封是打开的,你可以改变它所包含的内容[OTP的序列或原始密码]。)

所以skey似乎很容易满足这两个要求。 告诉我为什么你正在寻找不同的东西?