iso*_*man 23 encryption lvm luks
我最近安装了带有完整 lvm 加密的 ubuntu 服务器 11.04(从安装程序安装)。我现在希望使用密钥文件进行自动解锁。我试图按照本指南http://ubuntuforums.org/showthread.php?t=837416
我用这个命令生成了一个密钥: sudo dd if=/dev/urandom of=/boot/grub/keyfile bs=1024 count=4
我把它放进去是/boot/grub因为我认为它没有加密。当我尝试用这个命令添加密钥时,sudo cryptsetup luksAddKey /dev/sdX /boot/grub/keyfile
它要求我输入密码,当我输入它时什么也没有发生,屏幕上没有打印任何内容!我忽略它并继续其他步骤并重新启动,但什么也没发生,它要求输入密码。
谢谢您的帮助 。
Ran*_*son 29
我刚刚在我的新家庭服务器上经历了这个,它需要大量的谷歌搜索和猜测,但我已经让它工作了。我将尝试在此处重现这些步骤。我使用的是 Ubuntu Server 11.10,并从使用加密 LVM 的非常标准的安装开始,所以我将只介绍我从那里所做的更改。
设置:
首先,我创建了一个密钥文件,就在我的主目录中:
dd if=/dev/urandom of=keyfile bs=512 count=4
Run Code Online (Sandbox Code Playgroud)
(您可以使用更大的块大小或为更大的键计数)
告诉 cryptsetup 新密钥(重要的是内容,而不是文件名):
sudo cryptsetup luksAddKey /dev/sda5 keyfile
Run Code Online (Sandbox Code Playgroud)
然后,我用 ext2 格式化了我的 USB 闪存驱动器并给它一个标签。我使用了一个标签,以便稍后我可以通过标签安装它,并在出现问题时更换USB闪存驱动器。
sudo mkfs -t ext2 /dev/sdc1
sudo e2label /dev/sdc1 KEYS
Run Code Online (Sandbox Code Playgroud)
(当然,您的设备会有所不同)
现在,将密钥文件复制到 U 盘,由 root 模式 400 拥有:
mkdir KEYS
sudo mount /dev/sdc1 KEYS
sudo cp keyfile KEYS
sudo chown root KEYS/keyfile
sudo chmod 400 KEYS/keyfile
Run Code Online (Sandbox Code Playgroud)
修改 /etc/crypttab.conf 我的最初包含
sd5_crypt UUID=(...) none luks
Run Code Online (Sandbox Code Playgroud)
我改成
sd5_crypt UUID=(...) /dev/disk/by-label/KEYS:/keyfile luks,keyscript=/lib/cryptsetup/scripts/passdev
Run Code Online (Sandbox Code Playgroud)
最后,更新 initramfs:
sudo update-initramfs -uv
Run Code Online (Sandbox Code Playgroud)
它现在使用 USB 闪存驱动器上的密钥文件启动。如果我移除闪存驱动器(例如,当我去度假时)它不会启动并且我的数据是安全的。
如果有人知道如何让它在 USB 闪存驱动器丢失的情况下询问密码短语,那么作为后备方案会很方便。希望这会有所帮助,欢迎任何补充或更正!
改进Randy Orrison 的回答,这是我创建的一个小脚本,如果无法找到密钥文件,它将使系统回退到要求用户输入密码。
#!/bin/sh
ask_for_password () {
cryptkey="Unlocking the disk $cryptsource ($crypttarget)\nEnter passphrase: "
if [ -x /bin/plymouth ] && plymouth --ping; then
cryptkeyscript="plymouth ask-for-password --prompt"
cryptkey=$(printf "$cryptkey")
else
cryptkeyscript="/lib/cryptsetup/askpass"
fi
$cryptkeyscript "$cryptkey"
}
device=$(echo $1 | cut -d: -f1)
filepath=$(echo $1 | cut -d: -f2)
# Ask for password if device doesn't exist
if [ ! -b $device ]; then
ask_for_password
exit
fi
mkdir /tmp/auto_unlocker
mount $device /tmp/auto_unlocker
# Again ask for password if device exist but file doesn't exist
if [ ! -e /tmp/auto_unlocker$filepath ]; then
ask_for_password
else
cat /tmp/auto_unlocker$filepath
fi
umount /tmp/auto_unlocker
Run Code Online (Sandbox Code Playgroud)
保存并取代keyscript=/lib/cryptsetup/scripts/passdev在/etc/crypttab与此文件路径和运行sudo update-initramfs -uv,就大功告成了。
小智 6
这些来自 howtoforge.com 的说明让我开始使用自动解密卷。
sudo dd if=/dev/urandom of=/root/keyfile bs=1024 count=4
Run Code Online (Sandbox Code Playgroud)
sudo chmod 0400 /root/keyfile
Run Code Online (Sandbox Code Playgroud)
这将使密钥文件只能由 root 读取。如果有人可以访问此密钥文件,那么无论如何您的计算机都会遇到更大的问题。
或者将你想要的密钥文件 chown 到 root:root 并将其移动到 /root 文件夹中
启用 LUKS/dm_crypt 的设备最多可以保存 10 个不同的密钥文件/密码。因此,在拥有已经设置的密码之后,我们将添加这个密钥文件作为额外的授权方法。
sudo cryptsetup luksAddKey /dev/sdX /root/keyfile
Run Code Online (Sandbox Code Playgroud)
sdX 当然是你的 LUKS 设备。
首先,系统会提示您输入(现有)密码以解锁驱动器。如果一切正常,您应该得到如下输出:
Enter any LUKS passphrase:
key slot 0 unlocked.
Command successful.
Run Code Online (Sandbox Code Playgroud)
LUKS 设备需要创建一个映射器,然后可以在 fstab 中引用它。打开 /etc/crypttab
sudo nano /etc/crypttab
Run Code Online (Sandbox Code Playgroud)
然后添加这样一行:
sdX_crypt /dev/sdX /root/keyfile luks
Run Code Online (Sandbox Code Playgroud)
或者您可以使用设备的 UUID:
sdX_crypt /dev/disk/by-uuid/247ad289-dbe5-4419-9965-e3cd30f0b080 /root/keyfile luks
Run Code Online (Sandbox Code Playgroud)
sdX_crypt 是正在创建的映射器的名称。您可以在此处使用任何名称,例如“音乐”或“电影”或“sfdsfawe”....
通过发出 ctrl-x、回车、回车来保存并关闭文件。Ctrl-x 关闭 nano 但首先它要求保存文件 [yes = enter] 以及名称 [same name = enter]。
我们在那里所做的实际上是告诉应该使用 /root/keyfile 而不是密码输入来解锁驱动器。
现在,我们有一个解锁的设备(嗯,还没有,但是在系统启动时),我们现在只需要挂载它。打开/etc/fstab:
sudo nano /etc/fstab
Run Code Online (Sandbox Code Playgroud)
并添加一个新条目,如:
/dev/mapper/sdX_crypt /media/sdX ext3 defaults 0 2
Run Code Online (Sandbox Code Playgroud)
确保您拥有在步骤 4 中添加的正确映射器名称。还要确保安装点/文件夹存在。添加后,再次保存文件并关闭它(ctrl-x,回车,回车)。
就是这样。现在您可以重新启动,其他设备应该会自动解锁并安装。您还可以通过重新安装所有设备来测试它:
sudo mount -a
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59915 次 |
| 最近记录: |