远程解锁完全加密的Debian压缩
作者:Stephan Jau
修订:v1.0
最后更改:2012年4月14日
介绍
在过去我已经写了几个远程解锁完全加密的Debian安装。 随着Debian Squeeze的到来,开发人员已经集成了一个简单的方法来实现。 大多数东西都是由Debian本身直接提供的 - 这意味着你不再需要第三方脚本了。 然而,它仍然涉及我在下面描述的几个步骤。 另外我还提供一个自动执行所有步骤的bash脚本。
我建议先在虚拟机中测试各个步骤和脚本,看看它是如何进行的。
1.安装必需的软件包
apt-get install dropbear busybox
2.编辑/etc/initramfs-tools/initramfs.conf
将以下参数设置为以下值:
BUSYBOX=y DROPBEAR=y DEVICE=eth0 IP=10.0.0.99::10.0.0.1:255.255.255.0::eth0:off
当然,请选择您要连接的适当的网络设备,并设置相应的IP地址,网关和子网掩码。 这些设置只能在重新启动时才能影响到dropbear ssh服务器。 如果您的机器通常使用IP地址10.0.0.43,您仍然可以将其设置为10.0.0.99。 然后.99地址只能用于远程解锁。 一旦它被解锁并且正常的引导过程继续,它将使用真实的地址。 但是我宁愿总是使用相同的IP地址。
3.创建主机密钥在/ etc / initramfs-tools / etc / dropbear /
安装dropbear后,应根据主机键创建。 但是要确保它们真的存在,我们将删除现有的并重新创建它们。
rm /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
rm /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
dropbearkey -t dss -f /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key
4.创建私钥和公钥
为了使用dropbear进行身份验证,我们将创建一对新的私钥和公钥。 因此,当系统启动时,它们不会与可用的混合。
rm -Rf /etc/initramfs-tools/root/.ssh
mkdir -p /etc/initramfs-tools/root/.ssh
mkdir -p /root/reboot
dropbearkey -t rsa -f /root/reboot/reboot_rsa.dropbear
/usr/lib/dropbear/dropbearconvert dropbear openssh /root/reboot/reboot_rsa.dropbear /root/reboot/reboot_rsa
dropbearkey -y -f /root/reboot/reboot_rsa.dropbear | grep "^ssh-rsa " > /root/reboot/reboot_rsa.pub
cat /root/reboot/reboot_rsa.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys
在这个例子中,你可以看到我命名为“reboo”。 你可以为他们选择任何一个名字,只需要相应地改变一切。 在提供的bash脚本中,您可以设置一个前缀,将其命名为您的愿望。 我建议使用主机名作为前缀,所以你知道什么是密钥对属于哪个机器。
5.更新initramfs
update-initramfs -u
SCP本地机的私钥
在本地机器上,不是加密的远程机器,请运行以下命令:
scp root@REMOTE:/root/reboot/reboot_rsa ~/.ssh/
这将将以前生成的私钥复制到本地计算机。 重新启动后,您需要使用私钥解锁远程机器。
7.在本机上创建解锁脚本
创建具有以下内容的本地shell脚本文件。 当然,用实际的密码替换YOURENCRYPTIONPASSWORD
来解锁远程机器。
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.reboot" -i ~/.ssh/reboot_rsa root@REMOTE "echo -ne \"YOURENCRYPTIONPASSWORD\" >/lib/cryptsetup/passfifo"
8.测试
现在,您已经准备了REMOTE加密机器,您已经将本地机器上的私有密钥存储起来,并创建了一个脚本来登录到远程机器并提供LUKS密码。
立即重新启动远程加密机器,并且当它要求加密密码时,只需在本地机器上运行在第7步中创建的脚本。
要了解更多信息,您可以在/usr/share/doc/cryptsetup/README.remote.gz文件
中找到该信息。
Bash脚本
正如刚才所说,我还提供一个bash脚本来执行所有的步骤。 只需下载附加的bash脚本,将其放在加密的Debian上,编辑顶部,设置您的前缀,网络设备和网络设置。 保存它,使其可执行并以root身份运行。
Bash脚本: debian_crypto