既存のDebian 12で暗号化されたSWAPパーティションを設定する方法

既存のDebian 12システムでスワップ領域を暗号化することは、メモリページ、パスワード、ドキュメントの断片、その他の一時的なデータが平文でディスクに書き込まれるのを防ぎたい場合に有効です。休止状態を必要としないマシンであれば、Debianのドキュメントにはシンプルな設計方法が示されています。スワップパーティションを通常のdm-cryptで暗号化し、起動時に毎回新しいランダムな暗号化キーを生成するというものです。

このガイドでは、その設計を採用しています。Debian 12「bookworm」、専用のスワップパーティション、およびinitシステムとしてsystemdを使用することを前提としています。ブロックデバイスのパスに誤りがあると誤ったパーティションが上書きされる可能性があるため、コマンドは意図的に保守的な記述になっています。まず判断ポイントをよく読んでから、例の値をそのままコピーするのではなく、ご自身のデバイス識別子に置き換えてください。

Debian の cryptsetup ドキュメントでは、暗号化されたスワップについて具体的に説明しており、スワップを無効化し、パーティションを に追加し/etc/crypttab、マッピングされたデバイスに/dev/urandom変更して/etc/fstabから、スワップを再度有効化することを推奨しています。Debian cryptsetup の README を参照してください。Debian 12 のcrypttab(5) マニュアルにも、crypttab フィールドと通常の dm-crypt オプションが記載されています。

ランダムキーで暗号化されたスワップを使用すべきでしょうか?

暗号化されたスワップ領域が必要で、かつ休止状態を必要としない場合に使用します。キーは起動のたびに再生成されるため、シャットダウン後に古いスワップ領域の内容は読み取れなくなります。これは、ほとんどのデスクトップおよびサーバー環境で求められるセキュリティ特性です。

休止状態、サスペンド・トゥ・ディスク、ハイブリッドスリープ、またはサスペンド・アンド・ハイバネートを使用している場合は、この設定をそのまま使用しないでください。再開するには、次の起動時に同じ休止状態イメージを復号化する必要があります。新しいランダムキーを使用すると、それが不可能になります。Debian は、ランダムキーの交換を再開デバイスとして使用できないことを明示的に示しています。Debian 12 のsystemd hibernate-resume のドキュメントにも同様に、再開は永続的な再開デバイスに依存することが示されています。

休止状態が必要な場合は、適切なロック解除および再開設定を備えたLUKSベースのスワップデバイスなどの永続的な暗号化設計を使用してください。これは別の設定であり、意図的にこのガイドの範囲外としています。

スワップ領域は既にディスク暗号化によって保護されていますか?

変更を加える前に必ず確認してください。スワップ論理ボリュームが既にLUKS暗号化コンテナ内に存在する場合、dm-cryptレイヤーを追加しても、複雑さが増すだけで実質的なメリットはほとんどない可能性があります。

swapon --show
lsblk -o NAME,PATH,TYPE,FSTYPE,SIZE,MOUNTPOINTS,PARTUUID

で表示されるデバイスを確認しswapon --show、その親を でたどってくださいlsblk。一般的な暗号化されていないレイアウトでは、/dev/sda3タイプとして直接表示される場合がありますswap。暗号化された LVM インストールでは、代わりに親の下に swap が表示される場合がありますcrypto_LUKS。

Debian 12のターミナル画面に、既存のスワップパーティションとそのPARTUUIDに対するswapon、lsblk、blkidの出力結果を示す図。
変更を加える前に、アクティブなスワップパーティションと安定したパーティション識別子を特定してください。ここに示されているデバイス名と識別子はあくまで例です。

この区別が重要なのは、この記事が暗号化されていない専用スワップパーティションの変換について扱っているためです。swapon --show代わりにスワップファイルが報告された場合は、スワップファイル固有の手順を使用してください。スワップが既に暗号化されたストレージ内にある場合は、まず2層目の暗号化が実際に必要かどうかを判断してください。

スワップをオフにする前に、何を記録しておくべきですか?

パーティションの正確なパス、サイズ、およびPARTUUIDを記録してください。PARTUUIDはパーティションテーブルのエントリを識別するもので、パーティション内のスワップ署名が暗号化されたデータに置き換えられた後でも有効です。

例えば:

sudo blkid /dev/sda3
ls -l /dev/disk/by-partuuid/

次のような値を含む出力が表示される場合があります。

PARTUUID="11111111-2222-3333-4444-555555555555"

以下の例において、対応する安定経路は次のとおりです。

/dev/disk/by-partuuid/11111111-2222-3333-4444-555555555555

ディスク列挙が変更される可能性があるため、それに依存することは避けてください/dev/sda3。また、古いスワップファイルシステムのUUIDを長期的なソース識別子として使用することも避けてください。暗号化されたスワップ設定では、マッピングされた暗号化デバイス上にスワップ署名が再作成されるため、古いraw-swap UUIDは基となるパーティションの適切な永続的な識別子ではありません。

1. システムを安全に準備するにはどうすればよいですか?

cryptsetupがインストールされていない場合はインストールし、編集する2つの設定ファイルをバックアップしてください。

sudo apt update
sudo apt install cryptsetup
sudo cp -a /etc/crypttab /etc/crypttab.before-encrypted-swap 2>/dev/null || true
sudo cp -a /etc/fstab /etc/fstab.before-encrypted-swap

まだ存在しない場合/etc/crypttabでも問題ありません。設定を編集する際に作成してください。

次に、スワップが無効になっている短い期間に十分な空きメモリがシステムにあることを確認してください。その後、変換するスワップパーティションのみを無効にします。swapoff -a複数のスワップ領域を持つマシンよりも、まったく同じデバイスを使用する方が安全です。

sudo swapoff /dev/sda3
swapon --show
Debian 12のターミナル画面で、スワップが無効化され、cryptsetupパッケージがインストールされている様子を示す図。
暗号化を適用する前に、対象のスワップ領域を無効にしてください。複数のスワップ領域を持つシステムでは、不必要にすべてを無効にするのではなく、目的のスワップ領域のみを操作してください。

mkswapこの時点以降は、生のパーティション上で実行しないでください。スワップ署名は、暗号化されたマッパーデバイス上に作成する必要があり、暗号化されていないバッキングパーティション上に作成してはいけません。

2. /etc/crypttab には何を入れるべきですか?

暗号化されたスワップマッピングのエントリを1つ作成または編集して/etc/crypttab追加します。以下はDebianのcryptsetupドキュメントに準拠しています。

cswap /dev/disk/by-partuuid/11111111-2222-3333-4444-555555555555 /dev/urandom plain,cipher=aes-xts-plain64,size=256,swap

例のPARTUUIDを、ご自身のシステムのPARTUUIDに置き換えてください。

各項目の意味は以下のとおりです。

  • cswapはマッパー名で、 を作成します/dev/mapper/cswap。
  • 2番目のフィールドは、実際の基盤となるスワップパーティションです。
  • /dev/urandomマッピングが作成されるたびに、新しいランダムキーを提供します。
  • plain永続的なLUKSヘッダーではなく、プレーンなdm-cryptを選択します。
  • cipher=aes-xts-plain64,size=256変更される可能性のあるデフォルト値に依存するのではなく、plain-dm-crypt パラメータを明示的に指定します。
  • swapこのマッピングされたデバイスがスワップデバイスであり、適切に初期化する必要があることをcryptsetup統合に伝えます。
Debian 12 上で GNU nano を使用して /etc/crypttab を編集する例。安定した PARTUUID パスと /dev/urandom を使用する cswap マッピングを使用する。
crypttab エントリは、アクティベーションのたびに /dev/urandom から取得した新しいキーを使用して、cswap という名前の一時的な暗号化マッピングを作成します。

Debianのcrypttabマニュアルでは、通常のdm-cryptはLUKSとは異なり、暗号化方式、ハッシュ値、鍵サイズのメタデータをヘッダーに保存しないと警告しています。そのため、暗号化方式と鍵サイズを明示的に記録することが有効です。マニュアルにはdiscardセキュリティ上の影響についても記載されていますが、そのトレードオフを評価しない限り、バックアップデバイスがSSDであるという理由だけで追加すべきではないと注意喚起しています。

3. /etc/fstab にはどのような変更がありますか?

暗号化されていない古いスワップ行を で見つけます/etc/fstab。UUID、デバイスパス、またはその他の永続的な識別子が使用されている場合があります。例:

UUID=OLD-SWAP-UUID none swap sw 0 0

マッピング済みの暗号化デバイスに置き換えてください。

/dev/mapper/cswap none swap sw 0 0

両方のエントリをアクティブにしたままにしないでください。生のパーティションと/dev/mapper/cswapスワップの両方が有効になっていると、パーティションを暗号化する目的が損なわれ、起動時のアクティベーションが混乱する恐れがあります。

Debian 12 上の GNU nano による /etc/fstab の図。古い raw swap エントリが無効になっており、/dev/mapper/cswap が swap として設定されている。
fstabは、元の生のスワップパーティションではなく、暗号化されたマッパーデバイスを指すように設定する必要があります。

Debianのfstab(5)マニュアルではスワップエントリのフォーマットが定義されており、swapon(8)ではスワップとしてマークされたエントリがどのようにアクティブ化されるかが説明されています。

4. 再起動する前に、どのように有効化および検証すればよいですか?

両方のファイルを保存したら、暗号化マッピングを開始し、スワップエントリを有効にします。Debianのcryptsetupドキュメントでは、以下の手順を使用しています。

sudo cryptdisks_start cswap
sudo swapon -a

それでは、3つの層すべてを検証してください。

swapon --show
sudo cryptsetup status cswap
lsblk -o NAME,TYPE,FSTYPE,SIZE,MOUNTPOINTS

正常な結果では、スワップは/dev/mapper/cswap元のパーティション上ではなく、で表示されるはずです。cryptsetup status cswapマッピングがアクティブであると報告されるはずです。

お使いの環境で利用できない場合はcryptdisks_start、破壊的なコマンドを即興で実行しないでください。cryptsetupパッケージがインストールされていること、およびcrypttab構文が有効であることを再度確認してください。また、以下の再開設定を完了した後、通常のDebianブートプロセスでマッピングを作成することもできます。Debian 12では、systemdジェネレータを使用してcrypttabおよびfstabの設定を起動時の単位に変換します。

5. 休止状態からの復帰を無効にする必要がありますか?

はい、このパーティションがシステムのレジュームデバイスとして設定されていた場合です。ランダムキーでは、以前のキーで書き込まれた休止状態イメージを復号化することはできません。Debianの暗号化スワップに関する手順では、古いレジュームスワップパーティションをランダムキーで暗号化されたスワップに変換する際には、レジュームを無効にするよう管理者に明示的に指示しています。

現在の設定を確認してください。

grep -R "^[[:space:]]*RESUME=" /etc/initramfs-tools/conf.d/ 2>/dev/null

変換したばかりのスワップパーティションを参照している場合は、resumeをnoneに設定してください。

echo "RESUME=none" | sudo tee /etc/initramfs-tools/conf.d/resume
sudo update-initramfs -u

ここでupdate-initramfs -u重要なのは、通常の起動後スワップエントリが変更されたという理由だけでinitramfsを再構築する必要はありませんが、initramfsが使用しようとする可能性のある古い休止状態再開ターゲットを削除する際には、initramfsを更新する必要があります。

再起動テスト:セットアップが正しく機能していることを証明するには?

ライブアクティベーションが正常に完了し、設定ファイルが正しいことを確認してから再起動してください。

sudo reboot

システムが復旧したら、以下を実行してください。

swapon --show
sudo cryptsetup status cswap
lsblk -o NAME,TYPE,FSTYPE,SIZE,MOUNTPOINTS
cat /proc/swaps

成功のための重要な基準は単純明快です。

  • /dev/mapper/cswapスワップとしてアクティブです。
  • 生のバッキングパーティションは、アクティブなスワップとして直接リストされません。
  • cryptsetup status cswapアクティブなプレーンなdm-cryptマッピングを報告します。
  • マシンはスワップパスフレーズを要求せずに起動し、ランダムキーは自動的に生成されます。

また、2回再起動してマッピングの動作を比較することもできます。この設計の要点は、暗号化キーが一時的なものであるということです。マッピングが再作成された後は、前回の起動時のスワップの内容は復元できません。

機械が緊急モードに移行したらどうなるでしょうか?

最も一般的な原因は、バックアップデバイスのパスが間違っている、設定ファイルにタイプミスがある/etc/crypttab、または/etc/fstab古い生のスワップを指している行があることです。リカバリモードで起動するか、レスキュー環境を使用して、ルートファイルシステムを読み書き可能にマウントし、必要に応じてバックアップを復元してください。

役立つチェック項目は以下のとおりです。

sudo cryptsetup status cswap
systemctl status systemd-cryptsetup@cswap.service
systemctl status dev-mapper-cswap.swap
journalctl -b -u systemd-cryptsetup@cswap.service

ユニット名は、特殊なマッパー名の場合、異なる方法でエスケープされる可能性があるため、systemctl list-units '*cryptsetup*'正確なサービス名が不明な場合は、これを使用してください。

SSDの廃棄についてはどうでしょうか?

理論上のSSDパフォーマンスを追求するためだけに、デフォルトでdiscardを有効にしないでください。Debianのcrypttabドキュメントには、暗号化されたデバイスを介してdiscard要求を送信するとセキュリティ上の問題が発生すると記載されています。Debianのswaponマニュアルにも同様に、discardは一部のSSDではパフォーマンスを向上させる可能性があるものの、多くの場合そうではないと記載されています。必要な場合は、まずストレージモデルと脅威モデルを評価し、慎重に追加してください。

ルートファイルシステムが暗号化されていない場合でも、暗号化されたスワップ領域は依然として有用でしょうか?

はい、ただしその範囲を理解してください。暗号化されたスワップは、スワップパーティションに書き込まれたメモリページを保護します。暗号化されていないルートファイルシステムやホームファイルシステムに保存されたファイル、シェル履歴、アプリケーションキャッシュ、クラッシュダンプ、一時ファイル、ログは暗号化されません。盗難されたディスクからのデータ漏洩に対する広範な保護が目的であれば、ディスク全体またはファイルシステム全体の暗号化の方がより完全な制御手段となります。

最終チェックリスト

  • 対象がスワップファイルではなく、暗号化されていない専用のスワップパーティションであり、かつ既に暗号化された親デバイスによって保護されていないことを確認してください。
  • 安定したパーティションパスを記録します/dev/disk/by-partuuid/...。
  • dm-cryptを設定する前に、生のスワップを無効にしてください。
  • に random-key plain-dm-crypt エントリを追加します/etc/crypttab。
  • /etc/fstabのみを指し示してください/dev/mapper/cswap。
  • 再起動する前に、マッピングを有効にして確認してください。
  • 古いスワップがレジュームデバイスだった場合は、設定しRESUME=noneて実行しますupdate-initramfs -u。
  • 再起動後、暗号化されたマッパーのみがスワップとしてアクティブになっていることを確認してください。

ハイバネーションを行わない Debian 12 システムの場合、このアプローチは設定を小さく抑え、永続的なスワップキーの保存を回避します。重要なのは「どの暗号化コマンドを実行するか」ではなく、ランダムキーのスワップが電力管理要件に合致するかどうかです。それが決定すれば、あとは生のスワップパーティションから、起動のたびに安全に再作成される dm-crypt マッピングへの制御された移行を行うだけです。

コメントを残す

SLESシステムアップグレード中に「メモリを割り当てできません」というエラーを修正する

SLESシステムアップグレード中に「メモリを割り当てできません」というエラーを修正する

SLESアップグレード中に「メモリを割り当てできません」というエラーが発生した場合のトラブルシューティングを行います。RAM、スワップ、OOMログ、およびプロセス制限を確認し、パッケージトランザクションを中断することなく復旧します。

Harmonica OSタブレットのタッチスクリーンキャリブレーションの問題を解決する:適切なLinux修正方法を選択する

Harmonica OSタブレットのタッチスクリーンキャリブレーションの問題を解決する:適切なLinux修正方法を選択する

Harmonica OS (HamoniKR) タブレットにおけるタッチオフセット、回転、およびディスプレイマッピングのトラブルシューティングを行います。X.Org と libinput の修正を比較し、安全にテストを行い、キャリブレーションが役に立たない場合を把握します。

既存のDebian 12で暗号化されたSWAPパーティションを設定する方法

既存のDebian 12で暗号化されたSWAPパーティションを設定する方法

既存の Debian 12 スワップパーティションを、dm-crypt、起動ごとに生成される新しいランダムキー、/etc/crypttab、/etc/fstab、および安全な検証手順を使用して暗号化します。

UbuntuでSMARTドライブの状態をメールアラートで監視する方法

UbuntuでSMARTドライブの状態をメールアラートで監視する方法

Ubuntuにsmartmontoolsをセットアップして、ドライブの状態を監視し、SMARTメールアラートを送信します。デバイスのサポート状況を確認し、メール配信を設定し、通知をテストし、障害のトラブルシューティングを行います。

UEFIシステムにDebianをインストールした後に発生する「起動可能なデバイスが見つかりません」エラーを修正する

UEFIシステムにDebianをインストールした後に発生する「起動可能なデバイスが見つかりません」エラーを修正する

インストーラーのブートモード、EFIシステムパーティション、NVRAMエントリ、GRUB EFIファイル、セキュアブート、およびファームウェアのフォールバックを確認することで、DebianのUEFIブートの失敗を修正します。

UbuntuデスクトップでBtrfsの自動スナップショットを設定する方法

UbuntuデスクトップでBtrfsの自動スナップショットを設定する方法

Ubuntu Desktop 上で、Snapper を設定してスケジュールされた Btrfs スナップショットを取得およびクリーンアップします。まずサブボリュームのレイアウトを確認し、systemd タイマーを有効にして、保持期間が安全に設定されていることを確認してください。

SUSE Linux EnterpriseのLVMシンプロビジョニングにおける容量不足を安全に修正する

SUSE Linux EnterpriseのLVMシンプロビジョニングにおける容量不足を安全に修正する

SUSE Linux Enterprise 上で、データ枯渇とメタデータ枯渇を区別し、ストレージを拡張し、メタデータを修復し、自動拡張を有効にすることで、LVM シン プールが満杯になった場合の診断と復旧を行います。

Debian 12 CIS のセキュリティ強化ガイド:段階的なサーバーベースライン

Debian 12 CIS のセキュリティ強化ガイド:段階的なサーバーベースライン

アップデート、SSH、ファイアウォール、AppArmor、監査、検証のための安全なサーバーワークフローを使用して、Debian 12 Bookwormを最新のCIS Benchmark v2.0.0に対して強化します。

Gooroom OSにFlatpakとSnapアプリをインストールする方法

Gooroom OSにFlatpakとSnapアプリをインストールする方法

リリース情報の確認、ターミナルコマンドの使用、互換性、セキュリティ対策、アップデート、ストレージに関する実用的な比較を通して、Gooroom OSにFlatpakおよびSnapアプリをインストールする方法を説明します。

UbuntuでGPGエラー「以下の署名を検証できませんでした」を修正する方法

UbuntuでGPGエラー「以下の署名を検証できませんでした」を修正する方法

Ubuntu APT署名エラーを安全に修正します。パッケージ検証を無効にすることなく、NO_PUBKEY、EXPKEYSIG、BADSIG、クロック、リポジトリ構成の問題を特定します。