Linux環境でのディスク暗号化
Linuxオペレーティング・システムを使用している場合は、ディスク暗号化を構成してディスク全体(リムーバブル・メディアを含む)、パーティション、ソフトウェアRAIDのボリューム、論理ボリュームおよびNoSQLファイルを暗号化することで、データを保護できます。
dm-crypt
は、カーネル暗号化APIを使用してLinuxカーネル内に透過的なディスク暗号化サブシステムを提供する、Linuxカーネルのデバイス・マッパー暗号化ターゲットです。
Cryptsetup
は、dm-crypt
と連動して暗号化されたデバイスを作成したり、管理したり、これらのデバイスにアクセスするためのコマンドライン・ツールです。最も一般的に使用される暗号化はLinux Unified Key Setup (LUKS)拡張機能のCryptsetup
で、この機能では、使いやすくするために、dm-crypt
に必要なすべての設定情報がディスク自体に格納され、パーティションおよびキー管理が抽象化されています。
このトピックでは、コマンドライン・インタフェースを使用して、通常ディスクをdm-crypt
対応ディスクに変換する方法と、その逆を行う方法について説明します。
Linuxシステムに次のディスクがあるとします。df -h
コマンドは、各ディスクの使用可能なディスク領域の量を表示します。
$df -h
/dev/nvme0n1 2.9T 76G 2.7T 3% /ons/nvme0n1
/dev/nvme1n1 2.9T 76G 2.7T 3% /ons/nvme1n1
...
データベースを格納するディスクとして/dev/nvme0n1
を指定した場合は、このディスクを暗号化して、ディスク内のデータを保護する必要があります。
通常ディスクからdm-crypt対応ディスクへ:
次のコマンドを実行して、通常ディスクをdm-crypt
対応ディスクに変換します。
-
ディスク上のファイル・システムをアンマウントします。
sudo umount -l /dev/nvme0n1
-
luksFormat
で使用するキーを生成します。sudo dd if=/dev/urandom of=/home/opc/key0.key bs=1 count=4096
-
LUKSパーティションを初期化し、初期キーを設定します。
sudo /usr/sbin/cryptsetup -q -s 512 \ luksFormat /dev/nvme0n1 /home/opc/key0.key
-
ディスク/デバイスのLUKSパーティションを開き、マッピング名を設定します。
sudo /usr/sbin/cryptsetup --allow-discards \ luksOpen -d /home/opc/key0.key /dev/nvme0n1 dm-nvme0n1
-
ディスクに
ext4
ファイル・システムを作成します。sudo /sbin/mkfs.ext4 /dev/mapper/dm-nvme0n1
-
ext4
ファイル・システムのパラメータを設定します。sudo /usr/sbin/tune2fs -e remount-ro /dev/mapper/dm-nvme0n1
-
指定されたディレクトリにファイル・システムをマウントします。
sudo mount /dev/mapper/dm-nvme0n1 /ons/nvme0n1
dm-crypt対応ディスクから通常ディスクへ:
暗号化されたディスクを通常の状態に変換する場合は、次のステップを実行します。
-
ディスク上のファイル・システムをアンマウントします。
sudo umount -l /ons/nvme0n1
-
LUKSマッピングを削除します。
sudo /usr/sbin/cryptsetup luksClose /dev/mapper/dm-nvme0n1
-
ディスクに
ext4
ファイル・システムを作成します。sudo /sbin/mkfs.ext4 /dev/nvme0n1
-
指定されたディレクトリにファイル・システムをマウントします。
sudo mount /dev/nvme0n1 /ons/nvme0n1
注意:
通常ディスクをdm-crypt
対応ディスクに変換するか、dm-crypt
対応ディスクを通常ディスクに変換する場合、そのデータを失わずにディスクを前の状態に戻すことはできません。これは、mkfs.ext4
コマンドがディスクをフォーマットするためです。したがって、ディスクに格納されているすべてのデータが失われます。