我正在设置一些新的 Ubuntu 服务器,我想保护服务器上的数据,防止被盗。威胁模型是攻击者想要硬件,或者更确切地说,天真的攻击者想要数据。
请注意此部分。
威胁模型确实不是包括渴望获取数据的聪明攻击者;我推测他们会做以下一项或多项事情:
将UPS接入电源线,以保证机器连续运行。
在计算机和网络终端点之间插入一对以太网桥,该桥将通过足够范围的无线网络桥接流量,从而使主机保持网络连接。
打开盒子并使用内存总线上的探测器来获取有趣的东西。
使用 TEMPEST 设备探测主机正在做什么。
使用法律手段(如法院命令)强制我披露数据
等等。等等。
因此,我希望将磁盘上的部分数据(最好是全部数据)保存在加密分区中,并保存在某种外部介质上访问这些数据所需的密钥材料。我能想到的两种存储密钥材料的方法是:
将其存储在可通过网络访问的远程主机上,并配置足够的网络以便在启动过程中检索它。只允许对分配给安全主机的 IP 地址进行检索(因此,如果主机在另一个网络连接上启动,则不允许访问加密数据),并且如果发现机器被盗,管理员可以禁用检索。
将其存储在 USB 存储设备上,这种设备在某种程度上比主机本身更难被盗。将其放置在远离主机的位置,例如放置在通向房间另一个角落甚至另一个房间的五米 USB 电缆末端,可能会大大降低攻击者窃取它的可能性。以某种方式保护它,例如将其拴在某个固定的东西上,甚至将其放入保险箱,效果会更好。
那么我该如何设置呢?正如我之前所说,我希望将所有内容(除了可能不包含 /etc 的小型启动分区)加密,这样我就不必担心我将文件放在哪里,或者它们意外落在哪里。
我们正在运行 Ubuntu 9.04,看看是否有任何区别。
答案1
我知道选项 1 有一个巧妙的变体,叫做 Mandos。
它使用 GPG 密钥对、Avahi、SSL 和 IPv6 的组合,所有这些都添加到您的初始 RAM 磁盘中,以安全地检索其根分区的密钥密码。如果 Mandos 服务器不在 LAN 上,则您的服务器是加密块,或者 Mandos 服务器在给定的时间段内没有看到来自 Mandos 客户端软件的心跳,它将忽略对该密钥对的未来请求,并且服务器下次启动时将是加密块。
答案2
如果您只是想防范非技术攻击者,我认为最好的选择是更好的物理安全。
我的想法是这样的:
如果您正在寻找一种不需要人工交互即可输入密钥材料的引导程序,那么您将无法想出任何解决方案,该解决方案可以避免具有任何技术技能的攻击者(或者更确切地说,有能力支付具有技术技能的人)的随意盗窃。
将密钥材料放入 USB 拇指驱动器之类的东西中并不能提供任何真正的安全性。攻击者可以直接从拇指驱动器读取密钥。拇指驱动器无法知道它插入的计算机是服务器计算机还是攻击者的笔记本电脑。攻击者所要做的就是确保他们要么拿走所有东西,要么在将 USB 密钥放在 15 英尺长的 USB 延长线末端卡在保险箱内的情况下,只需将延长线插入他们的 PC 并读取密钥即可。
如果您要通过网络传输密钥,您可能会对其进行“加密”。攻击者所要做的就是窃听密钥生成过程,窃取服务器,然后对您通过网络发送密钥时进行的任何“加密”进行逆向工程。根据定义,从网络接收“加密”密钥的服务器计算机必须能够“解密”该密钥才能使用它。因此,实际上,您不是在加密密钥——您只是在对其进行编码。
最终,你需要一个(人工智能?)智能来将密钥输入服务器。它可以说“我知道我不会将密钥泄露给服务器计算机以外的任何人,而且我知道它没有被盗。”人类可以做到这一点。USB 拇指驱动器不能。如果你找到另一个可以做到这一点的智能,那么我认为你会得到一些有市场价值的东西。>微笑<
我认为,最有可能的是,你会丢失密钥并破坏数据,同时却得不到任何安全保障。我认为,与加密游戏策略相比,你最好拥有更强大的物理安全性。
编辑:
我认为我们可能对“威胁模型”一词有不同的定义。
如果您的威胁模型是硬件盗窃,那么在我看来,您提出的解决方案(即磁盘加密)根本无法抵御威胁。您提出的解决方案看起来像是针对数据盗窃的对策,而不是针对硬件盗窃的对策。
如果您想防止硬件被盗,您需要将其用螺栓固定、锁起来、用混凝土包裹等。
关于数据盗窃,我已经说了我想说的话,所以我不会再重复这个话题,只想说:如果你要把密钥放入物理设备中,而你不能保护服务器计算机不被盗,那么你也不能保护密钥设备不被盗。
我猜你最好的“廉价”解决方案是操纵某种基于网络的密钥交换。我会让一个或多个人参与其中,以便在重新启动时验证密钥的“释放”。这会导致停机,直到人“释放”密钥,但至少它会让你有机会找出请求密钥“释放”的原因,并决定是否这样做。