Jon*_*han 6 encryption partitioning hard-drive luks
我一直在设置一些 LUKS 加密驱动器,并注意到我一直在“原始”(?)驱动器上直接创建加密磁盘,即。/dev/sdb,而谷歌的许多示例都显示它是在 /dev/sdb1 上创建的
使用 /dev/sdb 的示例:
# cryptsetup luksFormat /dev/sdb
# cryptsetup luksOpen /dev/sdb lvm_backup
Run Code Online (Sandbox Code Playgroud)
..然后继续创建卷组和逻辑卷,如下所示:
# vgcreate vg_backup /dev/mapper/lvm_backup
# lvcreate -l +100%FREE lvm_backup -n backup
# mkfs.ext4 /dev/mapper/vg_backup-backup
Run Code Online (Sandbox Code Playgroud)
最后安装驱动器。
这给我留下了一个看起来像这样的 lsblk:
sdb 8:16 0 2.7T 0 disk
lvm_backup (dm-3) 252:3 0 2.7T 0 crypt
vg_backup-backup (dm-5) 252:5 0 2T 0 lvm /backup
Run Code Online (Sandbox Code Playgroud)
相比之下,其他 lsblk 输出看起来像:
sdb 8:16 0 2.7T 0 disk
sdb1 #:# 0 2.7T 0 part
lvm_backup (dm-3) 252:3 0 2.7T 0 crypt
vg_backup-backup (dm-5) 252:5 0 2T 0 lvm /backup
Run Code Online (Sandbox Code Playgroud)
直接在磁盘 (/dev/sdb) 上工作与先创建分区 (/dev/sdb1) 的优缺点是什么?
我假设这可能与以下内容有关:https : //serverfault.com/questions/338937/differences-between-dev-sda-and-dev-sda1
顺便说一句,我在想,如果您使用整个设备 ( /dev/sdb) 并且您的 LUKS 标头位于驱动器的开头,并且如果其他工具或操作系统“帮助”确定您的磁盘未格式化且没有 MBR 或 GPT,如果它会覆盖你的 LUKS 标头,这会很糟糕。如果您为 LUKS 使用分区,那么至少一个新的 MBR 或 GPT 不会那么具有破坏性。
无论如何,您应该始终备份 LUKS 标头,正如cryptsetup手册页所建议的那样。
这就是cryptsetup FAQ关于在分区或原始磁盘上使用2.2 LUKS所说的内容吗?(它很长,但我只是粘贴它,提到 RAID 和 LVM 会使事情变得非常复杂,您可能需要重新考虑在 LUKS 之上使用 LVM):
这是一个复杂的问题,而且由于 RAID 和 LVM 的可用性而变得更加复杂。我将尝试给出一些场景并讨论优缺点。请注意,我说 LUKS 是为了简单起见,但您也可以使用普通的 dm-crypt 执行所有描述的操作。另请注意,您的具体情况可能非常特殊,以至于我在下面所说的大部分甚至所有内容都不适用。
请注意,如果将 LVM 添加到组合中,事情会变得非常复杂。与 RAID 相同,但较少。特别是,数据恢复会变得非常困难。仅当您有充分的理由并始终记住 KISS 是将工程师与业余爱好者区分开来的原因时才这样做。当然,如果你真的需要增加复杂度,KISS 是满足的。但要非常确定,因为这是要付出代价的。在工程中,复杂性始终是敌人,在遇到复杂性时需要毫不留情地进行战斗。
还可以考虑使用 RAID 而不是 LVM,至少对于旧的超级块格式 0.90,RAID 超级块位于永久损坏 LUKS 标头的风险最小的位置(磁盘末尾),您可以通过以下方式组装阵列RAID 控制器(即内核),它应该是。为此使用分区类型 0xfd。我建议远离超级块格式 1.0、1.1 和 1.2,除非你真的需要它们。请注意,您会失去对它们的自动检测,并且必须退回到某些用户空间脚本来执行此操作。
场景:
(1) 加密分区:按照自己的喜好做一个分区,把LUKS放在上面,把文件系统放到LUKS容器里。这使您可以隔离不同任务的数据区域,就像普通分区一样。您可以拥有机密数据、非机密数据、某些特定应用程序的数据、用户主页、root 等。优点是简单,因为分区和文件系统之间存在 1:1 映射、清晰的安全功能和分离数据的能力放入不同的、独立的 (!) 容器中。
请注意,您不能对需要 initrd 的加密根执行此操作。另一方面,initrd 与未加密的 root 一样容易受到有能力的攻击者的攻击,因此这样做确实没有安全优势。想要破坏您系统的攻击者只会破坏 initrd 或内核本身。处理此问题的更好方法是确保根分区不存储任何关键数据并将其移动到其他加密分区。如果您真的担心您的根分区可能会被具有物理访问权限的人破坏(但奇怪的是不会破坏您的 BIOS、键盘等),请以其他方式保护它。PC 只是没有设置为真正安全的引导链(不管有些人可能会声称什么)。
(2) 完全加密的原始块设备:为此,将 LUKS 放在原始设备上(例如 /dev/sdb)并将文件系统放入 LUKS 容器中,不涉及任何分区。这非常适合用于备份或离线数据存储的外部 U 盘。
(3) 加密 RAID:从分区和/或完整设备创建您的 RAID。将 LUKS 放在 RAID 设备之上,就像它是一个普通的块设备一样。应用程序与上述相同,但您会获得冗余。(旁注,因为很多人似乎都没有意识到:您可以在 Linux 中使用任意数量的组件进行 RAID1。)另见条款 2.8。
(4) 现在有人提倡在RAID层以下进行加密。这有几个严重的问题。一是突然调试 RAID 问题变得更加困难。您不能再进行自动 RAID 组装。您需要保持组件的加密密钥同步或以某种方式管理它们。唯一可能的优势是,当更多的 CPU 进行加密时,事情可能会运行得更快一点,但如果速度优先于安全性和简单性,那么无论如何你都做错了。缓解速度问题的一个好方法是获得执行硬件 AES 的 CPU。