目前的想法

目前的想法

我是一个长期的 Linux 用户,但我不太熟悉新的发展,尤其是 Ubuntu 和系统管理。

我有一台非常旧的 PC,我想将其用作文件服务器、Mercurial 存储库、FTP 和 WWW 服务器,以及我用 Django 制作的一些其他小型公司内部 Web 应用程序。以前,所有这些都运行在古老的 Fedora 上,位于未加密的磁盘上,并且都是从 启动的/etc/rc.local

我装了一块新硬盘,上面安装了 Ubuntu 18.04 LTS。我现在要恢复服务,但我也想改进一下。

首先,我希望将有价值的数据(Django 数据库、文件服务器中的文件等)放在加密分区上。但是,根据我对磁盘加密的经验,启动时会要求您输入密码。我想避免这种情况,因为服务器不会连接显示器或键盘。其次,我想以更正式(“Ubuntian”)的方式管理服务。

目前的想法

  • 将服务的数据放在加密分区上,该分区未在中列出/etc/fstab
  • 重启后,服务器将只有 sshd,但服务不会启动,分区也不会挂载。
  • 我会通过 ssh 连接到该机器,并运行一个脚本,该脚本会挂载该分区(要求我输入密码),然后启动该服务。

该机器采用 UPS,我预计很少运行上述程序(每年几次)。

问题

当前的想法好吗?有没有更好的方法?

如果很好,如何实现它?我当然可以采用“完全 DIY 方式”,使用 luks 命令、iptables 命令编写一个大脚本来打开端口,并直接调用服务的守护进程,但我想在这里学习一些新东西,并以正确的 Ubuntu 方式™ 来实现它 :)

任何指针或者代码/脚本示例都将不胜感激!

答案1

远程解锁加密分区

有一种简单且基本标准的方法可以在启动时解锁加密分区,而无需修改根分区。它需要dropbearbusyboxdropbear-initramfs

$ sudo apt install dropbear busybox dropbear-initramfs

将 busybox 添加到 initramfs

busybox在初始 RAM 磁盘中启用,请BUSYBOX=y在 中设置/etc/initramfs-tools/initramfs.conf。dropbear SSH 主机密钥存储在/etc/dropbear-initramfs/etc/dropbear/initramfs文件夹中(自 Ubuntu 22.04 起)。

将公钥添加到 dropbear 的 authorized_keys 中

初始 RAM 磁盘中没有用户管理,因此只有拥有公钥的 root 用户才能/etc/dropbear-initramfs/authorized_keys通过 登录ssh。您可以添加任何公钥,也可以简单地复制您的用户的一个公钥:

$ sudo cp ~/.ssh/authorized_keys /etc/dropbear-initramfs/authorized_keys

警告:某些旧dropbear版本不支持ed25519按键。

使用 dropbear 密钥更新 initramfs

此后,需要更新初始 RAM 磁盘:

$ sudo update-initramfs -u

就是这样,现在重新启动系统并等待cryptsetup对话框。

远程解锁系统

重启后系统会等待加密设备的解锁,使用sshroot用户和对应的私钥登录。

# From a remote system
$ ssh -i ~/.ssh/my_private.id_rsa [email protected]
Enter passphrase for key '~/.ssh/my_private.id_rsa':


BusyBox v1.30.1 (Ubuntu 1:1.30.1-4ubuntu6.1) built-in shell (ash)
Enter 'help' for a list of built-in commands.

#
# cryptroot-unlock
Please unlock disk ubuntu-root:
cryptsetup: ubuntu-root set up successfully
# Connection to my.system.waiting.for.a.password.com closed by remote host.
Connection to my.system.waiting.for.a.password.com closed.

系统将以解锁的根设备启动。

针对 Ubuntu 22.04 的更新

由 Sjors Provoost 提出 - 此方法在 Ubuntu 22.04 中停止工作。背后的原因是 的软件包依赖项发生了变化dropbear-initramfs。在 20.04 中,此软件包是recommend,在 22.04 中是suggest。因此,如果没有明确选择,将无法安装软件包。除此之外,dropbear键的位置从 更改/etc/dropbear-initramfs/etc/dropbear/initramfs--> 包含在答案中的更新。

相关内容