Linux 服务器磁盘加密的方法

Linux 服务器磁盘加密的方法

有哪些方法可以完全加密远程服务器(例如,位于数据中心的服务器)上的磁盘?在 Windows 上,我们只需使用 TPM 打开 Bitlocker 即可。然后服务器可以重新启动,攻击要么需要在运行时接管机器并转储 RAM,要么破坏 TPM。在 Linux 上,有什么可用的方法?

到目前为止,我已经找到了一份 IBM“蓝图”,其中描述了如何在 TPM 中存储 dm-crypt 密钥。这是最好的方法吗?

http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/topic/liaai/tpm/liaaitpm_pdf.pdf

答案1

要了解问题的最佳解决方案,您需要明确您想要实现的目标。换句话说,您的威胁模型是什么?谁是您的攻击者?您提到要绕过加密需要“在运行时夺取机器”(我假设您的意思是对其进行黑客攻击),但对于共置服务器来说,这是最有可能的情况。磁盘加密主要用于物理盗窃的情况。

您还需要考虑要保护哪些数据。您提到“完全加密磁盘”,但这是否需要加密例如 /usr?如果您运行的是标准发行版,则没有什么有趣的内容。如果不了解服务器将包含哪些内容,很难提出建议。

但为了给出更具体的建议,请考虑以下假设的服务器。它包含以下内容:

  • 一个展示一些产品的简单网站
  • 用 Rails/Django/whatever 编写的基本 CRUD 订单应用程序
  • 用于存储客户信息和订单的 Postgres DB

在这些组件中,只有数据库真正需要保护,因此我的处理方式如下:

  • 让机器的大部分不加密(但尽可能使文件系统只读)
  • 为数据库创建一个单独的分区,并使用任何可用的 Linux 加密系统(ecryptfs 等)使用强密码对其进行加密。
  • 每次重启后,使用存储在其他地方的密钥登录并挂载分区。
  • 重启时让服务器提醒我

您提到了 TPM,但 TPM 在许多情况下对您没有帮助,例如如果攻击者获得管理权限。TrueCrypt 有拒绝因此支持 TPM。

答案2

您还可以使用带有 dm-crypt 的 TPM
https://github.com/shpedoikal/tpm-luks
http://code.google.com/p/cryptsetup/wiki/FrequentlyAskedQuestions#2._Setup

如果集成在 initrd ramdisk 上,占用空间较小的 SSH 服务器可以远程输入密码解锁驱动器。

请注意,上述解决方案都无法充分保护服务器免受具有物理访问权的熟练攻击者的攻击。

相关内容