【问题标题】:How to store password securely in database如何将密码安全地存储在数据库中
【发布时间】:2022-02-24 23:01:10
【问题描述】:

目前我正在开发 php 项目。该项目的主题是通过 ssh 登录到我本地网络中的某个 cisco 交换机,获取详细信息并将其填充给用户。 为此,我在 MySQL 中的数据库上创建了包含切换登录凭据的数据库。我的 PHP 代码将从数据库中获取登录凭据并在 switch 上进行计算。

我的问题是,如何将交换机凭据安全地存储在我的 MySQL 数据库中,以使其免受任何安全漏洞的影响。

【问题讨论】:

  • from any security vulnerabilities 是一个相当广泛的话题。
  • 你读过Safe Password Hashing吗?
  • @KIKOSoftware 密码散列在用于用户身份验证时很好用,但在存储用于登录其他元素的凭据的情况下也同样有效。在我的情况下,它是 cisco 开关
  • 哈希在这里不是答案,因为 OP 需要使用原始密码,而不仅仅是验证它,而是寻找加密。基本上加密密码并将加密字符串存储到数据库中的字符串字段中。然后尽最大努力确保没有人可以访问您的加密密钥;)

标签: php mysql security ssh password-encryption


【解决方案1】:

您希望将您的 cisco 交换机密码以一种可以恢复密码纯文本的形式存储在数据库中,以将其用于 ssh 连接。

即使您加密了数据库中的密码,访问数据库的程序也必须能够解密它们才能使用它们。因此,您的程序必然可以使用解密密钥。这与password-hashing mechanism available in php 完全不同。密码哈希不允许您从哈希中恢复密码,只能将用户提供的密码与哈希密码进行比较以查看它们是否匹配。

存储可解密的密码不安全,并且可能永远不会安全。如果有人破解了您的服务器,那么他们就可以访问您的整个基础架构。 (可以访问交换机和路由器的网络爬虫真的会弄得一团糟。)这就是https://KrebsOnSecurity.com 中出现的那种东西。 不要这样做。请。

如果您希望通过 ssh 或多或少地自动访问交换机,最好的办法是使用 ssh 的密钥管理功能。您访问交换机的机器将有一个私钥,每个交换机都有一个与私钥对应的公钥。如果您正确配置公钥,您可以限制提供相应公钥的用户可以使用的操作。这是一个很大的话题,对于 Stack Overflow 的回答来说太大了。

像往常一样,Digital Ocean 对此主题的文章很有用。 https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server

【讨论】:

  • 那很好,尤其是有ssh键的部分,如果swtch支持的话
  • 嗯...除非它支持公钥身份验证,否则不确定它是否真的是 ssh。无论如何,思科设备确实支持这一点。
  • 我认为是sp,但Florrent可以在手册中查到,无论如何都应该查阅
  • 亲爱的 O.jones 在我的网络中我有将近 60000 个交换机,这个 ssh 私钥将是非常乏味且几乎不可能的项目。如果还有其他出路???
  • 密钥管理是真实存在的。例如,阅读这个。 serverfault.com/questions/824180/manage-ssh-keys 使用 60K 托管交换机,我想您不会非常缺钱。而且,我猜你的机构是网络爬虫的一大目标。向思科寻求建议?
【解决方案2】:

通常,安全地存储交换机(和路由器)凭据是使用 TACACS+ 完成的,这使得登录到交换机的主机无需存储访问 TACACS+ 服务器所需的凭据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 2015-11-09
    • 2017-01-22
    相关资源
    最近更新 更多