仮想マシンのディスクを暗号化する方法(gcloud、cryptsetup):

仮想マシンのディスクを暗号化する方法(gcloud、cryptsetup):

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
      
  • シリアルコンソール:

    • 要約:シリアルポート接続を有効にしてシリアルポート(文書1文書2文書3)
    • 下にメタデータserial-port-enable値の追加TRUE(およびインスタンスオプションでシリアルポートを有効にする)
    • sshシリアルポートに/ connectを使用してくださいgcloud。例:
      gcloud compute --project=prj-name connect-to-serial-port vm-name --zone=us-central2-b
      
  • グラップ構成の更新:

    • 要約:シリアルコンソールを有効にする(シリアルコンソールを介して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
      
  • ディスクのサイズを変更します。

    • 要約:この手順では、新しい暗号化パーティションのサイズを拡張します。
    • 暗号化されたパーティションの拡張
      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_CRYPTODISKGRUB_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

  • 魔法の詠唱:

    • 一時仮想マシンをシャットダウンし、すべてのディスクを取り外します。暗号化されたディスクをブートディスクとして接続します。
    • 一時的な仮想マシンを開き、シリアルコンソールを使用して接続します。 (起動時に暗号化されたパーティションのロックを解除するには、パスワードの入力を求められます)。
    • すべてが正常に機能していることをテストし、本番仮想マシンで新しい暗号化ディスクを使用し、一時コピーディスクと一時仮想マシンを削除します。
    • 追加情報も提供されますここそしてここ。楽しむ;)

関連情報