如何在Debian上创build一个随机encryption的,encryption的交换分区,指的是“by-uuid”?

如果您在GNU / Linux系统上实施了任何types的块设备encryption,那么也可以encryption您的交换分区,因为任何解密的数据都可以随时以明文forms写入交换。

查看“crypttab”的debian手册页,我看到一个在启动时创build一个随机键入的交换分区的例子,所以这个键随着启动的进行而随机设置,并且只被系统本身所知:

# Encrypted swap device cswap /dev/sda6 /dev/urandom cipher=aes-cbc-essiv:sha256,hash=ripemd160,size=256,swap 

在这个例子中,交换设备被传统的devpath(即/dev/sda6 )引用

例如,如果插入了USB驱动器,绝对设备path可能会改变,并在启动时被重新分配。 如果/dev/sda6碰巧是一个不同于预期的分区,用户会非常不高兴,并随后被随机交换数据覆盖!

所以解决scheme似乎是:使用UUID而不是设备path(因为UUID不应该改变),用/dev/disk/by-uuid/<whatever the uuid of dev/sda6 is> /dev/sda6replace/dev/sda6 /dev/disk/by-uuid/<whatever the uuid of dev/sda6 is>

但是…这里的问题是:每次cryptsetup在启动时重新创buildencryption的交换分区,它都会为它生成一个新的UUID! 卫生署!

所以我们需要保存这个encryption文件系统的UUID。 我认为cryptsetup可以通过它的--offset开关来实现,允许保存LUKS头和UUID。

我find了这个url: https : //wiki.archlinux.org/index.php/System_Encryption_with_LUKS#Using_UUIDs_with_encrypted_swap_partitions

有谁知道如何在Debian OS上实现Arch Linux的解决scheme? Debian操作系统中似乎并不存在文档中提到的init脚本

谢谢!

编辑一个可以使用ecryptfs来实现相同的目的(encryption交换空间)使用命令: ecryptfs-setup-swap没有困扰块设备encryption的问题。 看看这个AskUbuntu查询

每次cryptsetup在引导时重新创buildencryption的交换分区,它都会为它生成一个新的UUID! 卫生署!

在/ etc / crypttab中,使用/ dev / disk / by-id而不是/ dev / disk / by-UUID来引用你的交换分区。 例如,交换的/ etc / fstab条目可能是

 #<file system> <mount point> <type> <options> <dump> <pass> /dev/mapper/cswap none swap sw 0 0 

那么在/ etc / crypttab中正确的对应项就是这样的

 # <name> <device> <password> <options> cswap /dev/disk/by-id/ata-SAMSUNG_SSD_830_Series_S0XYNEAC762041-part5 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256 

请注意,上面的设备由/ dev / disk / by-id引用,您可以通过在CLI中键入以下内容来find驱动器:

 ls -lF /dev/disk/by-id 

在我的/ etc / crypttab中,我有

 # <target name> <source device> <key file> <options> swap /dev/mapper/cswap /dev/random swap 

这里/ dev / mapper / cswap是由LVM创build的一个逻辑卷,它负责正确分配逻辑卷名称而不考虑驱动器盘符名称。 它也使我可以轻松地调整我的交换分区。

尝试实施解决scheme的其余部分,忽略init文件。 它看起来像是初始化脚本只是在那里保护你。 Debian不会以这种方式保护你,或者当你尝试启动它时,它会给你一个错误信息,希望能把你带到正确的地方。

我还要小心,IIRC Debian和ArchLinux对于/ etc / crypttab有不同的格式(我知道这很疯狂,但是几年前我从Ubuntu移到了Arch,最后决定用直接的bash而不是插手crypttabs)。

运行ecryptfs-setup-swap或手动运行:

此configuration在启动时使用随机生成的密钥,并不会支持硬盘hibernate模式。 您应该通过尊敬的DE电源pipe理实用程序禁用hibernatefunction,并将其设置为“关机关机”以避免数据丢失!

切换到pipe理员/ root帐户

su根或sudo为每个命令

禁用交换

swapoff -a

find现有的交换分区

lsblk

例如:sda3 8:3 0 8G 0部分[SWAP]

覆盖旧的交换

dd if = / dev / zero bs = 1024000 of = / dev / sda <#>

例如:dd if = / dev / zero bs = 1024000 of = / dev / sda3

FSTAB设置

vim / etc / fstab

使用crypttab映射器名称replace旧的SWAP设备:/ dev / mapper / cswap

OLD UUID = d03f3d8e-7888-48a5-b3cc-41de8dbbcfdc swap swap defaults 0 0

/ dev / mapper / cswap无交换pri = 1,默认为0 0

encryption设置

ls -lF / dev / disk / by-id

示例:ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 – > ../../sda3

vim / etc / crypttab

cswap / dev / disk / by-id / ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 / dev / urandom swap,cipher = aes-cbc -essiv:sha256,size = 256

主动encryption交换

重新启动计算机

validationEnctypted交换操作

dmsetup -C信息

示例:cswap 253 0 L – w 2 1 0 CRYPT-PLAIN-cswap

lsblk

例如├─sda38:3 0 8G 0部分
│└─cswap253:0 0 8G 0 crypt [SWAP]

猫/ proc /掉期

例如:文件名types大小已用优先级/ dev / dm-0分区8385532 0 -1