双因素authentication

我已经煮沸了两个因素authentication,从我所有的研究结果,并得出结论我想用“某人某事”和“某人某事知道”

我有几个选项,但我想知道如果真的算作2因素authentication。 请记住,这是为了SSH访问

  1. 防火墙IP过滤 – 有人必须具有特定的IP / SSH密码。

  2. SSH私钥(PER用户)/ SSH用户密码

  3. 电话/短信身份validation发送到一个人/ SSH密码或密码的dynamic令牌

任何想法,如果这些将是可行的? 或者有其他的select

防火墙IP过滤 – 有人必须具有特定的IP / SSH密码。

有些东西是有 “拥有”的意思,而不是“要求”。 它通常指的是硬件令牌 – 就像RSA的SecurID fob或者Yubikey。 特别是它蕴含着一个独特的东西,一次只能由一个人拥有。 一个SSH密码绝对不符合资格,因为密码可以通过多种方式(trojan ssh守护进程,按键logging器,视觉观察等)妥协。 通常采用双因素身份validation来处理影响基于密码的身份validation的非常实际的问题。

IP地址不适合用于身份validation,因为(a)它们相当容易被伪造,(b)多个人可能从相同的IP地址进行连接。 特别是,如果人们通过路由器从他们的家中连接,那么你依靠他们networking的安全性(它是一个开放的无线networking吗?他们是否与邻居分享?)。

SSH私钥(PER用户)/ SSH用户密码

这是你的“某人知道的东西”。 SSH密钥比密码更受欢迎,因为这会减less被恶意SSH服务器恢复某人的密码的可能性。 这确实要求您的用户了解如何照顾他们的私钥(确保他们总是有密码,不要将他们放在共享存储上等)。

电话/短信身份validation发送到一个人的号码的dynamic令牌

这是一个典型的专用硬件令牌的替代品(假定接收SMS消息给定数字的能力要求您拥有适当的手机)。 例如,Google将其用于双因素身份validation,并且有许多产品可让您自行推出。

综上所述:

SSH密钥+硬件令牌或SMSauthentication是一个很好且合理的常见解决scheme。 密码,而不是SSH密钥也很常见,但我喜欢反对他们,因为密码容易出现一些问题。

我想这里的答案是“这取决于”。 短信在很多方面都是一个非常薄弱的​​系统。 我在这里覆盖他们一堆: http : //www.wikidsystems.com/WiKIDBlog/fraudsters-defeat-poor-risk-management-not-two-factor-authentication 。 这里有几个风险。 其中之一就是SMS是一种非常受欢迎的安全机制,攻击者将目标locking在SMS服务上,造成很大的破坏,包括对你的破坏。 另一个是,你的应用程序是足够诱人的目标本身,在我的文章中的例子。

IP地址是微不足道的恶搞,所以不会真正增加安全性,但就像更改SSH端口#,你可能会减less你的日志数据。

另外,你会需要一个自定义的PAM模块来这么做吗? 我不熟悉将检查密钥和OTP的pam模块。 密钥通常由SSH和PAM密码处理。

HTH,