cryptrootへのインストール
注意: 暗号化されたパーティションへのインストールについてのこのページのガイドを使うにあたって、いくつか警告しておくことがあります:
- aptosid-2010-03-apate 以降のリリースから有効になります。
- cryptsetup は既存のデータパーティションを暗号化することはできません。つまり、新しいパーティションを作成し、cryptsetup をつかって暗号化を設定して、そのうえにデータを移動することが必要です。
- 暗号化キーのファイルを使うこと、複数のキーを使うことができます。(キー削除も含めて最大8個まで使えますが), これについてはこのガイドでは深く踏み込みません。
- 設定したパスフレーズを忘れないこと!データすべてへのアクセスを失います。パスフレーズを知らなくては /boot へのアクセスを除いて chroot を使っても何もできません。
- 起動時の早い段階で暗号化デバイスのパスフレーズの入力を求められ、その後正常にシステムが起動されます。
このページはは初心者むけの基本的なガイドです。LUKS(Linux Unified Key Setup)について深く学ぶことはユーザーとしてのあなたの責任です。ページの最後のLVMについての情報源リンクは役にたつでしょうが、決してすべてを網羅しているわけではありません。
暗号化の例:
LVM グループの内部の暗号化
以下の例では LVM ボリューム内部を暗号化し、home を / のパーティションから分け、swap の使用にも複数のパスワードを必要としない設定を紹介します。aptosid-2010-03-apate 以降のリリースから有効にできます。
インストーラを実行する前に、インストールに使用するファイルシステムを準備しなくてはなりません。基本的な LVM パーティションについては Logical Volume Manager - LVM partitioning を参考にしてください。
最低限として、暗号化されていない /boot ファイルシステムと暗号化された / ファイルシステムが必要です。ここでは他に/home と swap ファイルシステムも暗号化します。
- もし既存の LVM ボリュームグループを使わないつもりならば、普通の LVM グループを作成します。このページの例ではvg という名のボリュームグループに boot パーティションと暗号データを保存するように設定します。
- /boot と暗号化されたデータの論理ボリュームが必要なので lvcreate でボリュームグループ vg に望むサイズの論理ボリュームを作成します:
lvcreate -n boot --size 250m vg lvcreate -n crypt --size 300g vg
このコマンドで boot と crypt という名でそれぞれ 250MB と 300GB の論理ボリュームができました。 - /boot 用のパーティションにファイルシステムを作り、インストーラが書き込めるようにします:
mkfs.ext4 /dev/mapper/vg-boot
- cryptsetup を使って vg-crypt を高速の xts オプションと最強の 512bit の長さのキーを使って暗号化し、これをオープンします。設定のために2回、3回目はオープンのためパスワードを入力するように求められます。ここでは起動時の cryptopts デフォルトのターゲット名、cryptroot で開きます。:
cryptsetup --verify-passphrase --cipher aes-xts-plain:sha512 luksFormat /dev/mapper/vg-crypt
cryptsetup luksOpen /dev/mapper/vg-crypt cryptroot
- 今度は暗号化デバイス内部に LVM を使って swap と /home に使う第二のボリュームグループを作成します。cryptroot を pvcreate コマンドで物理ボリュームにして、vgcreate で別のボリュームグループを作ります。ここではこれを cryptvg という名で呼びます:
pvcreate /dev/mapper/cryptroot vgcreate cryptvg /dev/mapper/cryptroot
- 次に lvcreate を使って新たに暗号化された cryptvg ボリュームグループにお好みのサイズの / 、 swap と /home の論理ボリュームを作ります:
lvcreate -n swap --size 2g cryptvg lvcreate -n root --size 40g cryptvg lvcreate -n home --size 80g cryptvg
このコマンドでは論理ボリュームに swap、root、home と名前をつけてそれぞれ 2Gb、40Gb、80Gb のサイズ設定しました。 - cryptvg-swap、cryptvg-root、cryptvg-home にファイルシステムを作成しインストーラからアクセスできるようにします:
mkswap /dev/mapper/cryptvg-swap mkfs.ext4 /dev/mapper/cryptvg-root mkfs.ext4 /dev/mapper/cryptvg-home
- これでインストーラを実行する準備ができました。ここでは:
vg-boot を /bootとして、
cryptvg-root を /として、
cryptvg-home を /homeとして、
and cryptvg-swap for swap should be automagically recognised.
インストールが終わったとき、カーネルのコマンド行に次のようなオプションが含まれているはずです:
root=/dev/mapper/cryptvg-root cryptopts=source=/dev/mapper/vg-crypt,target=cryptroot,lvm=cryptvg-root
これで vg という名の LVM ボリュームグループの下に crypt と boot、パスワードで保護された暗号化デバイス内のボリュームグループ vgcrypt に root、home、swap という論理ボリュームができました。
cryptsetup luksOpen /dev/mapper/cryptvg-root cryptvg vgchange -a y
従来のパーティショニングを暗号化する場合のノート
まず始めにに、どのようにパーティションをレイアウトしたいか決めます。暗号化されていない /boot を含むパーティションと、データの暗号化されたものと、最低二つのパーティションが必要です。
もう一つ、(これも暗号化されるべき) swap用の第三のパーティションも必要でしょうから、起動の際に swap 用のパスワードを別に入力する必要があるでしょう。(つまり起動時に二回パスワードの入力を求められるようになるでしょう。)
従来のパーティショニングを使っていても、暗号化されたシステムの内側から swap パーティションの暗号化キーを使うことも可能ではありますが、その場合はハードディスクへのサスペンドができなくなります。そのため、長期的にみて、LVM ボリュームを使って全部暗号化されたパーティションとキーを使う方が優れていると言えるでしょう。
基本的なケースの例:
- ハードディスク上に三つだけパーティションがあるとしましょう:
250MB の /boot
2GB の swap
/ と /home の両方を含むパーティション - swap用と / と /home 用の二つのパスフレーズが必要です。
パーティショニングが準備できたところで、インストーラに認識される暗号化パーティションを用意する必要があります。
GUI のパーティションエディタを使った場合、プログラムを終了し、暗号化はコマンドラインを使うのでコンソールを開いてください。
/boot パーティション
/boot パーティションを ext4 に作成します。まだできていなかったら次のコマンドで:
/sbin/mkfs.ext4 /dev/sda1
暗号化された swap
暗号化された swap のためにはまず、/dev/sda2 のデバイスを暗号化デバイスとしてフォーマットし、前述の vg-crypt デバイスの時のようにこれを swap という名前でオープンします。
cryptsetup --verify-passphrase --cipher aes-xts-plain:sha512 luksFormat /dev/sda2
cryptsetup luksOpen /dev/sda2 swap
echo "swap UUID=$(blkid -o value -s UUID /dev/sda2) none luks" >> /etc/crypttab
Format the created /dev/mapper/swap so it will be recognised by the installer:
/sbin/mkswap /dev/mapper/swap
暗号化された / パーティション
暗号化された / のためにはまず、/dev/sda3 のデバイスを前述の vg-crypt デバイスのときのように暗号化デバイスとしてフォーマットし、cryptroot の名前でオープンします。
cryptsetup --verify-passphrase --cipher aes-xts-plain:sha512 luksFormat /dev/sda3
cryptsetup luksOpen /dev/sda3 cryptroot
作成された /dev/mapper/cryptroot をフォーマットして、インストーラに認識されるようにします:
/sbin/mkfs.ext4 /dev/mapper/cryptroot
インストーラを開く
これでインストーラが実行できます。以下のパーティションを使って起動します:
sda1 を /boot として、
cryptroot for / and /home
swap should be automagically recognised.
インストールの終わったシステムは起動時のカーネルのコマンドラインとして次のようなオプションを含むものになっているはずです。(実際には違った UUID になります):
root=/dev/mapper/cryptroot cryptopts=source=UUID=12345678-1234-1234-1234-1234567890AB,target=cryptroot
これで /boot には通常のパーティション、暗号化されパスワードで保護された swap パーティションと暗号化された / と /home のパーティションが設定できました。
参考になる情報源:
必ず読むこと:
man cryptsetup
LUKS.
Protect Your Stuff With Encrypted Linux Partitions.
KVM how to use encrypted images.