悪霊にさいなまれる世界 -The Demon-Haunted World

30代独身機械系技術者が雑記/セキュリティ/資産運用なんかを書きます/PGP・GPG Key:BC884A1C8202081B19A7A9B8AB8B419682B02FF8

Linux、というかDebianでSDカードを丸ごとLUKSで暗号化して、かつ起動時に自動でマウント・復号化する方法メモ

そう言う訳でSDカードを丸ごとLUKSで暗号化して、起動時に自動でマウント・復号化する方法である。

1,lsblkでSDカードを判別する。sdXだったりmmcblk0だったり。今回は/dev/mmcblk0として進める。

2,cryptsetupを使って、SDカード全体をLUKSで暗号化。このときパスフレーズを決める。

sudo cryptsetup luksFormat /dev/mmcblk0

3,暗号化されたSDカードを開き、仮想的なデバイスとして認識する。

sudo cryptsetup luksOpen /dev/mmcblk0 my_encrypted_sd

4,暗号化されたボリュームにext4ファイルシステムを作成する。

sudo mkfs.ext4 /dev/mapper/my_encrypted_sd

5,暗号化解除されたSDカードを一時的にマウントできるか確認する。

sudo mount /dev/mapper/my_encrypted_sd /mnt

6,起動時にSDカードの暗号化を自動解除するために/etc/crypttabを設定する。

sudo vim /etc/crypttab

下記行を追加

my_encrypted_sd /dev/mmcblk0 none luks

my_encrypted_sdはマウント名。noneは手動でパスワードを入力する設定なので後でここを変更する。

7,起動時にSDカードが自動的にマウントされるように/etc/fstabを設定する。まずUUIDを確認する。

sudo blkid /dev/mapper/my_encrypted_sd

UUIDをメモする。

8,/etc/fstabを編集して、SDカードをUUIDでマウントする設定を追加する。

sudo vim /etc/fstab

下記行を追加。さっきメモしたUUIDを使う。

UUID=(メモしたUUID) /mnt/my_encrypted_sd ext4 defaults 0 2

9,自動で復号化するための鍵ファイルを作る。まずディレクトリを作成する。

sudo mkdir -p /etc/keys

続いて鍵ファイルを作成。パーミッションを400に設定しroot以外が読み取れないようにする。

sudo dd if=/dev/random of=/etc/keys/sdcard.key bs=1024 count=4
sudo chmod 0400 /etc/keys/sdcard.key

10,LUKS暗号化の解除にその鍵ファイルを使用する設定を行う。ここでパスワードの入力が求められる。

sudo cryptsetup luksAddKey /dev/mmcblk0 /etc/keys/sdcard.key

11,/etc/crypttabを編集して、noneを変更し鍵ファイルを使って自動解除するように設定する。

my_encrypted_sd /dev/mmcblk0 /etc/keys/sdcard.key luks

12,再起動してマウントされているか確認する。

13,使いやすいようにホームディレクトリにシンボリックリンクを作る。

ln -s /mnt/my_encrypted_sd ~/encrypted_sdcard

14,rootアカウントではなくユーザアカウント(tsukasa:tsukasa)でアクセスできるようにするため、まずuid, gidを確認する。最初に作ったユーザなら両方1000のはず。

id tsukasa

15,暗号化解除されたボリュームのパーミッションを変更する。

sudo chown tsukasa:tsukasa /dev/mapper/my_encrypted_sd

16,ボリュームをマウントするディレクトリのパーミッションを設定する。

sudo chown tsukasa:tsukasa /mnt/my_encrypted_sd

sudo chmod 775 /mnt/my_encrypted_sd

17,/etc/fstabを編集して、書き込み権限を追加する。

sudo vim /etc/fstab

下記行の通り、上で確認したuid, gidを追記する。

UUID=(メモしたUUID) /mnt/my_encrypted_sd ext4 defaults,uid=1000,gid=1000 0 2

以上。Happy Hacking!