繁体   English   中英

如何在数据库中安全地存储密码

[英]How to store password securely in database

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

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

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

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

存储可解密的密码并不安全 ,也永远不会安全 如果有人破解您的服务器,那么他们就可以访问您的整个基础架构。 (可以访问交换机和路由器的网络蠕虫确实会造成混乱。)这是在https://KrebsOnSecurity.com中显示的内容。 不要这样 请。

如果您希望通过ssh或多或少地自动访问交换机,最好的选择是使用ssh的密钥管理功能。 您从中访问交换机的机器将具有一个私钥,并且每个交换机将具有一个与私钥相对应的公钥。 如果正确配置了公共密钥,则可以限制提供相应公共密钥的用户可以使用的操作。 这是一个很大的话题,对于堆栈溢出的答案来说太大了。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM