Googleクラウドサービス(コンピューティングインスタンス)はデフォルトでディスクストレージの暗号化を提供し、顧客はこの機能を使用して独自のキーを提供できます。顧客が提供した暗号化(詳細ここ返品)。
ディスク暗号化を適用する方法パスワード設定Googleに暗号化キーを提供しませんか?
答え1
Linuxでは、暗号化ディスク(luks)を使用すると、起動時にパスワードでロックが解除されます。ここでのアイデアは、次のコマンドを使用してディスクを暗号化することです。パスワード設定Googleシステム(デフォルトでは暗号化されています)の上からインスタンスに早期にアクセスして、起動時にドライブのロックを解除できます。これはリモートシリアルコンソール機能を介して達成できます(このガイドではopensuse VMを使用するため、手順は他のディストリビューションと変わりません)。
欠点:
- ディスク速度が10〜15%減少します。
- 起動/再起動時にシリアルセッションを介して暗号化されたパスワードを導入する必要があります。
- 失敗/移行時に再開するには、自動でない場合は手動でパスワードを入力する必要があります。
プロフェッショナル:
- データアクセスは実際には顧客/所有者に制限されます。
- 未使用顧客個人ディスク暗号化。
- お客様は、スナップショットのバックアップとイメージのプライベートディスク暗号化を持っています。
- Googleはディスク上のデータにアクセスできません(または少なくとも非常に困難です)。
- ディスク暗号化キーは Google には提供されません。
- カスタマイズ可能な暗号化方法、アルゴリズム、およびキーサイズ。
- データ保護の改善など
実装の概要:
- 0 既存の VM インスタンスがある
- 1インスタンス/VMシリアルアクセスを有効にする
- 2追加(ターゲット)暗号化ハードディスクの作成
- 3現在のハードドライブを暗号化されたハードドライブにコピーします。
- 4 既存のドライブを新しいドライブに交換する
- 5 VMを起動し、シリアルコンソールを介してパスワードを入力します。
仮想マシンのディスクを暗号化する方法(gcloud、cryptsetup):
前提条件:
- ターゲット領域に新しい一時VMを作成します(ターゲットマシンのコピーである必要があり、スナップショットでディスクをバックアップしてから、スナップショットを新しいディスクに復元できます)。
- 新しい空のディスクを作成します(後で暗号化されます)。これはターゲットディスクです。サイズは、ソースディスク(新しい/bootパーティションの場合)より少なくとも256 MB以上大きくなければならず、スペースを拡張するには大きくなければなりません。
- 両方のディスクを一時的な仮想マシンにマウントして起動します。
Temporary VM Config: /dev/sda : main disk, copy of the original source disk /dev/sdb : new empty disk larger than /dev/sda
シリアルコンソール:
グラップ構成の更新:
- 要約:シリアルコンソールを有効にする(シリアルコンソールを介してgrubにアクセスできるように設定)
- このコンテンツを次に追加/編集してください。
/etc/default/grub
# ...Enabling serial console... GRUB_TIMEOUT=15 GRUB_TERMINAL="serial" GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1" # ...End
- 設定の適用
grub2-mkconfig -o /boot/grub2/grub.cfg
- 再起動し、シリアルコンソールからgrubにアクセスできることを確認してください。
ターゲットディスクをフォーマットします。
- 要約:
/boot
既存のシステムにすでに別々のパーティションがあるかどうかにかかわらず、システム用(暗号化されていない)とシステム用/
(暗号化されている)の2つのパーティションを作成する必要があります。/boot
新しいシステムでは、システムにgrubを起動してパスワードを入力するように要求する必要があります。暗号化されたパーティションのロックを解除します。 - 空のディスクをフォーマットし、2つのパーティションを作成します。 1つはサイズが256 MB以上(含まれています
/boot
)、もう1つは残りのスペースを含みます。fdisk /dev/sdb
これを行うには、256 MB以上の最初のパーティションをプライマリパーティションとして作成して有効にします。起動可能なフラグ;その後、残りのスペースと同じサイズで2番目のプライマリパーティションを作成します。 (以前のシステムでスワップパーティションを使用している場合は、このパーティションも作成する必要があります。)/dev/sda : /dev/sdb : |- sdb1 : 256 MB primary and bootable (empty) |- sdb2 : xx GB primary (empty)
- ブートパーティションのファイルシステムをext4に設定
mkfs.ext4 /dev/sdb1
- セキュリティ強化のために2番目のパーティションを消去する
dd if=/dev/urandom of=/dev/sdb2 bs=4096 status=progress
sdb2
暗号化を次に設定
必要に応じてパスワード、キーサイズ、暗号化の種類などを変更してください。cryptsetup -y -v --cipher aes-xts-plain64 --key-size 256 --pbkdf-force-iterations=100200 --hash sha256 --type luks1 --label=linux --use-random luksFormat /dev/sdb2
- 暗号化されたパーティションの確認
cryptsetup luksDump /dev/sdb2
- 暗号化されたパーティションのロック解除
cryptsetup luksOpen /dev/sdb2 crypteddisk
- 暗号化マッピングパーティションをext4に設定
mkfs.ext4 /dev/mapper/crypteddisk
- 暗号化されたパーティションをオフにする
cryptsetup close /dev/mapper/crypteddisk
- 要約:
ソースディスクを複製します。
- 要約:
/
システムを新しい暗号化パーティション(sdb2)にコピーする必要があります/dev/mapper/crypteddisk
。この段階では、さまざまなツールを使用できます。このガイドdd
では重要なヒントdd
ここでエラーなしでディスクをコピーするには、元のパーティションをアンマウントする必要があります。欲しいならデータ損失防止別の一時的な仮想マシンを作成し、ソースとターゲットディスクを追加のディスクに接続することでこの手順を実行できますdd
。します。パーティションをアンマウントしてから(推奨しない)fsck
ソースをアンマウントしなかったために発生したエラーを修正するために使用されます。 - 暗号化されたパーティションのロック解除
cryptsetup luksOpen /dev/sdb2 crypteddisk
- 次のコマンドを使用して、ソースパーティションをターゲットにコピーします(
/
と仮定/dev/sda1
)。dd if=/dev/sda1 of=/dev/mapper/crypteddisk bs=4096 status=progress
- 新しい暗号化パーティションの確認と回復
fsck /dev/mapper/crypteddisk
- ディスク構造を確認してください
fdisk -l
(暗号化されたディスクサイズには注意しないでください。後で修正します)。
- 要約:
パーティションUUID:
- すべてのパーティションのすべてのUUIDを取得し、その情報を保持します。
blkid /dev/sda blkid /dev/sda1 blkid /dev/sdb blkid /dev/sdb1 blkid /dev/sdb2 blkid /dev/mapper/crypteddisk
- すべてのパーティションのすべてのUUIDを取得し、その情報を保持します。
ディスクのサイズを変更します。
- 要約:この手順では、新しい暗号化パーティションのサイズを拡張します。
- 暗号化されたパーティションの拡張
cryptsetup resize crypteddisk -v e2fsck -f /dev/mapper/crypteddisk resize2fs /dev/mapper/crypteddisk
バックアップMBR:
- 必須ではありませんが便利です。
dd if=/dev/sdb of=/backup/location/sdb.mbr count=1 dd if=/dev/sda of=/backup/location/sda.mbr count=1
- 必須ではありませんが便利です。
ブートパーティションを設定します。
- 新しいブートパーティションをマウントし、
/boot
内容をコピーします。mkdir /tmp/boot mount /dev/sdb1 /tmp/boot cp -a /boot/* /tmp/boot/ ls -l /tmp/boot/* umount /tmp/boot rmdir /tmp/boot
- 既存の
/boot
フォルダの内容を削除してインストール場所に保ちます。mkdir /tmp/system mount /dev/mapper/crypteddisk /tmp/system rm -rf /tmp/system/boot/* ls -l /tmp/system/boot/* umount /tmp/system rmdir /tmp/system
- 新しいブートパーティションをマウントし、
Chroot を実行し、新しいシステムを設定します。
新しい暗号化ディスクを現在のディスクとしてマウントし、新しいシステム構成、暗号化などを適用するように設定します(
/mnt
続行する前に空であることも確認してください)。mount /dev/mapper/crypteddisk /mnt/ mount /dev/sdb1 /mnt/boot for i in sys dev proc; do mount --bind /$i /mnt/$i; done chroot /mnt
これからは新しいシステムを使用します(設定ファイルのsdbはsdaとして扱われる必要があることを覚えておいてください)。
構成を更新し
/etc/fstab
(sda1の代わりにsdb1 uuidを使用する必要があります)、cat /etc/fstab
出力は次のようになります。# Main Partition ---------------------- # Entry for /dev/mapper/crypteddisk (sda2) : UUID=CHANGE-THIS-WITH-CRYPTEDDISK-UUID / ext4 noatime,acl 0 0 # Boot Partition ---------------------- # Entry for /dev/sda1 : #/dev/sda1 /boot ext4 defaults 1 2 UUID=CHANGE-THIS-WITH-THE-CURRENT-SDB1-UUID /boot ext4 noatime,acl 1 2 # Swap Partition/File ----------------- /swap/swapfile swap swap defaults 0 0 #
/etc/crypttab
構成を更新し(crypttab
ファイルがない場合は-rw-r--r--
権限を使用して作成)、sda1またはcrypteddiskの代わりにsdb2 uuidを使用する必要があります。cat /etc/crypttab
出力は次のとおりです。crypteddisk UUID=CHANGE-THIS-WITH-CURRENT-SDB2-UUID
grub設定を更新して
/etc/default/grub
変更するだけですGRUB_ENABLE_CRYPTODISK
。GRUB_CMDLINE_LINUX
出力はGRUB_DISABLE_OS_PROBER
次のとおりですcat /etc/default/grub
。GRUB_DISTRIBUTOR=My-Custom-Server... # .................................... Command line #GRUB_CMDLINE_LINUX=" root=/dev/sda1 disk=/dev/sda resume=swap console=ttyS0,38400n8 quiet" GRUB_CMDLINE_LINUX=" root=/dev/mapper/crypteddisk luks_root=/dev/sda2 luks="root" disk=/dev/sda resume=swap console=ttyS0,38400n8 quiet" # .................................... Options GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_GFXMODE=800x600 GRUB_GFXPAYLOAD_LINUX=keep GRUB_THEME=/boot/grub2/theme/theme.txt GRUB_BACKGROUND= # .................................... Enabling serial console... GRUB_TIMEOUT=30 GRUB_TERMINAL="serial" GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1" # .................................... Enabling cryptsetup GRUB_ENABLE_CRYPTODISK="y" # .................................... Ignore other os GRUB_DISABLE_OS_PROBER="true" # ....................................
グラップの変更を適用します。
grub2-mkconfig -o /boot/grub2/grub.cfg
初期化RAMディスクを更新し、暗号化モジュールを強制的に含めます。
mkinitrd -d /dev/mapper/crypteddisk -f "dm luks"
MBRを更新し、新しいディスクにgrubを再インストールして起動可能にします。
grub2-install /dev/sdb
chrootを終了し、すべてを削除します。
exit cd / for i in sys dev proc; do umount /mnt/$i; done unmount /mnt/boot unmount /mnt
パーティションのマウント解除中に問題が発生した場合は、
-l
次のオプションを使用します。umount -l /mnt/sys
魔法の詠唱: