我使用 cryptsetup/LUKS 加密了无头服务器。
2 个 HDD,/dev/md0 上有 512 MB /boot,1.61 TB LUKS 加密 /dev/md1,LVM 包含 /、swap 等。
我安装了 dropbear(并且已经安装了 busybox)以在启动过程中解锁所有内容。我用GRUB2。
到目前为止一切正常。我可以在 dropbear 上使用私钥登录并侦听端口 22,并使用以下命令解锁 LUKS
echo -n "passphrase" > /lib/cryptsetup/passfifo
Run Code Online (Sandbox Code Playgroud)
一旦我这样做,服务器就会启动,就好像没有加密一样。这正是我想要的。
现在,虽然这工作得很好,但这不是我想要的。
首先,我在 /lib/cryptsetup/passfifo 上找不到任何文档。它是如何运作的?其次,我使用 GPG 生成了一个密钥文件(也是一个使用 cryptsetup 作为环回设备的密钥文件),我想用它来代替密码。但我找不到任何有关如何在 busybox 中执行此操作的纪录片。GPG 似乎没有安装,所以我无法使用该密钥(我可以以某种方式使 GPG 可供 busybox 使用吗?)
所以目前,我解锁系统的唯一方法是将我的密码传递给 /lib/我不想使用 cryptsetup/passfifo 。我尝试直接在它的 busybox 路径中使用 cryptsetup
cryptsetup luksOpen /dev/md1 cryptdisk
Run Code Online (Sandbox Code Playgroud)
我没有显示任何错误,但我的系统没有继续启动。
我能做什么,或者我的处理方法有问题吗?
坦率
将 Ubuntu 从 14.04 升级到 16.04 后,启动开始变得非常缓慢。似乎是交换分区的问题。下面我附上一些细节。
cat /var/log/boot.log
[FAILED] Failed to activate swap /dev/mapper/ubuntu--vg-swap_1.
See 'systemctl status "dev-mapper-ubunt...\x2dvg\\x2dswap_1.swap"' for details.
[DEPEND] Dependency failed for Swap.
...
[ TIME ] Timed out waiting for device dev-di...\x2db1dc\x2dae7fb1c172e6.device.
[DEPEND] Dependency failed for Cryptography Setup for cryptswap1.
[DEPEND] Dependency failed for dev-mapper-cryptswap1.device.
[DEPEND] Dependency failed for /dev/mapper/cryptswap1.
[DEPEND] Dependency failed for Encrypted Volumes.
Run Code Online (Sandbox Code Playgroud)
猫 /etc/fstab
/dev/mapper/ubuntu--vg-root / ext4 errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
UUID=d57910fd-a1ae-4721-8da0-af0677f5a869 /boot ext2 defaults 0 …Run Code Online (Sandbox Code Playgroud) 我最近买了一个 Ubuntu 版 Dell XPS 13 9370。这台机器没有开箱即用的全盘加密,但提供创建一个恢复 USB 驱动器,当从该 Ubuntu 启动时可以安装 LUKS 加密。
但是,在安装我的密码后永远无法识别,我总是收到“cryptsetup failed, bad password or options?”
abcd也不起作用。abcd,所以它不会是布局问题)有没有其他人看到这个问题?任何建议如何解决它?谢谢!
最近,每次升级后,我都会在过程结束时得到这些行:
Processing triggers for initramfs-tools (0.131ubuntu19) ...
update-initramfs: Generating /boot/initrd.img-5.0.0-17-generic
cryptsetup: ERROR: Couldn't resolve device 048c7724-eed7-4e49-979f-f77f3d4dbfdb
cryptsetup: WARNING: The initramfs image may not contain cryptsetup binaries
nor crypto modules. If that's on purpose, you may want to uninstall the
'cryptsetup-initramfs' package in order to disable the cryptsetup initramfs
integration and avoid this warning.
W: Possible missing firmware /lib/firmware/amdgpu/vega20_ta.bin for module amdgpu
Run Code Online (Sandbox Code Playgroud)
我在内核存储库中搜索了该文件,但找不到丢失的文件vega20_ta.bin。
我阅读了很多关于 LUKS/dm-crypt/cryptsetup 的教程,特别是关于如何创建加密文件容器的教程。
第一步是使用dd.
然后一些教程将文件映射到/dev/loop0循环设备并对其进行格式化,其他教程直接格式化文件而不将其映射到循环设备中。
我的问题:是否需要循环设备步骤?有什么不同?
据我了解,Ubuntu 安装程序中的“加密新的 Ubuntu 安装以确保安全”选项旨在提供全盘加密。
但是,使用该选项时,似乎加密会立即完成,实际上似乎根本不需要任何时间。
在 Windows 上使用 BitLocker 加密整个磁盘时,即使在 SSD 上也可能需要数小时才能完全加密磁盘。例如,使用 BitLocker 和其他加密工具(如 DiskCryptor 或 TrueCrypt),还有一个进度指示器,显示已加密的磁盘数量。
为什么Ubuntu 安装程序中的“加密新的 Ubuntu 安装以确保安全”选项不是这种情况?
即使在我的 1 TB SSD 上,加密似乎也可以立即设置,并且没有任何进度指示器。
这怎么可能?
论坛上有人说:
http://ubuntuforums.org/showthread.php?t=2330425&p=13516293#post13516293
数据在写入之前不会被加密
但如果这是真的,那么安装程序中的“加密新的 Ubuntu 安装以确保安全”选项根本就不是全盘加密。
如果他是正确的,那么它不会加密整个磁盘。它只加密使用的磁盘空间。然后不加密空白空间。
至少使用 BitLocker,您可以选择仅加密已用磁盘空间或加密整个磁盘,例如,请参见以下屏幕截图:
https://i-technet.sec.s-msft.com/en-us/windows/jj983729.bitlocker-screen(en-us,MSDN.10).jpg
在同一个论坛帖子中还提到:
如果您想在写入任何内容之前随机初始化存储区域,则需要一些时间。我似乎记得它是安装的可选复选框。
而且,确实,在具有“加密新的 Ubuntu 安装以确保安全性”选项的屏幕之后的下一个屏幕上有一个“为了更安全:覆盖空磁盘空间(安装可能需要更长的时间。)”选项。
现在,问题是:如果选中该选项,它是否只是覆盖空磁盘空间?或者它也加密它?
我假设它在加密之前只用零覆盖它。我假设无论如何都会使用“加密新的 Ubuntu 安装以确保安全”选项加密整个磁盘,而不管“为了更高的安全性:覆盖空磁盘空间(安装可能需要更长的时间。)”选项。
问候
Ubuntu 不启动但打印奇怪的东西
/run/lvm/lvmetad.socket: connect failed: No such file or directory/sbin/cryptsetup not found然后几分钟后回落到 busybox(有时..)。
转移到新硬盘后出现该错误,我必须删除加密分区。chroot进入根分区并运行后,弹出询问 Ubuntu 问题中udpate-initramfs -u提到的错误:
cryptsetup: WARNING: could not determine root device from /etc/fstab
Run Code Online (Sandbox Code Playgroud)
我遵循了本文中建议的设置:Full Disk Encryption with Ubuntu。现在我/在 LUKS 中有一个 btrfs 卷,并且有一个未加密的/boot分区。所有这些都在禁用安全启动的 EFI 上运行。
我将 Ubuntu 从 18.04 升级到 18.10。我启用了全盘加密。当我启动时,我在全盘加密的密码提示上方显示以下错误消息:
\n\ncryptsetup: WARNING: Option \'hash\' missing in crypttab for plain dm-crypt mapping cryptcherries. Please read /usr/share/doc/cryptsetup/README.initramfs and add the correct \'hash\' option to your crypttab(5).\n\nPlease unlock disk cryptcherries\nRun Code Online (Sandbox Code Playgroud)\n\n输入正确的密码后,系统会告诉我它已正确设置,但随后我只看到黑屏和闪烁的光标
\n\n使用实时 USB 记忆棒,我设法在我的机器中读取内容/etc/crypttab,内容如下所示:
cryptcherries UUID=1ae5c201-etc-etc none luks,retry=1,lvm=vgcherries\nRun Code Online (Sandbox Code Playgroud)\n\n这是/etc/fstab我机器上的样子:
/dev/mapper/vgcherries-vgcherriesroot / ext4 errors=remount-ro 0 1\nUUID=03daa82f-etc-etc /boot ext3 defaults 0 2\n/dev/mapper/vgcherries-vgcherriesswap none swap sw 0 0\nRun Code Online (Sandbox Code Playgroud)\n\n我一直在阅读README.initramfs。(尽管错误消息说了什么,但我实际上在 找到了它/usr/share/doc/cryptesetup-initramfs/README.initramfs.gz。)我尝试修改cryptsetup以包括hash=sha1
在Live …
我想在具有dm-integrity和 LUKS2-encryption的两磁盘 RAID 1 上安装 Ubuntu 。
不幸的是,Ubiquity 和替代的 textmode-installer 都没有提供这样的解决方案。
虽然这看起来很容易手动完成,但我还无法安装系统。
两个驱动器的布局如下:
/dev/sdX1 [ext2] 用作未加密 /boot/dev/sdX2[未格式化] 要在 LVM 中配置为加密/root&swap我在实时系统上格式化了两个驱动器gparted,然后cryptsetup luksFormat --type luks2 --integrity hmac-sha256 /<device>/<partition>作为基础对其中一个驱动器执行,以便在稍后的手动安装程序中创建 RAID 设备、LVM 和文件系统。
但是,手动分区程序无法识别加密分区,我无法继续使用它们。
我怎样才能“打开”加密分区来为系统安装设置它们,而无需先重新格式化它们?
这种方法还有什么需要考虑的吗?Ubuntu 是否需要某些 LUKS 参数,或者是否建议为此目的使用某些东西?
我是否必须在安装后手动将设备添加到文件中才能在启动时正确解密?该--integrity选项是否自动使用?
这是最好的方法还是有另一种方法来实现这一目标?(不包括 Btrfs/ZFS 文件系统的使用)
我按照以下步骤将/dev/sda4(UUID 5da9c956-e544-47e3-bb8e-fe18d9531b2f)上的正常交换转换为 16.04 上的加密交换分区:
禁用旧的交换分区并用零覆盖它:
sudo swapoff -a
sudo dd if=/dev/zero of=/dev/sda4 bs=4M
Run Code Online (Sandbox Code Playgroud)安装cryptsetup:
sudo apt install cryptsetup
Run Code Online (Sandbox Code Playgroud)编辑/etc/crypttab以包含此内容:
# <target name> <source device> <key file> <options>
cryptswap UUID=5da9c956-e544-47e3-bb8e-fe18d9531b2f /dev/urandom swap
Run Code Online (Sandbox Code Playgroud)编辑/etc/fstab以删除旧的交换行并将其替换为:
# cryptswap on /dev/sda4 configured in /etc/crypttab
/dev/mapper/cryptswap none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)重新加载 cryptdisks 配置:
sudo service cryptdisks reload
sudo service cryptdisks-early reload
Run Code Online (Sandbox Code Playgroud)启用新的加密交换:
sudo swapon -a
Run Code Online (Sandbox Code Playgroud)但是,这最后一步给了我以下错误消息:
swapon: stat of /dev/mapper/cryptswap failed: No such file or directory …Run Code Online (Sandbox Code Playgroud) 升级到 20.04 后,我的加密磁盘在启动时没有被解密。我没有被要求输入任何密码,所以它显然找不到任何分区并引导到 initrd 提示符。
可能是什么原因:/cryptroot/crypttab在 initrd 映像中是完全空的。
我可以手动打开 luks 并 chroot 进入系统。这是我/etc/crypttab在真正根目录中的内容:
nvme0n1p3_crypt UUID=<some uuid> none luks
(UUID 都是正确的,无处不在)
当我运行时update-initramfs -c -k all,输出是:
cryptsetup: WARNING: target 'nvme0n1p3_crypt' not found in /etc/crypttab
这有点奇怪,因为它正是该文件中唯一单个条目的目标名称。它也被列为/dev/mapper链接../dm-0,似乎也是正确的。
我尝试将设备重命名为crypt仅使用,dmsetup rename ...但这当然没有帮助。
我认为这是我问题的根本原因。
我正在使用 Kubuntu Wily 15.10(完全升级)。它已经安装了该cryptsetup软件包。
我正在尝试启动 cryptdisks 服务,但我得到了这个:
$ sudo service cryptdisks start
Failed to start cryptdisks.service: Unit cryptdisks.service is masked.
Run Code Online (Sandbox Code Playgroud)
是的,它被掩盖了。
$ sudo systemctl list-unit-files | grep cryptdisks
cryptdisks-early.service masked
cryptdisks.service masked
Run Code Online (Sandbox Code Playgroud)
如果我尝试取消屏蔽该服务,则什么也不会发生。
$ sudo systemctl unmask cryptdisks-early.service
$ sudo systemctl unmask cryptdisks.service
$ sudo systemctl list-unit-files | grep cryptdisks
cryptdisks-early.service masked
cryptdisks.service masked
Run Code Online (Sandbox Code Playgroud)
请注意,systemctl unmask不会返回任何内容。我能做什么?