我正在运行13.10 Saucy。如果在安装过程中没有启用磁盘加密,有没有办法事后启用它?
我找到了this,它说加密必须在安装时进行,但它也提到了Fedora。如果可以从活动磁盘中进行操作,我可以轻松地引导进去。
我正在运行13.10 Saucy。如果在安装过程中没有启用磁盘加密,有没有办法事后启用它?
我找到了this,它说加密必须在安装时进行,但它也提到了Fedora。如果可以从活动磁盘中进行操作,我可以轻松地引导进去。
如果您想启用家目录的加密,您需要安装和使用以下软件包:ecryptfs-utils
和 cryptsetup
。此外,您还需要另一个具有管理员(sudo)权限的用户帐户。完整的文档在这里:
如果您想在安装后启用全盘加密,现在的简短答案可能是:不行。无论如何,如果您对此感兴趣,您的问题是重复的:
ecryptfs-migrate-home
命令即可。
此外,在几个版本之前,这也是默认的 Ubuntu 设置,后来增加了全盘加密的可能性。由于大多数现代台式机都可以轻松处理全盘加密,并且它增加了一层防止离线代码注入的安全性,因此将全盘加密添加到安装程序中。请注意,对于大多数用户来说,只使用 ecryptfs 加密主目录已经足够满足他们的需求:保护他们的朋友和普通的笔记本电脑小偷无法访问他们的私人数据。此外,如果你成为一个有着正确手段的组织的特定目标,那么无论是全盘加密还是仅主目录加密都不会有太大区别,除非你还采取了很多其他的偏执行为(比如:将内核保存在随身携带的独立闪存驱动器中;不断检查硬件篡改/键盘记录器等)。所以,luksipc是在dm-crypt/cryptsetup/LUKS等方面没有任何替代品之前创建的。但现在情况已经不同了。因此,我建议切换到cryptsetup-reencrypt,这是一个得到适当维护和测试的上游工具,即使LUKS头部的格式发生变化(据我所知,这至少发生过两次),也不会导致luksipc灾难性地失败,即在最坏的情况下破坏所有数据。
cryptsetup-reencrypt
似乎是推荐的方法。简短指南取自Ubuntu文档
Add LUKS encryption to not yet encrypted device
First, be sure you have space added to disk. Or alternatively shrink filesystem in
advance.
Here we need 4096 512-bytes sectors (enough for 2x128 bit key).
fdisk -u /dev/sdb # move sdb1 partition end + 4096 sectors
cryptsetup-reencrypt /dev/sdb1 --new --reduce-device-size 4096
umount /mnt # As mentioned this only works on partitions/devices which aren't mounted. You can skip this if you used a live cd and didn't mount this partition yet - but be sure to check
e2fsck -f /dev/sdaX # check that the file system is ok -f == force validation even if it looks ok
resize2fs -M /dev/sdaX # Shrink the filesystem to the minimum size.
cryptsetup-reencrypt /dev/sdaX --new --reduce-device-size 16M # Encrypt the unencrypted partition
cryptsetup open /dev/sdaX recrypt # Open the encrypted partition so we can give it back the disk space we removed by using the -M option on resize2fs
resize2fs /dev/mapper/recrypt # enlarge partition again
mount /dev/mapper/recrypt /mnt # Mount if you want to access data
root@ubuntu:~# echo "GRUB_ENABLE_CRYPTODISK=y" >>/etc/default/grub
root@ubuntu:~# update-grub
root@ubuntu:~# grub-install /dev/sda???
update-initramfs -u -k all
如何引导
insmod luks # load kernel module
cryptomount hd0,gpt6 # decrypt your encrypted partition
configfile (crypto0)/boot/grub/grub.cfg # tell grub the path to the now unecrypted config file
cryptsetup luksOpen /dev/sda6 system
exit
也许考虑使用下面的指南。它似乎能解决上述提到的问题。虽然我还没有尝试过,所以不能确定它是否有效。但是可能值得研究一下。 https://cryptsetup-team.pages.debian.net/cryptsetup/encrypted-boot.html
P.S 故障排除指南是根据记忆编写的,所以可能有一些遗漏的部分。但是我还是想写下来,因为它可能仍然对某些人有帮助。然而,如果你发现有遗漏/不准确的地方,请在评论中告诉我,这样我可以更新指南。谢谢。
cryptsetup reencrypt
(注意缺少的破折号)。发布说明请参考:https://mirrors.edge.kernel.org/pub/linux/utils/cryptsetup/v2.5/v2.5.0-ReleaseNotes - Thomas好的,你可以备份所有重要目录和已安装软件。确保你的13.10版本已完全更新以避免版本冲突。通常需要备份的内容包括:
/boot
/etc
home
var
/usr/local
/bin
、/lib
、lib64
)。之后,你可以重新安装加密系统。将备份移动到加密系统并安装所有来自先前版本的软件。
确保在恢复备份时不要覆盖与加密相关的重要文件(例如`/etc/fstab`、`/etc/cryptab`、一些与grub相关的内容以及`/boot`目录中的一些文件),请注意。从一个工作的Ubuntu 16.04开始,我成功地进行了后安装根分区加密,根分区中包含除了/boot之外的所有内容。我将/boot放在一个单独的可移动的USB设备上。值得注意的是,在升级到Ubuntu 18之前,我就已经完成了这个操作,而且升级过程在加密磁盘版本上也很顺利。
加密操作并不是“原地”进行的,这对我来说没关系,因为在新的设置工作正常之前,我不想覆盖现有的工作版本。
执行正确的步骤非常简单和快速。(尽管找出正确的步骤非常耗时,因为我跟随了一些错误的线索。)
大纲
详细信息
1 - 使用带有持久性的活动Linux USB盘启动。
使用unetbootin在USB上安装了Ubuntu 16。GUI允许指定“持久性”,但还需要另一步才能使持久性起作用 - 修改/boot/grub/grub.cfg
,添加--- persistent
,如下所示:
menuentry "Try Ubuntu without installing" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper quiet splash --- persistent
initrd /casper/initrd
}
使用live USB启动
2- 在空分区上创建luks加密卷组。在该加密分区上创建/(根)和交换逻辑卷。
假设未使用的分区被加密为/dev/nvme0n1p4
。
可选地,如果您要隐藏加密和格式化之前的分区上的旧数据,则可以随机擦除该分区。 请参见此处的讨论。
dd if=/dev/urandom of=/dev/nvme0n1p4 bs=4096 status=progress
cryptsetup -y -v luksFormat /dev/nvme0n1p4
cryptsetup luksOpen /dev/nvme0n1p4 crypt1
crypt1
是一个任意由用户决定的名称。现在创建卷并进行格式化。pvcreate /dev/mapper/crypt1
vgcreate crypt1-vg /dev/mapper/crypt1
lvcreate -L 8G crypt1-vg -n swap
mkswap /dev/crypt1-vg/swap
lvcreate -l 100%FREE crypt1-vg -n root
mkfs.ext4 /dev/crypt1-vg/root
pvscan
vgscan
lvscan
ls -l /dev/mapper
ls -l /dev/crypt1
mkdir /tmp/old-root
mount /dev/ubuntu-vg/root /tmp/old-root/
mkdir /tmp/new-root
mount /dev/crypt1-vg/root /tmp/new-root/
cp -a /tmp/old-root/. /tmp/new-root/
umount /tmp/old-root
umount /tmp/new-root
cp -a ...
在归档模式下进行复制,保留所有文件模式和标志。
4- 设置并分区另一个USB设备作为可移动启动盘。
我使用gparted来完成这个任务。设置两个分区。第一个分区是vfat
,第二个分区是ext2
。每个分区大小为512 MB,你可能可以用更小的空间。假设设备为/dev/sdf
。
# The first partition: (will be /dev/sdf1)
Free space preceding (leave default value)
New size 512 MiB
Free space following (leave default value)
Create as: Primary Partition
Partition Name: (leave)
File System: fat32
Label: (leave)
# The second partition: (will be /dev/sdf2)
Free space preceding (leave default value)
New size 512 MiB
Free space following (leave default value)
Create as: Primary Partition
Partition Name: (leave)
File System: ext4
Label: (leave)
blkid /dev/sdf1
blkid /dev/sdf2
blkid /dev/nvme0n1p4
sudo mount /dev/mapper/crypt1--vg-root /mnt
sudo mount /dev/sdf2 /mnt/boot
sudo mount /dev/sdf1 /mnt/boot/efi
/mnt/etc/fstab
/dev/mapper/crypt1--vg-root / ext4 errors=remount-ro 0 1
/dev/mapper/crypt1--vg-swap none swap sw 0 0
UUID=[uuid of /dev/sdf2] /boot ext2 defaults 0 2
UUID=[uuid of /dev/sdf1] /boot/efi vfat umask=0077 0 1
其中"[uuid of ...]"只是一个字母-数字-连字符的组合。
创建文件/mnt/etc/cryptab
# <target name> <source device> <key file> <options>
crypt1 UUID=[uuid of /dev/nvme0n1p4] none luks,discard,lvm=crypt1--vg-root
进入根目录环境需要一些魔法:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
chroot /mnt
grub
设置启动USB盘:apt install --reinstall grub-efi-amd64
grub-install --efi-directory=/boot/efi --boot-directory=/boot --removable
update-initramfs -k all -c
update-grub
apt install --reinstall grub-efi-amd64
命令时,网络必须连接。如果网络已连接但DNS失败,请尝试echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
initramfs
之前,原始Linux中使用的当前vmlinuz...
文件必须存在于新的根目录中。如果不存在,请找到它并放置在那里。grub-install
命令默认会搜索所有其他可找到的Linux磁盘,即使它们没有被mount
,并将它们放入新的启动USB的引导菜单中。通常这是不希望的,可以通过在/boot/default/grub.cfg
中添加以下行来避免:GRUB_DISABLE_OS_PROBER=true
注意: 可以将包含加密密钥的文本文件添加到可移动引导USB中。
/mnt/etc/crypttab
(双t)。 - rvf/home
和/tmp
创建了几个更多的逻辑卷(需要在几个地方进行更改以确保所有卷都被挂载)/boot/efi
,因为我不使用USB驱动器进行引导,而我的引导加载程序已经安装在一个单独的分区中。/mnt/etc/crypttab
中应该是双t。 - EgoNecoTu