コンテンツにスキップ

ルートファイルシステム暗号化

PCで作業

ルートファイルシステムのバックアップ

$ sudo rsync -aHAX --numeric-ids --info=progress2 \
  /mnt/rpi-root/ /mnt/backup/

LUKS2で暗号化

$ sudo cryptsetup luksFormat \
  --type luks2 \
  --cipher aes-xts-plain64 \
  --key-size 512 \
  --hash sha256 \
  --pbkdf argon2id \
  --iter-time 2000 \
  /dev/sdX
$ sudo cryptsetup open /dev/sdX cryptroot
$ sudo mkfs.ext4 -L rootfs /dev/mapper/cryptroot

ルートファイルシステムの復元

sudo rsync -aHAX --numeric-ids \
  --info=progress2 \
  /mnt/backup/ \
  /mnt/newroot/

ファイルシステムの設定ファイルを修正

  • /etc/fstab

ルートファイルシステムを次のように書き換える。

/dev/mapper/cryptroot  /               ext4    defaults,noatime  0       1
  • /etc/crypttab
sudo cryptsetup luksUUID /dev/sdX

次の設定を追加する。

cryptroot UUID=XXXXXX none luks

chrootして作業

$ sudo cp /usr/bin/qemu-aarch64-static /mnt/usr/bin/
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /dev/pts /mnt/dev/pts
$ sudo mount -t proc /proc /mnt/proc
$ sudo mount -t sysfs /sys /mnt/sys
$ sudo mount -t tmpfs /run /mnt/run
$ sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
$ sudo mount /dev/sdX /mnt/boot/firmware
$ sudo chroot /mnt /usr/bin/qemu-aarch64 /bin/bash

cryptsetupのインストール

$ apt update
$ apt install cryptsetup cryptsetup-initramfs
  • /etc/initramfs-tools/initramfs.conf

MODULES=most

  • cmdline.txt

root=/dev/mapper/cryptroot

削除

quiet splash

initramfsの更新

$ update-initramfs -u -k 6.18.39+rpt-rpi-v8
$ update-initramfs -u -k 6.18.39+rpt-rpi-2712

後処理

$ sudo umount /mnt/dev/pts
$ sudo umount /mnt/dev
$ sudo umount /mnt/proc
$ sudo umount /mnt/sys
$ sudo umount /mnt/run
$ sudo umount /mnt/boot/firmware
$ sudo umount /mnt
$ sudo cryptsetup close cryptroot

有線LAN経由でLUKS暗号を解錠

概要

次の表のとおりである。

項目
SSHサーバ dropbear

Raspberry Piでの作業

$ sudo apt install dropbear

次のファイルを作成する。

  • /etc/dropbear-initramfs/authorized_keys

  • /boot/cmdline.txt

ip=192.168.0.55::192.168.0.1:255.255.255.0::eth0:none
$ sudo update-initramfs -u
ln: '/boot/initrd.img-5.15.32-v8+.dpkg-bak' から '/boot/initrd.img-5.15.32-v8+' へのハードリンクの作成に失敗しました: 許可されていない操作です
update-initramfs: Generating /boot/initrd.img-5.15.32-v8+
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8156b-2.fw for built-in driver r8152
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8156a-2.fw for built-in driver r8152
W: Possible missing firmware /lib/firmware/rtl_nic/rtl8153c-1.fw for built-in driver r8152

PCでの作業

Raspberry Piが起動し、IPアドレスが設定されたら、次のコマンドを実行する。

$ ssh root@192.168.0.55
# cryptroot-unlock

参考: Debian(PC)の場合

$ sudo update-initramfs -u
  • /etc/default/grub
GRUB_CMDLINE_LINUX="ip=192.168.0.55::192.168.0.1:255.255.255.0::enp37s0:none"
$ sudo update-grub