我的一位客户要求加密他们的 Web 服务器,以防止对 mysql 数据库和 /var/log 中包含的高度敏感数据进行离线攻击。我拥有对热门主机上的专用服务器的完全 root 访问权限。我正在考虑 3 个选项 -
FDE - 这将是理想的,但只有远程访问(没有控制台)我想这会非常复杂。
Xen - 安装 XEN 并在 XEN 虚拟机内移动其服务器并加密 VM -这似乎更容易远程完成。
分区 - 加密敏感数据所在的非静态分区,例如 /var /home 等。
满足要求的最简单的方法是什么?
答案1
值得与主机核实,看他们是否可以连接 IP KVM 或安装远程访问卡(IPMI、HP iLO、iDRAC 或 RAS,视情况而定),以提供加密远程控制台。
对于任何 FDE 解决方案,您都必须拥有未加密的系统引导程序。它至少包括 MBR、引导加载程序、内核和 initrd。
可以使用类似以下方式启用网络 FDE 引导系统曼陀罗或者使用整个操作系统安装,然后通过远程运行利用pivot_root、chroot(或kexec)在cryptsetup和mount之后的功能的自定义脚本切换到真实操作系统。
使用 Xen 并拥有带有加密存储的 VM 类似于使用整个操作系统进行引导,但麻烦更少,维护也更简单。这种方法的唯一缺点是虚拟化开销。
块设备方法(LV、分区或环回)当然很容易上手,特别是当您尝试在生产系统上进行更改时。
现在的建议部分:如果您可以获得远程控制台访问权限(完整 KVM,而非串行)和如果你正在构建一台新机器,那么就使用 FDE。所有当前发行版都在安装程序中支持它,并且它将是维护最少的选项。
否则:
甚至不要考虑使用 FDE。远程访问引导系统太脆弱了,一旦出现故障,修复起来将是一场噩梦。除非您真的非常清楚自己在做什么,否则不要尝试即时转换实时系统。
如果您要为此次安全升级构建一台新机器,并且虚拟化开销可以接受,那么请选择方法 2。这将是您自己和任何其他未来系统管理员理解/维护的最明智的选择。使用此方法,您可以在虚拟机中使用操作系统提供的安装程序加密,而不是加密主机上的存储(如果您愿意的话,这两种方法在维护/迁移/等方面各有利弊)。
如果您必须在生产系统上进行此更改(我强烈建议不要这样做。让客户使用第二个系统进行适当的迁移),那么请采用方法 3 并使用 LUKS 格式的块设备(最好是逻辑卷)。
在任何一种情况下,基本系统或引导代码显然都可能被木马病毒感染,从而泄露加密密钥。除非您有大量空闲时间并且您的客户有钱可花,否则不要浪费时间尝试降低这种风险。如果您确实需要降低风险,那么您需要安装类似 Osiris 的东西。
请记住,数据将面临更大的风险,因为软件错误、备份系统、错误配置、错误密码等。
答案2
首先,请注意,您不需要创建单独的分区来加密数据;您可以使用回送挂载将文件挂载为(加密)分区。
但更重要的是,你需要一个清晰的威胁模型。你的客户到底害怕什么?
通常,托管服务器应仅供授权的客户员工和托管提供商的一些专业人员访问。他们是否担心托管提供商会试图背着他们复制数据?他们是否担心物理入侵?他们是想防止随意窥探,还是防止经验丰富的攻击者(可能反复访问)?
这将影响他们需要什么解决方案。例如,仅加密数据意味着操作系统在系统离线时仍然容易受到木马的攻击。攻击者可以使系统离线,安装木马,然后重新启动;之后,他们可以在加密区域可访问时复制数据。
此外,任何加密解决方案都需要提供密钥/密码来解锁加密。什么时候提供?如何提供?您有哪些安全渠道?例如,如果系统无法启动并需要恢复怎么办?那么,受信任的密钥持有者必须亲自到场;这可行吗?
如果不回答所有这些(以及更多)问题,就不会有合理的答案。
当然,您也可以部署某种加密并完成它,但这可能无法防止攻击,只会造成不必要的成本和虚假的安全感。
笔记:这里有一个关于在服务器上加密数据的很好的讨论:使用加密文件系统自动启动并保护 Linux 服务器