【问题标题】:What are your suggestions for storing AWS authentication data?您对存储 AWS 身份验证数据有何建议?
【发布时间】:2008-12-06 21:40:38
【问题描述】:

场景:用 PHP 编写的 Web 应用程序使用 Amazon Web Service,并且必须随身携带访问密钥 ID 和秘密访问密钥才能正常运行。目前是否有安全存储这些数据的建议和/或 API?

我的想法是基于从本地服务器变量创建的密钥将其对称加密到文件中。这样一来,如果有人通过 FTP 获取文件的副本、丢失带有文件复制的笔记本电脑等,那就是 [希望] 胡言乱语。我担心的是,熟练的攻击者可以上传他们自己的脚本来解密它。

这似乎是一个common situation,我从来没有为它找到一个舒适的解决方案。显然我不能使用单向哈希,因为我需要原始数据来创建 HMAC 以发送到 AWS。相关 S.O. 的链接非常欢迎提问。

【问题讨论】:

标签: php encryption amazon-web-services passwords


【解决方案1】:

啊。安全问题。

我认为您应该在这里问的问题是您如何处理,例如您的 php 配置文件中的 mySQL 密码?

坦率地说,如果有人设法获得了您的文件副本,那么无论如何您都需要重新考虑安全性。对于我自己的使用,我通常只将密码保存在一个地方,(在应该使用它们的服务器上)并确保我每次使用随机生成的密码(将其粘贴到配置文件中,瞧!)

说实话,如果不是您自己的主机,任何敏感数据都可能受到损害。

如果是您自己的主机,我建议在 Linux 中使用适当的权限,并使用PHPSuExec 确保只有您编写的脚本才能访问这些文件。

无论如何,要回答您的原始问题,您的 AWS 访问/密钥与 MySQL 密码相同,好的,它有可能让某人访问您的服务,但它不会让他们访问您的个人细节。即使使用对称加密,如果您的脚本存在安全漏洞,也可以访问信息。

简而言之,如果您将这些密钥放在除您之外的任何人都可以访问的任何地方,您就是在冒险。您对 Am​​azon 的服务器不会受到威胁的信任程度如何?

我的建议是尝试尽可能多地增加安全性,但请注意您的帐户,我通常会运行一个 cron 作业向我发送一封电子邮件,其中包含对我的 S3 帐户的更改(上传的新文件,新桶等),从中我可以知道发生了什么。

没有简单的解决方案,它是保护系统每个单独层的组合。我的意思是,如果您使用对称加密,那么密码必须存储在某个地方,对吗?还是每次都要输入?

希望对你有帮助

【讨论】:

    【解决方案2】:

    我的想法是根据本地服务器变量创建的密钥将其对称加密到文件中。这样一来,如果有人通过 FTP 获取文件的副本、丢失带有复制文件的笔记本电脑等,这 [希望] 是胡言乱语。我担心的是,熟练的攻击者可以上传他们自己的脚本来解密它。

    这不会有什么坏处,但最终它只是通过默默无闻的安全性,因为可以读取文件的人可能也可以读取和反向工程您的代码。每次服务器启动时都没有输入密码或以其他方式提供秘密,加密将无济于事。它只是将问题转移到您将如何保护加密密钥(也需要服务器可以访问)?

    您必须强化和设计您的应用程序和服务器(不要忘记操作系统,以及对操作系统的远程访问),这样一开始就没有未经授权的人可以读取系统上的文件。

    如果您担心有人可以物理访问盒子,请专注于物理安全以阻止这种情况发生。

    【讨论】:

    • 数据何时存储在客户端呢?客户端/攻击者(呵呵)已经具有物理访问权限。这是一个合理的担忧。
    【解决方案3】:

    我按照您的建议使用对称加密。当我启动我的服务器时,我需要给它一个密钥来解密包含身份验证数据的文件。

    当然,黑客可以进行内存转储并以这种方式读取密码,但这比读取明文文件要困难得多。没有完美的解决方案,安全性始终是风险和易用性之间的折衷。

    所以服务器安全仍然是关键问题,它只是一个安全多少才足够的问题。我建议查看Bastille Linux 或类似的东西来强化您的服务器,但这完全是另一个话题。

    【讨论】:

      猜你喜欢
      • 2011-10-03
      • 2013-11-19
      • 1970-01-01
      • 2023-03-06
      • 2021-01-23
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多