Ubuntu 22.04のインストール中にフルディスクを暗号化する方法
Linux ディストリビューションは、フルディスク暗号化を導入し、市場のリーダーとなることで追加の保護を得るという素晴らしい仕事をしてきました。
Ubuntu にも多数の機能がバンドルされており、ディスク暗号化もその 1 つです。フルディスク暗号化を有効にすることは、起動するたびにパスコードを入力する必要があるため、たとえデバイスが盗まれた場合でも個人データを何としてでも保護したい人にとって非常に重要です。
フルディスク暗号化は、ブート パーティションとスワップ パーティションも含むドライブの各パーティションに適用されるため、オペレーティング システムのインストール中にのみ有効にすることができます。これが、インストールの最初から有効にする必要がある理由です。
このステップバイステップのチュートリアルでは、Ubuntu 22.04 でフルディスク暗号化を有効にする方法を説明します。その目的のために、LVM ( >論理ボリューム管理) とLUKS (暗号化目的)。
前提条件:
- 起動可能な USB ドライブ。
- 大きなファイルをダウンロードするのに十分な帯域幅を備えたインターネット接続。
- UEFI対応マザーボード。
ただし、プロセスに移る前に、ディスク暗号化の長所と短所について簡単に理解しておきましょう。
ディスク暗号化の長所と短所
各機能には長所と短所がバンドルされており、これはディスク暗号化の場合にも当てはまります。したがって、これから行うステップで何が予想され、何が予想されないかを理解しておくことは常に良い考えです。
長所:
- 機密データを盗難から保護 – はい、これはディスク暗号化の最も興味深い機能です。システムが盗難された場合でも個人データは常に保護されます。この点は、盗難される可能性が高いラップトップなどのモバイル デバイスの場合により適切です。
- データを監視から守ります – Linux ではシステムがハッキングされる可能性は最小限ですが、ユーザーが怪しげな詐欺から身を守れるほど賢くない場合はハッキングされる可能性があります。たとえコンピューターが攻撃を受けていたとしても、ハッカーはデータにアクセスできないということは、それが可能であるもう一つの証拠です。
短所:
- パフォーマンスへの影響 – 最近のコンピュータは問題なく暗号化を処理できるため、これはリソースが少ないシステムにのみ適用できますが、使用中に読み取りおよび書き込み速度が若干遅くなることがあります。
私たちによると、フルディスク暗号化は常に賢明な選択です。これには多くの利点があり、欠点はもう少しリソースを追加することで簡単に克服できます。したがって、セキュリティを強化するためにパフォーマンスが多少低下しても問題がない場合は、暗号化プロセスを開始しましょう。
Ubuntu 22.04 でのディスク全体の暗号化
これは初心者向けのガイドであり、各ステップをガイドするものですが、上級ユーザーでも恩恵を受けることができます。
ステップ 1: Ubuntu 22.04 ISO をダウンロードする
公式 Ubuntu ダウンロード ページにアクセスし、Ubuntu 22.04 LTS バージョンを選択すると、自動的にダウンロードが開始されます。
ステップ 2: ブート可能な Ubuntu USB ドライブを作成する
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 をブートドライブとして選択する必要があります。
ステップ 3: USB ドライブを使用して Ubuntu のインストールを開始する
USB 経由で起動したら、パーティション分割と暗号化の部分に進むことができます。これは複雑に見えるため、一部の新規ユーザーは圧倒されるかもしれませんが、各手順に従うだけですぐにシステムが暗号化されます。
注: 一部のコマンドはNvme SSD ユーザーとは異なるため、必要に応じてコマンドを分けているため、コマンドを適用する前に説明を読んでください。
Ubuntu を起動すると、Ubuntu を試すとUbuntu をインストールする 2 つのオプションが表示されます。パーティションを暗号化するので、ライブ環境を使用する必要があります。したがって、「Ubuntu を試す」というラベルの付いた最初のオプションを選択します。
左上にあるアクティビティをクリックし、「ターミナル」と入力して検索します。最初の結果で Enter キーを押すと、ターミナルが開きます。次に、使用するすべてのコマンドには管理者権限が必要となるため、root ユーザーに切り替えます。
sudo -i
今後のコマンドはBASHに大きく依存するため、次のコマンドでデフォルトのシェルからBASHに切り替えましょう。
bash
次に、インストール ターゲットを特定します。次のコマンドで、マウントされているすべてのストレージ デバイスを一覧表示する必要があります。
lsblk
ターゲット パーティションはサイズによって簡単に識別でき、ほとんどの場合、sda および vda という名前が付けられます。私の場合は20GB のサイズのsdaです。
ターゲットデバイスに変数名を割り当てる(HDDおよびSATA SSDの場合)
このセクションは、SATA SSD のHDDを使用している場合にのみ適用されます。したがって、Nvme SSD を搭載している人の場合、変数名の割り当てについては以下の手順で説明します。
ターゲット デバイスの名前は sda なので、次のコマンドを使用する必要があります。
export DEV="/dev/sda"
ターゲットデバイスに変数名を割り当てる (Nvme SSD のみ)
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 )"
ステップ 4: 新しい GPT パーティションを作成する
新しい GPT パーティション テーブルを作成するには、次のコマンドで sgdidk ユーティリティを使用します。
sgdisk --print $DEV
これで、利用可能なすべてのデータを安全に削除できますが、このシステムを既存のパーティションと一緒にインストールする場合は、この手順を避けてください。
データをフォーマットするには、次のコマンドを使用します。
sgdisk --zap-all $DEV
ステップ 5: インストール用の新しいパーティションを作成する
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
ステップ 6: ブートおよび OS パーティションの暗号化
HDD および SATA SSD のみ
ブート パーティションを暗号化することで暗号化プロセスを開始しましょう。許可を求められたら、すべて大文字で 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のみ
この手順は、システムに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
ステップ 7: パーティションをフォーマットする
これは最も重要な手順の 1 つです。これを行わないと、インストーラーによってファイル システムへの書き込み機能が無効になります。次のコマンドを使用してフォーマットを開始します。
mkfs.ext4 -L boot /dev/mapper/LUKS_BOOT
EFI-SP パーティションのフォーマット (HDD および SATA SSD のみ)
システムに HDD と SATA SSD が搭載されている場合は、次のコマンドを使用して FAT16 でフォーマットします。
mkfs.vfat -F 16 -n EFI-SP ${DEV}3
EFI-SP パーティションのフォーマット (Nvme SSD のみ)
したがって、システムが Nvme SSD を使用している場合は、次のコマンドを使用して 3 番目のパーティションを簡単にフォーマットできます。
mkfs.vfat -F 16 -n EFI-SP ${DEVP}3
ステップ 8: 論理ボリュームグループの作成
LVM は私が最も尊敬する機能の 1 つです。 LVM 機能を使用しない場合でも、LVM を有効にしてもシステムに悪影響を与えることはなく、将来的に LVM が提供する機能が必要になった場合でも問題なく使用できます。
ここでは、 システムのメモリが不足したときにディスク領域を使用するスワップパーティションに4GBを割り当てます。また、ユーザーがディスク領域を最大限に活用できるよう、空き領域の80% をルートに割り当てています。
もちろん、ユースケースに応じて変更したり、将来的に変更したりすることもできます。指定されたコマンドを 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
ステップ9: Ubuntuインストーラーを起動する
Ubuntu インストーラーを開始します。インストーラーを最小化するだけで、ホーム画面にインストーラーが表示されます。
通常のインストールを行うか最小限のインストールを行うかはあなた次第ですが、より良いエクスペリエンスを得るには、いくつかのオプションを選択する必要があります。これらのオプションは、確実にユーザー エクスペリエンスを向上させ、コストを節約するアップデート、サードパーティ製のドライバーとコーデックをインストールします。インストール後に時間がかかります。
インストールの種類のセクションで、「その他」というラベルの付いたオプションを選択します。これは、手動で作成したパーティションの管理に役立ちます。
ここには、同じ名前の複数のパーティションがあります。インストーラーが取得したサイズについて言及するため、元のサイズを簡単に識別できます。それでは、LUKS_BOOT から始めましょう。
LUKS_BOOT を選択し、変更ボタンをクリックします。
次に、最初のオプションでExt4ジャーナリング ファイル システムを選択します。 [パーティションをフォーマットする] オプションを有効にし、マウント ポイントで /boot を選択します。
同様に、ubuntu–vg-root を選択し、変更ボタンをクリックします。ここでは、最初のオプションで Ext4 ジャーナリング ファイル システムを選択します。 [パーティションのフォーマット] オプションを有効にし、最後のオプションで 「/ 」 オプションを選択します。
次に、ubuntu–vg-swap_1 を選択し、オプション ボタンをクリックします。スワップ領域オプションを選択するだけです。
変更を完了し、現在の場所を選択します。
新しいユーザーを作成した直後にいくつかのコマンドを適用するため、ユーザーを作成した後は、「今すぐインストール」ボタンをクリックしないでください。強力なパスワードを持つユーザーを作成します。
ステップ 10: GRUB で暗号化を有効にする
ユーザーを作成した直後に、インストールを開始する前にGRUB で暗号化を有効にするため、ターミナルを開いて指定されたコマンドを使用します。
while [ ! -d /target/etc/default/grub.d ]; do sleep 1; done; echo "GRUB_ENABLE_CRYPTODISK=y" > /target/etc/default/grub.d/local.cfg
インストールが完了したら、ブート可能ドライブを使用する必要があるいくつかの変更を行うため、「テストを続行」をクリックします。
ステップ 11: Ubuntu のインストール後の構成
このセクションでは、ドライブをマウントし、必要なパッケージをインストールし、暗号化を機能させるために必要な変更をいくつか加えます。したがって、ターミナルを開いて、次の手順に従います。
Chroot環境の作成
Chroot は、Ubuntu をインストールしたパーティションにアクセスするために使用されます。指定されたコマンドを使用します。そのうちの 1 つはドライブのマウントと 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-initramfs パッケージをインストールする
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
キーファイルを作成して LUKS に追加する
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
boot_os.file および Crypttab へのキーの追加 (HDD および SATA SSD のみ)
システムの暗号化の成功にかなり近づいているため、これは最後のステップの 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
boot_os.file および Crypttab へのキーの追加 (Nvme SSD のみ)
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 ファイルを更新する
次に、次のコマンドでロック解除スクリプトとキー ファイルを追加するため、initialramfs ファイルを更新しましょう。
update-initramfs -u -k all
ここでシステムを再起動すると、システムを起動するための GRUB パスフレーズ プロンプトが表示されます。
このガイドの主な目的は、Ubuntu でフルディスク暗号化を有効にすることで初心者でもシステムを保護できる、わかりやすい手順を作成することでした。