luks ディスクまとめ
LUKSについては、過去に調べながらメモをしているので、いざというときに記事がバラけているので、目的のものにたどり着くのが大変なので、LUKSで暗号化ディスクを取り扱うコマンドで、よく使うものをまとめ記事にし直した。
- luks ディスクまとめ
- LUKS追加手順
- format して、パスワードを設定する
- format して、鍵ファイルを指定する。
- 予備のパスワードを設定する
- パスワードで解除して、予備カギ(ファイル)を指定して追加する。
- 鍵ファイルで解除して、予備カギ(ファイル)を指定し、追加する。
- カギ(keyfile/ファイル)が登録されているか調べる
- カギ(パスワード/text)が登録されたかされているか調べる
- 不要な鍵を消したい(パスワード・ファイル)を指定して消す。
- 使ってないスロット(パスワードがわからない)を消す。
- crypttab に登録する
- 関連記事
LUKS追加手順
一連の流れは、次のようになる。
## ディスクの確認 lsblk ## 初期化 sudo cryptsetup luksFormat /dev/sdX ## パスワードの確認 sudo cryptsetup luksOpen --test-passphrase /dev/sdX ## (必要なら)crypttab編集 sudo vim /etc/crypttab ## 開いて(必要ならlvm作って)フォーマット sudo cryptsetup luksOpen cyrpt-disk00 /dev/sdX sudo pvcreate /dev/mapper/cyrpt-disk00 sudo vgcreate data /dev/mapper/cyrpt-disk00 sudo lvcreate data -n my01 -l 100%FREE sudo mkfs.ext4 /dev/mapper/data-my01
lvcreate のコマンドの引数をよく勘違いするので注意
lvcreate VG名 -n LV名称 サイズ
lvcreate のサイズ指定の仕方もよく忘れるので注意。
## VG の残量100%全部使う場合 sudo lvcreate data -n my01 -l 100%FREE # サイズ指定の場合は -L 12G のようにする。 sudo lvcreate data -n my01 -L 12G
format して、パスワードを設定する
フォーマット時に既存データの削除を尋ねられる。
cryptsetup luksFormat /dev/sdX
format して、鍵ファイルを指定する。
上記のコマンドで、鍵ファイルをを指定する場合
cryptsetup luksFormat /dev/sdX /path/to/e1.keybin
予備のパスワードを設定する
予備パスワードを追加する。既存パスが必要
sudo cryptsetup luksAddKey /dev/sdX
パスワードで解除して、予備カギ(ファイル)を指定して追加する。
sudo cryptsetup luksAddKey /dev/sdX spare.keybin
鍵ファイルで解除して、予備カギ(ファイル)を指定し、追加する。
sudo cryptsetup luksAddKey /dev/sdX --key-file=e1.keybin spare.keybin
カギ(keyfile/ファイル)が登録されているか調べる
sudo cryptsetup luksOpen --key-file path/to/key --test-passphrase /dev/sdX
カギ(パスワード/text)が登録されたかされているか調べる
sudo cryptsetup luksOpen --test-passphrase /dev/sdX
標準入力を使うこともできる。
## テキストは標準入力からも渡せるが、bash_historyに残るので避ける。 echo -n my_pass_phrase | sudo cryptsetup luksOpen --test-passphrase /dev/xxx
カギが何本登録された調べる
sudo cryptsetup luksDump /dev/sdd ## wc で本数を見る。 sudo cryptsetup luksDump /dev/sda | grep -E '[0-9]+: luks2' | wc -l
出力例
LUKS header information
Version: 2
Epoch: 3
Metadata area: 16384 [bytes]
Keyslots area: 16744448 [bytes]
UUID: 54f5c540-f0ec-428e-a182-99403484f5a1
Label: (no label)
Subsystem: (no subsystem)
Flags: (no flags)
Data segments:
0: crypt
offset: 16777216 [bytes]
length: (whole device)
cipher: aes-xts-plain64
sector: 4096 [bytes]
Keyslots:
0: luks2
Key: 512 bits
Priority: normal
Cipher: aes-xts-plain64
Cipher key: 512 bits
PBKDF: argon2id
Time cost: 7
Memory: 1048576
Threads: 4
Salt: 6d 13 8a 5a 27 a5 24 84 18 a9 fb c9 ef cd c1 1b
99 98 d1 2f 6a 60 cb 6b 76 d9 c9 50 71 0f 4a 6b
AF stripes: 4000
AF hash: sha256
Area offset:32768 [bytes]
Area length:258048 [bytes]
Digest ID: 0
Tokens:
Digests:
0: pbkdf2
Hash: sha256
Iterations: 112604
Salt: f3 13 27 c1 2b d9 fa 56 34 cb b3 7b fc cb 34 b2
2f 6b 90 a2 23 6e f9 a1 40 56 4e 17 c6 27 46 1d
Digest: 9a 31 29 de d7 30 74 fc 40 70 76 7d b0 46 f7 00
35 ed 7a f6 9f 35 e9 36 e3 37 6a 2e c9 dd 5c 35
cipher: aes-xts-plain64 から AES-XTS で暗号化されているとわかる。
0: pbkdf2 と Iterations: 112604 で暗号鍵はハッシュ化され、ストレッチングされているとわかる。
Key: 512 bits で暗号鍵の解除パスワードは512bitにSaltされたものが使われているとわかる。
不要な鍵を消したい(パスワード・ファイル)を指定して消す。
cryptsetup luksRemoveKey
使ってないスロット(パスワードがわからない)を消す。
cryptsetup luksKillSlot
crypttab に登録する
mycrypt01 UUID=xxxx-xxx-aa9 /path/to/key luks,discard,keyslot=1
複数台のSSD/HDDがあるときは、シリアルをメモしておくと便利。
モデル名は smartctl -a /dev/sda でもわかるが、smartctlを入れるのが面倒なときは、hdparm でも取得可能
hdparm -I /dev/sda
# Model Hitachi HDxxxxx/STRxxxxx my_crypt01 UUID=xxxx-xxx-aa9 /path/to/key luks,discard,keyslot=1
記入できたらテスト。
crypttab の設定を反映してテストする。
sudo cryptdisks_start my_crypt01 sudo cryptdisks_stop my_crypt01
関連記事
- https://takuya-1st.hatenablog.jp/entry/2023/01/24/144835
- https://takuya-1st.hatenablog.jp/entry/2021/11/25/222603
- https://takuya-1st.hatenablog.jp/entry/2023/02/08/222523
## 2024-04-03
crypttabの記述例を追加。