使用encryption的文件系统自动引导和保护Linux服务器

我正在build立一些新的Ubuntu服务器,我想要保护他们的数据免遭盗窃。 威胁模型是攻击者需要硬件或者是天真的攻击者需要的数据。


请注意这一部分。

威胁模型不包括需要数据的智能攻击者; 我想他们会做以下一项或多项:

  1. 将UPS连接到电源线以保持机器持续运行。

  2. 在计算机和networkingterminal之间插入一对以太网网桥,以便在主机维持networking连接的足够范围的无线networking上桥接stream量。

  3. 打开盒子,使用内存总线上的探针来抓取有趣的东西。

  4. 使用TEMPEST设备来探测主机正在做什么。

  5. 使用法律手段(例如法院命令)强迫我披露这些数据

  6. 等等


所以我想要的是在encryption分区上的磁盘上的一些或理想的所有数据,以及在某种外部媒体上访问它所需的关键资料。 我能想到的两种存储关键材料的方法是:

  1. 将其存储在可通过networking访问的远程主机上,并configuration足够的networking以便在引导过程中进行检索。 只允许检索分配给安全主机的IP地址(如果在另一个networking连接上启动,则不允许访问encryption数据),如果发现机器被盗,pipe理员可以禁用该function。

  2. 将其存储在USB存储设备上,这种设备比主机本身更难以窃取。 将其远离主机(例如在通往房间另一angular落的五米USB电缆或甚至另一个房间的末端)可能显着降低攻击者采取攻击的可能性。 以某种方式保护它,比如通过将其链接到不可移动的东西,甚至把它放到安全的地方,将会更好。

那么我有什么select来设置呢? 正如我之前所说,我宁愿拥有一切(除了可能是一个小的启动分区,不包含/ etc)encryption,所以我不必担心我把文件放在哪里,重新意外着陆。

我们正在运行Ubuntu 9.04,如果它有任何区别。

我知道一个名为Mandos的选项1的巧妙变体。

它将GPG密钥对,Avahi,SSL和IPv6的组合全部添加到您的初始RAM磁盘上,以安全地检索其根分区的密钥密码。 如果Mandos服务器不在局域网中,则服务器是encryption的砖块,或者Mandos服务器在给定时间内没有看到Mandos客户端软件的心跳,它将忽略将来对该密钥对和服务器的请求是下一次启动时encryption的砖块。

Mandos主页

Mandos自述文件

如果你只是想防范非技术攻击者,我认为你最好的select是更好的物理安全性。

我的想法是这样的:

如果你正在寻找一种不需要人为干预的启动input关键材料,那么你就不会想出任何解决scheme,即使是任何技术熟练的(或更合适的)支付技术能力的人的能力)。

把关键材料放在USB拇指驱动器之类的东西将不会提供任何真正的安全。 攻击者只能读取拇指驱动器的钥匙。 拇指驱动器无法知道它插入的计算机是服务器计算机还是攻击者的笔记本电脑。 所有的攻击者所要做的就是确保他们要么拿走所有的东西,要么就是在一个15英尺长的USB延长电缆末端的USB钥匙被卡在一个保险柜内,只需将扩展电缆插入他们的电脑并阅读钥匙。

如果你打算通过networking传输密钥,你可能会“encryption”它。 攻击者所要做的就是窃听密钥的过程,窃取服务器,然后对你在networking上发送密钥时所做的任何“encryption”进行逆向工程。 根据定义,从整个networking接收“encryption”密钥的服务器计算机必须能够“解密”该密钥才能使用它。 所以,实际上,你并没有对密钥进行encryption – 你只是对它进行编码。

最终,你需要一个(artifical?)情报来input密钥到服务器。 一个可以说“我知道我不是泄露任何人的密钥,而是服务器计算机,我知道它没有被盗。 一个人可以做到这一点。 USB拇指驱动器不能。 如果你发现另一种可以做到的情报,那么我认为你会有一些适销对路的东西。 >微笑<

我认为,最有可能的是,您将失去密钥并破坏您的数据,而不会获得任何安全性。 代替你使用encryption游戏的策略,我认为你最好拥有更强的物理安全性。

编辑:

我想我们可能是从“威胁模型”这个术语的不同定义出发的。

如果您的威胁模型是硬件盗窃,那么您提出的解决scheme就是:磁盘encryption就像我所看到的那样,对于抵御威胁无所作为。 您提出的解决scheme看起来像防范数据盗窃的对策,而不是窃取硬件。

如果您想阻止硬件被盗,您需要将其locking,locking,将其包裹在混凝土中等。

我已经说过我想说的是:数据被窃取了,所以我不会再说一遍,只能说:如果你打算把密钥放到物理设备上,而且你无法保护服务器电脑被盗,那么你也无法保护关键设备不被盗。

我想你最好的“便宜”的解决scheme是钻井某种基于networking的密钥交换。 我会把一个或多个人放在循环中,以便在重新启动时validation密钥的“释放”。 这将导致停机,直到人们“释放”钥匙,但至less它会让你有机会找出为什么要求释放钥匙,并决定是否这样做。