【问题标题】:Rails: How can I securely store and reuse passwordsRails:如何安全地存储和重用密码
【发布时间】:2015-07-18 04:25:38
【问题描述】:

所以我有一个可以在其他服务器上自动执行远程任务的应用程序。它通过 SSH 连接到服务器并通过该连接执行命令来做到这一点。

我遇到的问题是如何处理这些服务器的用户名/密码。在大多数情况下,我无法为 SSH 设置基于证书的身份验证,并且无法使用用户/密码。虽然我不希望将密码以纯文本形式存储在数据库中,但我不知道或理解一种可以加密存储密码的方式,但仍允许应用程序访问密码以进行身份​​验证远程服务器。 这有可能吗?

感谢您的帮助!

【问题讨论】:

  • 这是可能的,但老实说,如果您不熟悉密码学、密钥管理以及与您的应用程序和网络架构相关的许多其他安全最佳实践,我不建议您开发这样的东西能够安全地处理此类敏感信息的加密/解密。 (我这么说是因为从你的问题中我了解到你对加密一无所知,如果我错了,请纠正我)。以防你以后需要一个好的密钥管理服务,AWS 最近推出了一个:aws.amazon.com/kms/?nc2=h_l3_dm
  • 感谢您向我介绍 AWS 的服务。我将无法在这里使用 AWS,因为这些机器都在一个封闭的系统中,无法访问外部网络。我坦率地承认,除了常识告诉我之外,我对密码学和密钥管理最佳实践还很不熟悉。我可以看到在保留应用程序功能的同时实现密码加密的唯一方法是要求我将密钥存储在应用程序服务器上,但这样做似乎会使加密变得多余,而不仅仅是减慢想要访问的人的速度到密码。

标签: ruby-on-rails encryption ssh passwords


【解决方案1】:

您可以使用公钥/私钥登录,而不是 SSL 证书。 为此,您只需生成密钥对,并将您的公钥存入目标机器上的 .ssh/authorized_keys 文件中。

如果您有多个帐户,并且想使用某些系统进行公钥管理,您可以使用 Kerberos/LDAP 解决方案,或 emcssh - ssh 的分散式公钥基础设施。

免责声明:我是 emcssh PKI 系统的作者。

【讨论】:

  • 我认为与此类似的东西是我将要做的。当用户添加新服务器时,我会提示他们一次性使用用户名和密码。我们将使用它连接到设备并将公钥安装到 .ssh/authorized_keys 文件中,并使用该密钥进行后续连接。
  • 您可以将您的公钥连同一些手册存放在您的网站上,并让用户在为您创建帐户时只需创建/填写文件authorized_keys。只需使用您的密钥大小 4096 位。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 2016-04-01
  • 2010-12-07
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
相关资源
最近更新 更多