最近我尝试将 Ubuntu 用于我的家庭 NAS。我将其用作媒体服务器以及其他 PC 的主要文档存储库。
我想使用某种磁盘加密和 RAID 1(我有一个用于操作系统的 SSD 和 2 个用于数据的 4TB 驱动器)。如果我只加密 RAID,并且仍然有无人值守的安装,有没有办法保证加密密钥的安全?
我想我可以加密操作系统驱动器,但这样我会失去任何无人值守的启动。我只想要无人值守的启动,以防我不在家时需要重新启动。
答案1
如果您使用 Ubuntu 内置的全盘加密来加密操作系统驱动器,则需要在启动期间从本地控制台输入加密密钥。
似乎有办法保存加密分区的加密密钥,以便只有 root 才能访问(如果合适)。如果其他人拥有 root 访问权限,那么您将面临更大的问题。保存密钥的分区应该加密,并且可能需要手动解密。
您也可以手动挂载加密分区并放弃保存密钥文件。
我从此链接复制了以下步骤:
https://www.howtoforge.com/automatically-unlock-luks-encrypted-drives-with-a-keyfile
致谢原作者 Stephan Jau
步骤 1:创建随机密钥文件
sudo dd if=/dev/urandom of=/root/keyfile bs=1024 count=4
这将创建一个大小为 4096 位的随机内容文件(比 20/30 个字符的密码更好……)。您可以使用任何文件作为密钥文件,但我认为具有随机内容的 4kb 文件很适合。
步骤 2:将密钥文件设为 root 只读
sudo chmod 0400 /root/keyfile
这将使密钥文件只有 root 才能读取。如果有人可以访问此密钥文件,那么您的计算机就会出现更大的问题。
或者将所需的密钥文件 chown 为 root:root 并将其移动到 /root 文件夹
步骤 3:将密钥文件添加到 LUKS
启用 LUKS/dm_crypt 的设备最多可以保存 10 个不同的密钥文件/密码。因此,除了设置密码外,我们还将添加此密钥文件作为附加授权方法。
sudo cryptsetup luksAddKey /dev/sdX /root/keyfile
sdX 当然是您的 LUKS 设备。
首先,系统会提示您输入(现有)密码来解锁驱动器。如果一切正常,您应该会得到如下输出:
Enter any LUKS passphrase:
key slot 0 unlocked.
Command successful.
步骤 4:创建映射器
LUKS 设备需要创建一个映射器,然后可以在 fstab 中引用它。打开 /etc/crypttab
sudo nano /etc/crypttab
然后添加如下一行:
sdX_crypt /dev/sdX /root/keyfile luks
或者您可以使用设备的 UUID:
sdX_crypt /dev/disk/by-uuid/247ad289-dbe5-4419-9965-e3cd30f0b080 /root/keyfile luks
sdX_crypt 是正在创建的映射器的名称。您可以在此处使用任何名称,例如“音乐”或“电影”或“sfdsfawe”...
通过按下 ctrl-x、enter、enter 保存并关闭文件。Ctrl-x 关闭 nano,但它首先会询问是否保存文件 [yes = enter] 以及文件名称 [same name = enter]。
我们实际上所做的是告诉应该使用 /root/keyfile 而不是密码输入来解锁驱动器。
步骤 5:在 fstab 中挂载设备
现在,我们有一个解锁的设备(嗯,还没有,但是当系统启动时),我们现在只需要挂载它。打开 /etc/fstab:
sudo nano /etc/fstab
并添加一个新条目,例如:
/dev/mapper/sdX_crypt /media/sdX ext3 defaults 0 2
确保您在步骤 4 中添加的映射器名称正确。还要确保挂载点/文件夹存在。添加后,再次保存文件并关闭它(ctrl-x,enter,enter)。
步骤 6:重新启动或重新挂载
就是这样。现在您可以重新启动,附加设备应该会自动解锁并安装。您也可以通过重新安装所有设备来测试它:
sudo mount -a