我的一个客户已经要求他们的networking服务器被encryption,以防止对mysql数据库中包含的高度敏感的数据的离线攻击以及/ var / log。 我有一个受欢迎的主机专用服务器的完全的根访问权限。 我正在考虑3个选项 –
FDE – 这将是理想的,但只有远程访问(无控制台), 我想这将是非常复杂的 。
Xen – 安装XEN并在XEN虚拟机中移动他们的服务器并encryption虚拟机 – 这看起来更容易远程执行。
Parition – encryption敏感数据所在的非静态分区,如/ var / home等
什么是简单的方法满足要求?
如果能够连接IP KVM或安装远程访问卡(IPMI,HP iLO,iDRAC或适当的RAS)来提供encryption的远程控制台,则值得与主机核对。
使用任何FDE解决scheme,您将必须具有未encryption的系统引导程序。 至less,这将包括MBR,引导程序,内核和initrd。
通过使用Mandos或使用整个操作系统安装,然后通过在cryptsetup和mount之后远程运行使用pivot_root,chroot(或kexec)的function的自定义脚本来切换到实际操作系统,可以联网启用FDE引导程序系统。
使用Xen和具有encryption存储的虚拟机类似于使用整个操作系统进行自举,但是使用时间更less,维护更简单。 这种方法唯一的缺点是虚拟化开销。
块设备方法(LV,分区或回送)当然很容易,特别是如果您要在生产系统上进行更改。
现在的build议部分:如果你可以获得远程控制台访问(全KVM,而不是串行) ,你正在build立一个新的机器,然后去FDE。 所有当前的发行版都支持安装程序,它将是最less的维护选项。
除此以外:
甚至不考虑使用FDE。 远程访问引导程序系统太脆弱了,当它断开时,这将是一个噩梦修复。 除非你真的真的知道自己在做什么,否则不要试图直接转换实时系统。
如果您正在为此安全升级构build新计算机,并且虚拟化开销可以接受,那么请采取方法2.对于您和任何其他未来的系统pipe理员理解/维护,这将是最为理智的select。 使用这种方法,您可以在虚拟机内使用操作系统提供的安装程序encryption,而不是在主机上对存储进行encryption(如果需要,pro / cons都可以进行维护/迁移等)。
如果您必须在生产系统上进行这种更改(我强烈build议不要这样做,让客户为第二个系统进行适当的迁移支付),然后按照方法3使用LUKS格式的块设备(最好是逻辑卷) 。
在任何这些情况下,基本系统或引导程序代码显然可能会被攻击,以便揭示encryption密钥。 不要浪费你的时间来减轻这种风险,除非你有很多的时间在你的手上,而你的客户有钱可以燃烧。 如果你必须减轻它,那么你会想要安装像奥西里斯这样的东西。
请牢记,数据将因软件错误,备份系统,configuration错误,密码错误等而面临更多风险。
首先,请注意,您不需要为encryption数据创build单独的分区; 您可以使用回送挂载将文件挂载为(encryption的)分区。
但更重要的是,您需要一个明确的威胁模型。 你的客户究竟担心什么?
通常,托pipe服务器只能由授权客户人员和托pipe服务提供商的一些专业人员访问。 他们是否担心托pipe服务提供商会试图将数据拷贝到自己的背后? 他们害怕身体闯入吗? 他们是想要防止偶然的窥探,或者从一个复杂的攻击者,可能反复访问?
这将影响他们需要的解决scheme。 例如,仅对数据进行encryption意味着操作系统在系统处于脱机状态时仍然容易安装木马。 攻击者可以使系统脱机,安装木马,重启; 之后他们可以从encryption区域复制数据,同时可以访问。
另外,任何encryption解决scheme都需要提供一个密钥/密码来解锁encryption。 什么时候提供? 怎么样? 你有什么安全的渠道? 例如,如果系统无法启动,需要恢复? 有人相信有钥匙将不得不实际存在; 那可行吗?
没有回答所有这些问题,也没有合理的答案。
当然,你可以部署某种encryption方式并加以解决,但这样做可能无法抵御攻击,只会造成不必要的成本和虚假的安全感。
注意:关于在服务器上对数据进行encryption的讨论有一个很好的讨论: 使用encryption文件系统自动引导和保护Linux服务器