Ubuntu 22.04 のインストール中にディスク全体を暗号化する方法


Linux ディストリビューションは、ディスク全体の暗号化を導入し、市場のリーダーになることで、保護を強化するという素晴らしい仕事をしてきました。

Ubuntu には多数の機能がバンドルされており、ディスク暗号化もその 1 つです。フルディスク暗号化を有効にすることは、起動のたびにパスコードを入力する必要があるため、デバイスが盗まれたとしてもプライベートデータを保護したい人にとって非常に重要です.

フル ディスク暗号化は、ブート パーティションとスワップ パーティションを含むドライブの各パーティションに適用されるため、オペレーティング システムのインストール中にのみ有効にすることができます。これが、インストールの最初から有効にする必要がある理由です。

この段階的なチュートリアルでは、Ubuntu 22.04 でディスク全体の暗号化を有効にする方法について説明します。そのために、LVM (論理ボリューム管理) と LUKS (暗号化の目的で) を利用します。

  • 起動可能な USB ドライブ。
  • 大きなファイルをダウンロードするのに十分な帯域幅を備えたインターネット接続
  • UEFI 対応のマザーボード。

ただし、プロセスにジャンプする前に、ディスク暗号化の長所と短所について簡単に考えてみましょう.

各機能には長所と短所がバンドルされており、これはディスク暗号化の場合にも当てはまります。したがって、これから行うステップから何を期待し、何を期待しないかを知ることは常に良い考えです.

  • 機密データを盗難から保護 – はい、これはディスク暗号化の最も優れた機能です。システムが盗まれた場合でも、個人データは常に保護されます。この点は、盗まれる可能性が高いラップトップなどのモバイル デバイスの場合により適切です。
  • 監視からデータを保護 – Linux ではシステムがハッキングされる可能性は最小限ですが、ユーザーが怪しい詐欺から身を守るほど賢くない場合にハッキングされる可能性があります。あなたのコンピュータが攻撃を受けていても、ハッカーはあなたのデータにアクセスできません。これは、それを可能にするもう 1 つの証拠です。

  • パフォーマンスへの影響 - 最新のコンピュータは問題なく暗号化を処理できるため、これはリソースの少ないシステムにのみ適用できますが、使用中に読み取りと書き込みの速度が少し遅くなることがあります。

私たちによると、ディスク全体の暗号化は常に賢明な選択です。多くの長所があり、さらにいくつかのリソースで短所を簡単に克服できるからです。したがって、セキュリティを強化するためにパフォーマンスが少し低下しても問題ない場合は、暗号化プロセスを開始しましょう.

Ubuntu 22.04 でディスク全体を暗号化する

これは初心者向けのガイドであり、各ステップをガイドすることになっていますが、上級ユーザーはまだ恩恵を受けることができます.

公式の Ubuntu ダウンロード ページにアクセスし、Ubuntu 22.04 LTS バージョンを選択すると、自動的にダウンロードが開始されます。

Ubuntu ISO イメージを USB ドライブにフラッシュするには、現在使用している OS を自動的に検出する Balena Etcher を使用します。 Balena Etcher のインストールが完了したら、システムにインストールします。

ISO ファイルを書き込むには、balenaEtcher を開き、「ファイルからフラッシュ」オプションを選択し、最近ダウンロードした Ubuntu 22.04 ISO ファイルを選択します。

次に、ISO ファイルをフラッシュするドライブを選択します。 「ターゲットを選択」オプションを選択すると、システムにマウントされているすべてのドライブが一覧表示されます。利用可能なオプションから、USB または DVD ドライブを選択します。

USB ドライブを正常にフラッシュしたら、USB ドライブから起動します。 USB から起動するには、システムを再起動し、システムの起動中に F10、F2、F12、F1、または DEL を使用します。そこから、起動ドライブとして USB を選択する必要があります。

USB 経由で起動したら、パーティショニングと暗号化の部分に進むことができます。これは複雑に見えるため、一部の新規ユーザーを圧倒する可能性がありますが、各ステップに従うだけで、すぐにシステムを暗号化できます.

注: 一部のコマンドは Nvme SSD ユーザー向けに異なるため、コマンドを適用する前に説明をお読みください。必要に応じてコマンドを分けています。

Ubuntu を起動すると、[Ubuntu を試す] と [Ubuntu をインストールする] の 2 つのオプションが表示されます。パーティションを暗号化するため、ライブ環境を使用する必要があります。したがって、\Try Ubuntu というラベルの付いた最初のオプションを選択します。

左上にある [アクティビティ] をクリックし、「ターミナル」と入力して検索します。最初の結果で Enter キーを押すと、ターミナルが開きます。次に、使用するすべてのコマンドで管理者権限が必要になるため、root ユーザーに切り替えます。

$ sudo -i

今後のコマンドは BASH に大きく依存するため、次のコマンドでデフォルト シェルから BASH に切り替えましょう。

# bash

次に、インストール ターゲットを特定します。次のコマンドで、マウントされているすべてのストレージ デバイスを一覧表示する必要があります。

# lsblk

ターゲット パーティションはサイズで簡単に識別でき、ほとんどの場合、sda および vda という名前が付けられます。私の場合、サイズが 20GB の sda です。

このセクションは、SATA SSD に HDD を使用している場合にのみ適用されます。したがって、Nvme SSD を装備している場合は、変数名の割り当てについて以下の手順で説明します。

ターゲット デバイスの名前は sda なので、次のコマンドを使用する必要があります。

# export DEV="/dev/sda"

あなたが Nvme を使用している場合、ターゲット デバイスの命名スキームは /dev/nvme$ {CONTROLLER}n$ {NAMESPACE}p$ {PARTITION} となるため、パーティションが 1 つしかない場合は、特定のコマンドに似た名前を持っている可能性があります。

# export DEV="/dev/nvme0n1"

それでは、次のコマンドで暗号化されたデバイス マッパーの変数を構成しましょう。

# export DM="${DEV##*/}"

各 Nvme デバイスにはサフィックスに 'p' が必要なので、特定のコマンドを使用してサフィックスを追加します。

# export DEVP="${DEV}$( if [[ "$DEV" =~ "nvme" ]]; then echo "p"; fi )"
# export DM="${DM}$( if [[ "$DM" =~ "nvme" ]]; then echo "p"; fi )"

新しい GPT パーティション テーブルを作成するには、次のコマンドで sgdidk ユーティリティを使用します。

# sgdisk --print $DEV

これで、利用可能なすべてのデータを安全に削除できますが、このシステムを既存のパーティションと一緒にインストールする場合は、この手順を避けてください。

データをフォーマットするには、次のコマンドを使用します。

# sgdisk --zap-all $DEV

BIOS モードの GRUB のコア イメージ用に 2MB のパーティション、768MB のブート パーティション、EFI ファイル システム用に 128MB を割り当てます。残りのスペースは、必要なデータを保存できるユーザーに割り当てられます。

指定されたコマンドを 1 つずつ使用して、ドライブを分割します。

# sgdisk --new=1:0:+768M $DEV
# sgdisk --new=2:0:+2M $DEV
# sgdisk --new=3:0:+128M $DEV
# sgdisk --new=5:0:0 $DEV
# sgdisk --typecode=1:8301 --typecode=2:ef02 --typecode=3:ef00 --typecode=5:8301 $DEV

パーティションの名前を変更するには、次のコマンドを使用します。

# sgdisk --change-name=1:/boot --change-name=2:GRUB --change-name=3:EFI-SP --change-name=5:rootfs $DEV
# sgdisk --hybrid 1:2:3 $DEV

最近作成されたパーティションを一覧表示するには、次のコマンドを使用します。

# sgdisk --print $DEV

ブート パーティションを暗号化して、暗号化プロセスを開始しましょう。許可を求めるときは、すべて大文字で YES と入力する必要があります。

# cryptsetup luksFormat --type=luks1 ${DEV}1

それでは、次のコマンドで OS パーティションを暗号化しましょう。

# cryptsetup luksFormat --type=luks1 ${DEV}5

さらにインストールするには、次のコマンドを使用して暗号化されたパーティションのロックを解除し、ブート パーティションと OS パーティションのロックを解除する必要があります。

# cryptsetup open ${DEV}1 LUKS_BOOT
# cryptsetup open ${DEV}5 ${DM}5_crypt

この手順は、システムに Nvme SSD が搭載されている場合にのみ適用されます。次のコマンドを使用して、ブート パーティションと OS パーティションを暗号化します。

# cryptsetup luksFormat --type=luks1 ${DEVP}1
# cryptsetup luksFormat --type=luks1 ${DEVP}5

次に、インストールでさらに処理する必要があるため、暗号化されたパーティションのロックを解除しましょう。

# cryptsetup open ${DEVP}1 LUKS_BOOT
# cryptsetup open ${DEVP}5 ${DM}5_crypt

これは最も重要な手順の 1 つです。これを行わないと、インストーラーがファイル システムへの書き込み機能を無効にします。次のコマンドを使用してフォーマットを開始します。

# mkfs.ext4 -L boot /dev/mapper/LUKS_BOOT

システムに HDD と SATA SSD が装備されている場合は、次のコマンドを使用して FAT16 でフォーマットします。

# mkfs.vfat -F 16 -n EFI-SP ${DEV}3

したがって、システムが Nvme SSD を使用している場合、次のコマンドを使用して 3 番目のパーティションを簡単にフォーマットできます。

# mkfs.vfat -F 16 -n EFI-SP ${DEVP}3

LVM は、私が最も尊敬する機能の 1 つです。 LVM 機能を使用しない場合でも、有効にしてもシステムに害はありません。将来、LVM が提供する機能が必要になった場合でも、問題なく使用できます。

ここでは、システムがメモリ不足になったときにディスク領域を使用するスワップ パーティションに 4GB を割り当てます。また、空き容量の 80% を root に割り当てているため、ユーザーはディスク容量を最大限に活用できます。

もちろん、ユースケースに応じて変更したり、将来的に変更したりすることもできます。指定されたコマンドを 1 つずつ使用すると、システムはすぐに LVM の準備が整います。

# pvcreate /dev/mapper/${DM}5_crypt
# vgcreate ubuntu--vg /dev/mapper/${DM}5_crypt
# lvcreate -L 4G -n swap_1 ubuntu—vg
# lvcreate -l 80%FREE -n root ubuntu--vg

Ubuntu インストーラーを起動します。インストーラーを最小化するだけで、ホーム画面にインストーラーが表示されます。

通常のインストールでも最小インストールでも、それはあなた次第ですが、より良いエクスペリエンスを得るためにいくつかのオプションを選択する必要があり、ユーザーエクスペリエンスを確実に向上させ、節約するアップデートとサードパーティのドライバーとコーデックをインストールしますインストール後の時間。

インストールタイプのセクションで、手動で作成したパーティションを管理するのに役立つ「何か他のもの」というラベルの付いたオプションを選択します。

ここには、同じ名前の複数のパーティションがあります。インストーラーが取得したサイズについて言及するので、元のものを簡単に識別できます。それでは、LUKS_BOOT から始めましょう。

LUKS_BOOT を選択し、変更ボタンをクリックします。

ここで、最初のオプションで Ext4 ジャーナリング ファイル システムを選択します。 Format the partition オプションを有効にし、マウント ポイントで /boot を選択します。

同様に、ubuntu-vg-root を選択し、変更ボタンをクリックします。ここでは、最初のオプションで Ext4 ジャーナリング ファイル システムを選択します。 Format the partition オプションを有効にし、最後のオプションで \/ オプションを選択します。

次に、ubuntu–vg-swap_1 を選択し、オプション ボタンをクリックします。スワップ領域オプションを選択してください。

変更を確定し、現在の場所を選択します。

ユーザーを作成した後、新しいユーザーを作成した直後にいくつかのコマンドを適用するため、[今すぐインストール] ボタンをクリックしないでください。強力なパスワードでユーザーを作成します。

インストールを開始する前に GRUB で暗号化を有効にするため、ユーザーを作成した直後にターミナルを開き、指定されたコマンドを使用します。

# while [ ! -d /target/etc/default/grub.d ]; do sleep 1; done; echo "GRUB_ENABLE_CRYPTODISK=y" > /target/etc/default/grub.d/local.cfg

インストールが完了したら、起動可能なドライブを使用する必要があるいくつかの変更を行うため、[テストを続行] をクリックします。

このセクションでは、ドライブをマウントし、必要なパッケージをインストールし、暗号化を機能させるために必要な変更を加えます。ターミナルを開いて、指定された手順に従います。

Chroot は、Ubuntu をインストールしたばかりのパーティションにアクセスするために使用されます。ドライブのマウントとchroot環境の作成を含む特定のコマンドを使用します。

# mount /dev/mapper/ubuntu----vg-root /target
# for n in proc sys dev etc/resolv.conf; do mount --rbind /$n /target/$n; done 
# chroot /target
# mount -a

Cryptsetup パッケージは、起動時に暗号化されたファイルのロックを解除する役割を担い、次のコマンドで簡単にインストールできます。

# apt install -y cryptsetup-initramfs

キー ファイルは、パスコードを照合して復号化するために使用され、暗号化されたパーティションでもある /boot/ に保存されます。指定されたコマンドを使用してさらに進みます。

# echo "KEYFILE_PATTERN=/etc/luks/*.keyfile" >> /etc/cryptsetup-initramfs/conf-hook 
# echo "UMASK=0077" >> /etc/initramfs-tools/initramfs.conf 

512 バイトのキー ファイルを作成して安全にし、暗号化されたボリュームを追加します。指定されたコマンドを利用することでそれを実現できます。

# mkdir /etc/luks
# dd if=/dev/urandom of=/etc/luks/boot_os.keyfile bs=512 count=1
# chmod u=rx,go-rwx /etc/luks
# chmod u=r,go-rwx /etc/luks/boot_os.keyfile

これは、システムの暗号化にかなり近づいているため、最後のステップの 1 つになるはずです。次のコマンドを使用して、boot_os.key ファイルにキーを追加します。

# cryptsetup luksAddKey ${DEV}1 /etc/luks/boot_os.keyfile
# cryptsetup luksAddKey ${DEV}5 /etc/luks/boot_os.keyfile 

crypttab にキーを追加するには、次のコマンドを使用します。

# echo "LUKS_BOOT UUID=$(blkid -s UUID -o value ${DEV}1) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
# echo "${DM}5_crypt UUID=$(blkid -s UUID -o value ${DEV}5) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab

Nvme SSD を使用している場合は、次のコマンドを使用して boot_os.file にキーを追加できます。

# cryptsetup luksAddKey ${DEVP}1 /etc/luks/boot_os.keyfile
# cryptsetup luksAddKey ${DEVP}5 /etc/luks/boot_os.keyfile 

同様に、crypttab にキーを追加するには、次のコマンドを使用します。

# echo "LUKS_BOOT UUID=$(blkid -s UUID -o value ${DEVP}1) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab
# echo "${DM}5_crypt UUID=$(blkid -s UUID -o value ${DEVP}5) /etc/luks/boot_os.keyfile luks,discard" >> /etc/crypttab

次のコマンドでロック解除スクリプトとキーファイルを追加するため、initialramfs ファイルを更新しましょう。

# update-initramfs -u -k all

ここで、システムを再起動すると、システムを起動するための GRUB パスフレーズ プロンプトが表示されます。

このガイドの主な目的は、初心者でも Ubuntu でディスク全体の暗号化を有効にすることでシステムを保護できる、わかりやすい手順を作成することでした。