我从所有研究中总结出双因素身份验证,并得出结论,我想用“某人拥有的东西”和“某人知道的东西”来实现它
我有几个选择,但我想知道这是否真的算作双重身份验证。请记住,这是针对 SSH 访问的
防火墙 IP 过滤 - 某人必须有特定的 IP / SSH 密码。
SSH 私钥(每个用户)/SSH 用户密码
发送到个人号码的动态令牌的电话/短信验证/SSH 密钥或密码
有什么想法可以实现这些功能吗?或者还有其他替代方案吗?
答案1
防火墙 IP 过滤 - 某人必须有特定的 IP / SSH 密码。
这有在某人拥有的东西意味着“拥有”,而不是“需要”。它通常指的是硬件令牌——例如 RSA 的 SecurID fob 或 Yubikey。具体来说,它意味着某物是独一无二的,并且一次只能由一个人拥有。ssh 密码绝对不符合条件,因为密码可以通过多种方式泄露(木马 ssh 守护程序、键盘记录器、视觉观察等)。通常采用双因素身份验证来解决影响基于密码的身份验证的实际问题。
IP 地址不适合用于身份验证,因为 (a) 它们很容易被伪造,并且 (b) 多个人可能从同一个 IP 地址连接。特别是,如果人们通过路由器从家里连接,那么您就依赖于他们网络的安全性(这是一个开放的 wifi 网络吗?他们与邻居共享吗?)。
SSH 私钥(每个用户)/SSH 用户密码
这是您的“某人知道的东西”。SSH 密钥比密码更可取,因为这可以降低某人的密码被带有木马的 ssh 服务器恢复的可能性。这确实要求您的用户了解如何保管他们的私钥(确保他们始终有密码,切勿将其放在共享存储中,等等)。
发送至个人号码的动态令牌的电话/短信验证
这是专用硬件令牌的典型替代品(假设要接收发往指定号码的短信,您需要拥有相应的手机)。例如,Google 将此用于双因素身份验证,并且有许多产品可以让您自行实施此操作。
总之:
SSH 密钥 + 硬件令牌或 SMS 身份验证是一种很好且相当常见的解决方案。使用密码代替 SSH 密钥也很常见,但我建议不要使用它们,因为密码容易引发许多问题。
答案2
我认为答案是“视情况而定”。SMS 在很多方面都是一个非常薄弱的系统。我在这里介绍了其中的一些方面:http://www.wikidsystems.com/WiKIDBlog/fraudsters-defeat-poor-risk-management-not-two-factor-authentication。这里有几个风险。一个是短信是一种非常流行的安全机制,攻击者可能会以短信服务为目标,造成很大的破坏,包括对你本人。另一个是你的应用本身就具有足够的诱惑力,就像我帖子中的例子一样。
IP 地址很容易被欺骗,因此这实际上并没有增加安全性,但就像更改 SSH 的端口号一样,您可能会减少日志数据。
另外,您是否需要一个自定义 PAM 模块来实现这一点?我不熟悉检查密钥和 OTP 的 pam 模块。密钥通常由 SSH 处理,密码由 PAM 处理。
高血压,