debian12系统 配置使用SSH远程解锁LUKS加密的根分区

环境:在安装debian系统的时候在磁盘分区步骤 配置了LUKS加密根分区和其余需要加密的分区

1、更新系统

apt update -y
apt upgrade -y
apt full-upgrade -y

重启系统
reboot

2、安装 Dropbear

apt install -y dropbear-initramfs

3、配置在initramfs阶段的网络,添加静态ip

编辑 /etc/initramfs-tools/initramfs.conf 文件

vim /etc/initramfs-tools/initramfs.conf

添加ip
IP=192.168.2.19::192.168.2.254:255.255.255.0:debian

IP=– 启动静态 IP 配置
::– 现场分离器
192.168.2.19– IPv4 协议
192.168.2.254–网关
255.255.255.0– 网络掩码
debian– 主机名

4、配置 Dropbear 以解锁 LUKS 加密系统

  1. 新目录:/etc/dropbear/initramfs/
  2. 新配置文件:/etc/dropbear/initramfs/dropbear.conf
  3. 包含用于公钥身份验证的公钥的新文件:/etc/dropbear/initramfs/authorized_keys

先编辑配置文件

vim /etc/dropbear/initramfs/dropbear.conf

DROPBEAR_OPTIONS="-I 180 -j -k -p 2222 -s -c cryptroot-unlock"

-I 180:如果在 180 秒内没有传输或接收流量,则断开会话。
-j:关闭 ssh 本地端口转发。
-k:同时禁用远程端口转发。
-p 2222:在指定地址和 TCP 端口上侦听 Dropbear ssh 服务器。在此示例中,使用 TCP/2222。如果未给出选项,它将监听所有地址。最多可以指定 10 个。如果未指定,则默认值为 TCP/22。-p
-s:禁用密码登录。我们将在 Linux / Unix 系统上设置 SSH 密钥进行身份验证,以减少攻击面。
-c cryptroot-unlock:忽略用户提供的命令,始终运行 forced_command。这也会覆盖任何 authorized_keys command= 选项。换句话说,键入 ssh 命令后,立即解锁磁盘,不执行任何其他操作。如果您想手动键入 cryptroot-unlock,您可以跳过此选项。

5、创建用于登录的 SSH 密钥

使用PUTTYgen创建一对公钥和密钥,然后将公钥内容复制到 /etc/dropbear/initramfs/authorized_keys 文件里面保存, 私钥保存为本地文件。

6、更新或生成 initramfs 镜像

update-initramfs -u
update-initramfs -u -v

7、重启,使用PUTTY连接

打开putty,先加载私钥文件,然后再服务器地址栏输入 用户名@地址 和 端口号 进行连接

此时应该就能正常连接到了。然后输入解锁密码进行解锁就行

注意:目前此方法只能解锁根分区,根分区解锁后会断开连接,有可能是已经到了系统启动部分,会断网,ssh也会无法连接,就会导致剩余需要解锁的分区还是无法解锁,系统无法启动。

8、为了确保在解锁根分区后网络连接不丢失,以下步骤可以帮助你。

编辑/etc/initramfs-tools/scripts/init-bottom/目录中的脚本,以确保在根分区解锁后重新配置网络接口。

nano /etc/initramfs-tools/scripts/init-bottom/net-restart

添加以下内容:

#!/bin/sh
# Reconfigure network after switching root

# Bring down the interface to reset it
ip link set eth0 down

# Reconfigure network interface
ip addr flush dev eth0
ip addr add 192.168.1.100/24 dev eth0
ip link set eth0 up

# Re-add the default gateway
ip route add default via 192.168.1.1

# Reconfigure DNS
echo "nameserver 8.8.8.8" > /etc/resolv.conf

保存并关闭文件后,使脚本可执行:

chmod +x /etc/initramfs-tools/scripts/init-bottom/net-restart

每次修改initramfs相关脚本后,都需要更新initramfs镜像:

update-initramfs -u
这样配置之后网络是能通了,但是ssh还是无法连接,目前还没找到解决办法。

9、可以配置其余分区在根分区解锁后自动解锁,这样就只需要解锁根分区的时候输入密码,根分区解锁成功后其余配置过的分区可以自动解锁

步骤

1、确认分区和设备名称: 使用 lsblkblkid 命令查看分区和设备的名称,确保您知道根分区和其他加密分区的设备路径。

2、确保根分区的解锁顺序: 确保您的根分区在 /etc/crypttab 中的定义是正确的,并在引导过程中能够首先被解锁。例如:

cryptroot    UUID=<根分区的UUID>    none    luks

3、修改 /etc/crypttab: 在 /etc/crypttab 中,确保其他加密分区的定义位于根分区之后。示例:

cryptroot    UUID=<根分区的UUID>    none    luks
cryptdata    UUID=<其他分区的UUID>    none    luks

请使用 blkid 命令获取 UUID。

4、使用密钥文件自动解锁: 为了实现自动解锁,您需要使用一个密钥文件。进行以下步骤:

创建密钥文件

dd if=/dev/urandom of=/root/luks-keyfile bs=1024 count=4

# /root/luks-keyfile 代表密钥文件的路径和文件名称

将密钥文件添加到 LUKS: 首先,您需要将密钥文件添加到 LUKS 加密分区:

cryptsetup luksAddKey /dev/sda2 /root/luks-keyfile

# /dev/sda2 代表需要设置的LUKS加密的分区 

系统会要求您输入分区的原始 LUKS 密码。

确保密钥文件的权限

chmod 600 /root/luks-keyfile

5、更新 /etc/crypttab: 修改 /etc/crypttab 以指向密钥文件:

cryptroot    UUID=<根分区的UUID>    none    luks
cryptdata    UUID=<其他分区的UUID>    /root/luks-keyfile    luks

6、更新 initramfs

update-initramfs -u

7、重启,之后应该只需要输入根分区解锁密码,然后配置过自动解锁的其他分区都会自动解锁。

注意事项

  • 使用密钥文件自动解锁具有一定安全风险,确保密钥文件的安全性,限制访问。
  • 在设置这些更改之前,确保备份重要数据。
  • 如果系统仍然要求输入密码,检查 /etc/crypttab 和 /etc/fstab 的配置是否正确,确保没有拼写错误或不一致之处。

取消自动解锁

取消自动解锁,编辑 /etc/crypttab 文件 将指向密钥文件替换为none ,然后更新 update-initramfs -u 重启就行。密钥文件不要删除,并且最好在异地备份一下密钥文件,以免数据发生意外。

sanradar
sanradar
文章: 104

28 评论

  1. أنابيب PP في العراق تخصصت شركة إيليت بايب في العراق في إنتاج أنابيب الـ PP، التي تُعرف بمقاومتها الممتازة للمواد الكيميائية، وقوة تحملها العالية، واستقرارها الحراري. تم تصميم أنابيب الـ PP لدينا لتلبية معايير الجودة الصارمة، مما يجعلها خيارًا موثوقًا للتطبيقات الصناعية والتجارية. باعتبارها واحدة من أفضل وأكثر شركات تصنيع الأنابيب موثوقية في العراق، تضمن شركة إيليت بايب أن أنابيب الـ PP الخاصة بنا تقدم أداءً متميزًا ومتانة. استكشف مجموعة أنابيب الـ PP لدينا من خلال زيارة elitepipeiraq.com.

  2. Получите доступ к бонусам 7k Casino, используя промокод ANDROID777 и скачав APK через официальный телеграм канал https://t.me/casino_7kk

  3. Keep up the fantastic work! Kalorifer Sobası odun, kömür, pelet gibi yakıtlarla çalışan ve ısıtma işlevi gören bir soba türüdür. Kalorifer Sobası içindeki yakıtın yanmasıyla oluşan ısıyı doğrudan çevresine yayar ve aynı zamanda suyun ısınmasını sağlar.

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注