Linux:LUKS和多个硬盘驱动器


11

我在RAID-1系统加密设备(LUKS上的LVM)上安装了Debian Linux系统(amd64),并且RAID-6的磁盘数量大于或等于4,我将在其中放置数据(LUKS以及LVM)。

我认为基本思想是解锁系统加密分区(在本地启动时或通过ssh),并将密钥文件存储在RAID-6加密分区的/ etc / crypttab中。这会带来安全风险吗?我的意思是……如果任何人都只能在本地/远程进入我的系统,那将是毫无用处的,而且我认为在服务器上运行的许多服务很容易“生根”(例如SSH)。是否有替代方法(除了通过SSH解锁分区之外,这可能是个问题,因为例如备份操作甚至在安装数据分区之前就已开始)。

在另一台计算机上,我将使用具有LUKS + greyhole(无RAID-6)的多个磁盘进行备份,而通过输入10倍相同的密码来解锁10个磁盘将是一件很痛苦的事情……


如果某人可以闯入您的系统并成为root用户,则无需获取加密分区的密钥。从根目录保护它是没有意义的(没有特殊硬件(例如TPM或在虚拟机中运行)是不可能的)。
吉尔(Gilles)'所以

打扰一下 即使我是root,也必须提供密钥文件/密码来解锁LUKS分区。我想你的意思是,如果某人成为root,它就可以完全访问我的加密数据。不幸的是,这是完全正确的,因为一旦安装了加密分区,无论是否加密,都不会有任何区别。那么,虚拟机的优势是什么?那么,为什么加密完全有帮助呢?是唯一拒绝通过SSH和类似服务访问root的解决方案吗?但是,即使黑客以普通用户的身份进入系统,他通常也具有对每个文件的读取权限,不是吗?
user51166

1
确实,如果有人在您的系统上是root用户,则他们可以访问所有内容。VM可能意味着他们可以访问VM中的所有内容。加密的唯一用途是有人盗用了您的硬件。
吉尔(Gilles)'所以

是的,在这种情况下,我们可以争辩说,存储数据的唯一几乎安全的方法是与所有网络断开连接并集成在建筑物中的加密计算机。这样,任何人都可以使用键盘来窃取您的数据而无需重新启动系统。我最好将我的系统与Internet隔离开来,因为它将作为备份服务器,因此仅需要LAN访问即可。再说一次……如果使用VPN或其中一台局域网计算机被感染,备份计算机也将被暴露。您将如何解决这些问题?
user51166 2012年

Answers:


7

您可以/lib/cryptsetup/scripts/decrypt_derived在其中使用,crypttab以自动将一个磁盘中的密钥用于另一个磁盘。

decrypt_derived 脚本是Debian的cryptsetup软件包的一部分。

将密钥从sda6crypt添加到sda5的小示例:

/lib/cryptsetup/scripts/decrypt_derived sda6crypt > /path/to/mykeyfile
cryptsetup luksAddKey /dev/sda5 /path/to/mykeyfile
ls -la /dev/disk/by-uuid/ | grep sda5
echo "sda5crypt UUID=<uuid> sda6crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived" >> /etc/crypttab
shred -u /path/to/mykeyfile # remove the keyfile

由于当今要真正删除文件非常困难,因此请确保/ path / to / mykeyfile位于加密驱动器上(sda6crypt在我的示例中将是一个不错的解决方案)。

通常,您可以通过使用用户空间文件系统加密(例如通过)添加额外的安全层encfs


这样,我就不需要将密钥文件存储在磁盘上。那样就好了。但是,您是否认为值得麻烦(例如,将密钥文件存储在加密的根设备上“足够安全”)?我有任何疑问,请问一下意见。谢谢你的建议。
user51166

该解决方案decrypt_derived的唯一优势是没有密钥文件。如果某人可以获得root访问权限,那么您通常还是会迷路。对于入侵者而言,读取密钥文件可能比运行脚本要容易一些。为了获得更高的安全性,您可以使用例如TOMOYO Linux,AppAmor,SMACK,SELinux,grsecurity等来增强您的系统,但这需要付出额外的努力。那么,是否值得的问题就变得更加重要。如果驱动器在派生/存储密钥的位置崩溃,请不要忘记备份密钥或单独的密钥。
jofel 2012年

我还计划使用grsecurity或类似的软件(不是一开始就使用,但是有空的时候我会保护它)。我正在考虑仅使用密码,而不使用密钥文件。密码将存储在RAM中,所以我想您也可以对此进行争论。
user51166

没有办法删除任何地方的密钥文件,除非覆盖整个文件系统(甚至在磁盘出现故障时也不能这样做)。日记文件系统不会使情况变得更糟。
吉尔斯(Gilles)'所以

@Gilles由于我不是安全删除文件的专家,所以我编辑了答案。我现在建议将密钥文件存储在加密的驱动器上。
jofel 2012年

1

根据jofels答案,这是相同的示例,但不必将密钥存储在文件中。密钥在命名管道中传递,该管道不存储任何内容到磁盘。

您可以/lib/cryptsetup/scripts/decrypt_derived在crypttab中使用,以自动将一个磁盘中的密钥用于另一个磁盘。该decrypt_derived脚本是Debian的cryptsetup软件包的一部分。

修改示例以将密钥从sda6crypt添加到sda5:

mkfifo fifo
/lib/cryptsetup/scripts/decrypt_derived sda6crypt > fifo &
cryptsetup luksAddKey /dev/sda5 fifo
rm fifo

ls -la /dev/disk/by-uuid/ | grep sda5
echo "sda5crypt UUID=<uuid> sda6crypt luks,initramfs,keyscript=/lib/cryptsetup/scripts/decrypt_derived" >> /etc/crypttab

keyscript选项仅在crypttab由Debian的原始cryptsetup工具处理时才有效,systemd重新实现当前不支持该选项。如果您的系统使用systemd(大多数系统),那么您需要initramfs选择在systemd启动之前通过cryptsetup工具强制在initrd中进行处理。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.