ルートファイルシステム暗号化
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