FedoraLinuxでLUKSを使用してドライブを暗号化する方法


この記事では、ブロック暗号化、Linux Unified Key Setup(LUKS)について簡単に説明し、FedoraLinuxで暗号化されたブロックデバイスを作成する手順について説明します。

ブロックデバイス暗号化は、ブロックデバイス上のデータを暗号化して保護するために使用され、データを復号化するには、ユーザーがアクセスするためのパスフレーズまたはキーを指定する必要があります。これにより、デバイスがシステムから物理的に切り離されている場合でも、デバイスのコンテンツが保護されるため、追加のセキュリティメカニズムが提供されます。

LUKS(Linux Unified Key Setup)は、Linuxのブロックデバイス暗号化の標準であり、データのオンディスクフォーマットとパスフレーズ/キー管理ポリシーを確立することで機能します。必要なすべてのセットアップ情報をパーティションヘッダー(LUKSヘッダーとも呼ばれます)に格納するため、データをシームレスに転送または移行できます。

LUKSは、dm-cryptモジュールを備えたカーネルデバイスマッパーサブシステムを利用して、デバイスデータの暗号化と復号化を保持する低レベルのマッピングを提供します。 cryptsetupプログラムを使用して、暗号化されたデバイスの作成やアクセスなどのユーザーレベルのタスクを実行できます。

ブロックデバイスの準備

次の手順は、インストール後に暗号化されたブロックデバイスを作成および構成する手順を示しています。

cryptsetupパッケージをインストールします。

# dnf install cryptsetup-luks

次に、暗号化する前にデバイスにランダムデータを入力します。これにより、次のコマンドを使用して暗号化の強度が大幅に向上します。

# dd if=/dev/urandom of=/dev/sdb1	           [slow with high quality random data ]
OR
# badblocks -c 10240 -s -w -t random -v /dev/sdb1  [fast with high quality random data]

警告:上記のコマンドは、デバイス上の既存のデータをすべて消去します。

暗号化されたデバイスのフォーマット

次に、cryptsetupコマンドラインツールを使用して、デバイスをdm-crypt/LUKS暗号化デバイスとしてフォーマットします。

# cryptsetup luksFormat /dev/sdb1

次のスクリーンショットに示すように、コマンドを実行すると、 YES (大文字)を入力して、使用するようにフォーマットするデバイスのパスフレーズを2回入力するように求められます。

操作が成功したかどうかを確認するには、次のコマンドを実行します。

# cryptsetup isLuks /dev/sdb1 && echo Success

デバイスの暗号化情報の概要を表示できます。

# cryptsetup luksDump /dev/sdb1

復号化されたコンテンツへのアクセスを許可するマッピングの作成

このセクションでは、暗号化されたデバイスの復号化されたコンテンツにアクセスする方法を構成します。カーネルデバイスマッパーを使用してマッピングを作成します。このマッピングには、luk-uuid( がデバイスのLUKSUUID

暗号化されたデバイスのUUIDを取得するには、次のコマンドを実行します。

# cryptsetup luksUUID /dev/sdb1

UUIDを取得した後、示されているようにマッピング名を作成できます(前に作成したパスフレーズを入力するように求められます)。

# cryptsetup luksOpen /dev/sdb1 luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c

コマンドが成功すると、復号化されたデバイスを表す/dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c というデバイスノード。

作成されたばかりのブロックデバイスは、他の暗号化されていないブロックデバイスと同様に読み取りおよび書き込みが可能です。次のコマンドを実行すると、マップされたデバイスに関する情報を確認できます。

# dmsetup info /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c

マップされたデバイスでのファイルシステムの作成

次に、マップされたデバイス上にファイルシステムを作成する方法を見ていきます。これにより、他のブロックデバイスと同じようにマップされたデバイスノードを使用できるようになります。

マップされたデバイス上にext4ファイルシステムを作成するには、次のコマンドを実行します。

# mkfs.ext4 /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c

上記のファイルシステムをマウントするには、マウントポイントを作成します(例:/mnt/encoding-device )。次に、次のようにマウントします。

# mkdir -p /mnt/encrypted-device
# mount /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c /mnt/encrypted-device/

/ etc / crypttabおよび/ etc / fstabにマッピング情報を追加します

次に、デバイスのマッピングを自動的に設定し、起動時にマウントするようにシステムを構成する必要があります。

/ etc/crypttabファイルに次の形式でマッピング情報を追加する必要があります。

luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c  UUID=59f2b688-526d-45c7-8f0a-1ac4555d1d7c   none

上記の形式で:

  • luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c – is the mapping name
  • UUID=59f2b688-526d-45c7-8f0a-1ac4555d1d7c – is the device name

ファイルを保存して閉じます。

次に、次のエントリを/ etc/fstabに追加して、システムの起動時にマップされたデバイスを自動的にマウントします。

/dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c  /mnt/encrypted-device  ext4 0 0

ファイルを保存して閉じます。

次に、次のコマンドを実行して、これらのファイルから生成されたsystemdユニットを更新します。

# systemctl daemon-reload

LUKSヘッダーのバックアップ

最後に、LUKSヘッダーをバックアップする方法について説明します。これは、LUKSヘッダーを含むセクターがユーザーエラーまたはハードウェア障害によって損傷した場合に、暗号化されたブロックデバイス内のすべてのデータが失われないようにするための重要な手順です。このアクションにより、データ回復が可能になります。

LUKSヘッダーをバックアップします。

# mkdir /root/backups  
# cryptsetup luksHeaderBackup --header-backup-file luks-headers /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c 

そして、LUKSヘッダーを復元します。

# cryptsetup luksHeaderRestore --header-backup-file /root/backups/luks-headers /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c 

それで全部です!この記事では、FedoraLinuxディストリビューションでLUKSを使用してブロックデバイスを暗号化する方法について説明しました。このトピックまたはガイドに関する質問やコメントがありましたら、以下のフィードバックフォームを使用してご連絡ください。