如果在服务器受损的情况下保证访问密钥安全?

在服务器遭到入侵的情况下保持访问令牌安全的最佳策略是什么?

比方说,我有一个Linux Web服务器,我经常ssh进入。 存储在此服务器上的各种关键访问令牌(例如encryption密钥,用于备份的Amazon S3等)。 如果攻击者可以进入服务器,那么防止他们读取密钥的最佳策略是什么?

保持键不被读取是相当困难的。 使用AppArmor或SELinux对您的守护进程进行强制访问控制将启动限制读取访问的function。

利用像Vault这样的软件可以把它踢出一个档次。 就像亚马逊STS提供的临时证书系统一样,这可以应用于任何后端,您为less数存在的模块编写一个模块,从而创build临时且易于撤销的证书。 如果直接写入您的应用程序,这将保持密码以外的configuration文件。

您可以使用身份validation后端,如应用程序ID,或者如果您有硬件,可以使用超级terminal并编写基于TPM的身份validation。

  1. encryption密钥应该是不对称的,所以如果他们落入别人的手中,他们不能做任何事情,只能用密钥encryption数据(而不是解密)。
  2. S3证书应该经常自动地轮换,并且应该只被给予最less的对桶的访问权限。 备份密钥应该只有 PUT访问桶,而不是列表/删除/修改/获取等。同样,如果这些密钥落入他人手中,他们所能做的只是向你推送更多的数据。
  3. 实施保护服务器的标准手段:密钥authentication,sudo访问的强密码等
  4. 使用HIDS(如OSSEC)来审核文件访问/修改和exception警报。
  5. 只给予需要它们的特定用户的密钥读取权限。

除此之外,你正在考虑需要使用HSM ,这增加了相当多的费用和复杂性。 如果您已经在AWS上,则可以使用密钥pipe理服务来保护和审核密钥的使用情况。