Debian 中的磁盘加密

Debian 中的磁盘加密

我有一台运行生产应用程序的 Debian Lenny 服务器。最近,一位顾问要求我们启用磁盘加密以确保数据安全。他认为全磁盘加密将要求我们清除磁盘并从头开始服务器设置,因此加密 MySQL 和 Web 根文件的存储就足够了。

因此,我正在考虑创建一个新的分区并将 apache 站点根目录以及 MySQL 数据文件移动到那里,并使用一些包/工具对其进行加密。

现在,我的问题很简单:

  1. 我的计划正确吗或者有更好的解决方案?
  2. 针对这种情况我应该留意哪个包/工具?
  3. 如果要采用这种方法,我该如何将 MySQL 数据文件夹移动到新分区?

感谢您的时间和帮助,提前致谢!

问候,

埃姆兰

答案1

首先要记住的是,顾问并不是承担性能和麻烦的负担的人。无人值守的重启将不再可能,为了避免安全隐患,应该只有极少数用户拥有允许重启的加密密码。一刀切的加密建议往往是不恰当的。

数据加密可防止一个特定的攻击场景,这可能不是最有可能的漏洞。数据加密可以保护你免受攻击者的攻击带着你的数据驱动器走出去。如果您担心这种情况,请考虑更好的物理保护措施 - 例如,锁定机架前面的面板。

数据加密通常无法提供太多保护,以防攻击者通过网络入侵您的 Web 应用。即使磁盘上的数据已加密,攻击者也很可能拥有与您的 Web 应用相同的权限,包括读取和写入数据库。

不要忘记考虑这会对你的 MySQL 数据库造成的性能影响。对加密磁盘的读写将是明显慢。如果您已经遇到性能问题,这可能会造成严重破坏。

MadHatter 和 JanC 给了你很好的建议。正如 JanC 所说,可能的无需擦拭机器即可做到这一点,但对于您的目的而言,这听起来没有必要。

您需要记住的另一件事是加密交换分区。为此,您需要禁用交换,重新启动以使其消失,安全删除交换分区,加密它,重新启用交换,然后重新启动机器。我不太清楚如何在 Debian 中设置它,但您需要在启动过程的早期输入密码。

如果您无法加密交换分区(以及您的 /tmp 目录和您的应用程序可能写入的任何其他位置),您的部分敏感数据将以未加密的形式写入磁盘。

答案2

我认为您的计划大体上是正确的;加密分区将为您提供一块加密的安全存储,而无需重新安装整个机器的痛苦。

请注意,如果无人值守地启动,这台机器将不再有用。它会启动,因为根分区将未加密,但它无法启动 mysql;您必须在每次重新启动时手动输入加密密码。您当然可以编写脚本,但加密密码会存储在机器上,这确实违背了练习的目的。所以在执行此操作之前,请确保您想这样做。

我写了一份相当详细的技术说明,介绍了我如何做到这一点,您可以在http://www.teaparty.net/technotes/crypto-fs.html如果你感兴趣的话。这项工作是在 Fedora 上完成的,但它并不是 Fedora 独有的。

一旦设置了加密分区,您只需使用“cp”或“mv”将文件放到其中,并通常从它们的旧位置(/var/lib/mysql 或任何位置)链接它们。

答案3

全盘加密最好使用 cryptsetup 和 LUKS。最简单的设置方法是在进行新安装时;安装程序中有一个选项可以帮您完成所有事情。

如果不行,你就得手动操作了。网上有很多教程,例如这里

或者,您也可以使用以下方式进行基于文件的加密加密文件系统(这是否足够好取决于您要防范什么)。

答案4

我首先要问你的顾问磁盘加密是为了防止什么。它所做的一切(如果你已将其设置为需要密码才能解密)就是阻止人们在窃取系统时获取数据。它不会在系统运行时保护数据 - 如果你需要这样做,那么这是错误的方法。

如果你确实加密,那么你需要确保加密 3 件事:

  1. 数据磁盘/分区
  2. 交换分区
  3. /tmp 分区(以及 Web 服务器可能使用的其他临时文件存储)

这个 Debian 指南可能会帮助你入门。为了偷懒,我可能会建议你有一个小型加密分区,你需要一个密码来解锁,其中包含解锁所有其他分区的密钥。这比在启动时输入多个密码要容易得多。

最后,检查当前的 CPU 和 I/O 负载。如果您已经运行了高负载,那么您可能没有所需的备用容量。您可能需要考虑更改硬件平台或对其进行升级。

相关内容