如果您在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,并将其设置为“关机关机”以避免数据丢失!
su根或sudo为每个命令
swapoff -a
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
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
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
重新启动计算机
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