Ubuntu 22.04をインストールしながらディスク全体を暗号化する方法
Linuxディストリビューションは、フルディスク暗号化を導入し、市場のリーダーとなることで、追加の保護を提供する素晴らしい仕事をしてきました。
Ubuntu には多数の機能が搭載されており、ディスク暗号化もその一つです。フルディスク暗号化を有効にすることは、デバイスが盗まれた場合でもプライベートデータを何としても保護したい人にとって重要です。なぜなら、起動のたびにパスコードの入力が必要だからです。
フルディスク暗号化は、オペレーティングシステムをインストールしている間のみ有効にできます。なぜなら、フルディスク暗号化はドライブの各パーティションに適用され、ブートパーティションやスワップパーティションも含まれるからです。これが、インストールの最初から有効にする必要がある理由です。
このステップバイステップのチュートリアルでは、Ubuntu 22.04でフルディスク暗号化を有効にする方法を案内します。その目的のために、LVM(論理ボリューム管理)とLUKS(暗号化用)を利用します。
前提条件:
- ブータブルUSBドライブ。
- 大きなファイルをダウンロードするのに十分な帯域幅を持つインターネット接続。
- UEFI対応のマザーボード。
しかし、プロセスに飛び込む前に、ディスク暗号化の利点と欠点について簡単に理解しておきましょう。
ディスク暗号化の利点と欠点
各機能には利点と欠点があり、これはディスク暗号化の場合にも当てはまります。したがって、どのようなステップを踏むことになり、それから何を期待し何を期待しないべきかを知ることは常に良い考えです。
利点 :
- あなたの敏感なデータを盗難から保護します - はい、これはディスク暗号化の最も興味深い機能であり、あなたのプライベートデータはシステムが盗まれても常に安全です。この点は、ノートパソコンのようなモバイルデバイスの場合、盗まれる可能性が高いので、より適切です。
- 監視からデータを守ります – Linuxではシステムがハッキングされる可能性は最小限ですが、ユーザーが怪しい詐欺から自分を守るために賢くなければ、ハッキングされることもあります。たとえコンピュータが攻撃を受けていても、ハッカーがあなたのデータにアクセスすることはできず、それが有効性のもう一つの証明となります。
欠点 :
- パフォーマンスへの影響 – これはリソースが少ないシステムにのみ適用されます。現代のコンピュータは問題なく暗号化を処理できますが、使用中には読み書き速度がわずかに遅くなることがあります。
私たちによれば、フルディスク暗号化は常に賢明な選択であり、多くの利点を提供し、いくつかのリソースを追加することで欠点を克服するのが簡単です。したがって、より良いセキュリティのために少しのパフォーマンスの低下を許容できるのであれば、暗号化プロセスを開始しましょう。
Ubuntu 22.04でディスク全体を暗号化する
これは初心者向けのガイドであり、各ステップを案内することを目的としていますが、上級者もこれから恩恵を受けることができます。
ステップ1: Ubuntu 22.04 ISOをダウンロードする
公式のUbuntuダウンロードページにアクセスし、Ubuntu 22.04 LTSバージョンを選択すると、自動的にダウンロードが開始されます。
ステップ2: ブータブルUbuntu USBドライブを作成する
USBドライブにUbuntu ISOイメージをフラッシュするために、私たちはBalena Etcherを使用します。このツールは、現在使用しているOSを自動的に検出します。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つのオプションが表示されます。パーティションを暗号化するため、ライブ環境を使用する必要があります。したがって、最初のオプションを選択してください。
アクティビティを左上にある強調表示された部分でクリックし、ターミナルで検索します。最初の結果でEnterを押すと、ターミナルが開きます。次に、すべてのコマンドは管理者権限を必要とするため、ルートユーザーに切り替えます。
$ sudo -i
今後のコマンドはBASHに大きく依存するため、以下のコマンドでデフォルトシェルをBASHに切り替えましょう:
# bash
次に、インストール対象を特定するために、以下のコマンドを使用してすべてのマウントされたストレージデバイスをリストする必要があります。
# lsblk
サイズによってターゲットパーティションを簡単に識別できます。ほとんどの場合、それはsdaまたはvdaと名付けられています。私の場合、それはサイズ20GBのsdaです。
ターゲットデバイスに変数名を割り当てる(HDDおよびSATA SSD用)
このセクションは、SATA SSDを使用している場合のみ適用されます。ですので、Nvme SSDを搭載している方は、変数名の割り当てについては以下のステップで説明します。
sdaという名前のターゲットデバイスがあるため、次のコマンドを使用する必要があります。
# export DEV="/dev/sda"
ターゲットデバイスに変数名を割り当てる(Nvme SSD専用)
もしあなたがNvmeを使用しているのであれば、ターゲットデバイスの名称規則は/dev/nvme$ {CONTROLLER}n$ {NAMESPACE}p$ {PARTITION}となりますので、パーティションが一つだけであれば、次のコマンドに似た名前になる可能性が高いです:
# 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を割り当て、残りのスペースはユーザーに割り当てて、希望するデータを保存できるようにします。
ドライブをパーティション分割するには、指定されたコマンドを一つずつ使用してください:
# 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: パーティションのフォーマット
これは最も重要なステップの一つです。これを行わないと、インストーラーはファイルシステムへの書き込み能力を無効にします。フォーマットを開始するには、次のコマンドを使用してください:
# 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パーティションをフォーマットする(NVM SSDのみ)
したがって、あなたのシステムがNvme SSDを使用している場合は、次のコマンドを使用して3番目のパーティションを簡単にフォーマットできます:
# mkfs.vfat -F 16 -n EFI-SP ${DEVP}3
ステップ8:論理ボリュームグループを作成する
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専用)
これは私たちのシステムを成功裏に暗号化するための最後のステップの一つであるはずです。以下のコマンドを使用して、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
初期 RAM ファイルを更新する
では、次のコマンドを使ってinitialramfsファイルを更新しましょう。これはアンロックスクリプトとキー ファイルを追加します:
# update-initramfs -u -k all
さて、システムを再起動してください。そうすれば、システムを起動するためのGRUBパスフレーズのプロンプトが表示されます。
このガイドの主な意図は、初心者でも Ubuntu のフルディスク暗号化を有効にして自分のシステムを保護できるようにする、易しく従うことのできる手順を作ることでした。
























