ウェブサイト検索

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


この記事では、ブロック暗号化である Linux 統一キー セットアップ (LUKS) について簡単に説明し、Fedora Linux で暗号化されたブロック デバイスを作成する手順について説明します。

デバイスの暗号化をブロックする

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

ルークスの紹介

LUKS (Linux 統一キー セットアップ) は 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

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

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

cryptsetup isLuks /dev/sdb1 && echo Success

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

cryptsetup luksDump /dev/sdb1

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

このセクションでは、暗号化されたデバイスの復号化されたコンテンツにアクセスする方法を構成します。カーネルのデバイスマッパーを使用してマッピングを作成します。このマッピングには、luk-uuid のような意味のある名前を作成することをお勧めします (<uuid> はデバイスの LUKS UUID に置き換えられます) 普遍的に一意の識別子)。

暗号化されたデバイスの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/encrypted-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 – マッピング名です。
  • UUID=59f2b688-526d-45c7-8f0a-1ac4555d1d7c – デバイス名です。

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

次に、次のエントリを /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 

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