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