目的
LUKS のパスフレーズ自動入力までを備忘のために残す
環境
takashi@minitest:~$ cat /etc/os-release PRETTY_NAME="Ubuntu 22.04 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04 (Jammy Jellyfish)" VERSION_CODENAME=jammy ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=jammy takashi@minitest:~$ takashi@minitest:~$ uname -a Linux minitest 5.15.0-53-generic #59-Ubuntu SMP Mon Oct 17 18:53:30 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux takashi@minitest:~$
本環境は Virtual Box 上で動作しております
注意
鍵ファイルを /boot
に保存するが、 /boot
が暗号化されていないので読み取られる可能性がある
そのことを肝に銘じておこう
流れ
現状確認
lsblk -f
log
takashi@minitest:~$ lsblk -f NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS loop0 squashfs 4.0 0 100% /snap/core20/1405 loop1 squashfs 4.0 0 100% /snap/snapd/17883 loop2 squashfs 4.0 0 100% /snap/lxd/23541 loop3 squashfs 4.0 0 100% /snap/core20/1695 loop4 squashfs 4.0 0 100% /snap/lxd/22923 sda ├─sda1 ├─sda2 ext4 1.0 6a582bb3-1179-4568-abdf-fd70293593ee 1.5G 7% /boot └─sda3 crypto_LUKS 2 15985b1d-1c87-4e82-907c-e2d9b87526c6 └─dm_crypt-0 LVM2_member LVM2 001 xCsVdJ-mYXT-wcy8-w3Xm-06eJ-9hm1-2Z2TfM └─ubuntu--vg-ubuntu--lv ext4 1.0 42bfcc6a-95e1-483c-ac6b-629bd9baf1e8 3.3G 54% / takashi@minitest:~$
LVM on LUKS になってますね
パスフレーズファイルを作る
鍵ファイルを作ってパーミッションの設定を行う
sudo dd if=/dev/urandom of=/boot/keyfile1 bs=1024 count=4 sudo chmod 0400 /boot/keyfile1
作ったパスフレーズを luks で使えるように追加する
事前に今の Keyslots を確認する
sudo cryptsetup luksDump /dev/sda3
1 つが通常だと思う
# 本コマンドを実行すると現在のパスフレーズを聞かれるので入力すると追加される sudo cryptsetup -v luksAddKey /dev/sda3 /boot/keyfile1
log
takashi@minitest:~$ sudo cryptsetup -v luksAddKey /dev/sda3 /boot/keyfile1 Enter any existing passphrase: Key slot 0 unlocked. Key slot 1 created. Command successful. takashi@minitest:~$
確認
sudo cryptsetup luksDump /dev/sda3
2個めが増えていること
/etc/crypttab の設定
現状確認
sudo cat /etc/crypttab
log
takashi@minitest:~$ sudo cat /etc/crypttab dm_crypt-0 UUID=15985b1d-1c87-4e82-907c-e2d9b87526c6 none luks takashi@minitest:~$
この /etc/crypttab
を編集する
引数について
第3引数
boot pattision に保存されている /keyfile1
を参照するようにする
none → /dev/disk/by-uuid/{uuid of boot partition}:/keyfile1
第4引数
luks → luks,keyscript=/lib/cryptsetup/scripts/passdev
とする
boot パーティションの UUID は最初の lsblk
で確認した
6a582bb3-1179-4568-abdf-fd70293593ee
であるので、第 3引数は
/dev/disk/by-uuid/6a582bb3-1179-4568-abdf-fd70293593ee:/keyfile1
となる
ようするに /boot/keyfile1
を指定している
編集
sudo vim /etc/crypttab # dm_crypt-0 UUID=15985b1d-1c87-4e82-907c-e2d9b87526c6 none luks dm_crypt-0 UUID=15985b1d-1c87-4e82-907c-e2d9b87526c6 /dev/disk/by-uuid/6a582bb3-1179-4568-abdf-fd70293593ee:/keyfile1 luks,keyscript=/lib/cryptsetup/scripts/passdev
initramfs を更新
sudo update-initramfs -u
再起動してテスト
sudo reboot
無事パスフレーズを入力せずに立ち上がってきたら完了
最後に
この VM は削除しました