web-dev-qa-db-ja.com

Linuxで暗号化されたスワップファイルを設定するにはどうすればよいですか?

2017警告!受け入れられた回答は機能しているようですが、最近のカーネルでは、システムがスワップを開始するとすぐにハングすることを発見しました。暗号化されたスワップファイルを使用する場合は、実際に正しくスワップされることを確認してください。明確な理由なしにシステムがロックし続ける理由を理解するのに長い時間がかかりました。暗号化されたスワップパーティションの使用に戻りましたが、正しく動作します。


Linuxで暗号化されたスワップファイル(パーティションではない)を設定するにはどうすればよいですか?可能ですか?私が見つけたすべてのガイドは暗号化されたスワップパーティションについて話していますが、私にはスワップパーティションがなく、ディスクを再パーティション化する必要はありません。

ディスクへのサスペンドのサポートは必要ないので、起動するたびにランダムなキーを使用したいと思います。

私は既に TrueCrypt ファイルでホストされているボリュームをデータに使用していますが、そのボリュームにスワップを入れたくありません。より良い解決策がある場合、私はスワップファイルにTrueCryptを使用することに固執していません。

必要に応じて、デフォルトのカーネルで Arch Linux を使用しています。

15
cjm

実際、 ページ はパーティションの設定について説明していますが、スワップファイルの場合も同様です。

dd if=/dev/urandom of=swapfile.crypt bs=1M count=64
loop=$(losetup -f)
losetup ${loop} swapfile.crypt
cryptsetup open --type plain --key-file /dev/urandom ${loop} swapfile
mkswap /dev/mapper/swapfile
swapon /dev/mapper/swapfile

結果:

# swapon -s
Filename                                Type            Size    Used    Priority
/dev/mapper/swap0                       partition       4000176 0       -1
/dev/mapper/swap1                       partition       2000084 0       -2
/dev/mapper/swapfile                    partition       65528   0       -3

swap0とswap1は実際のパーティションです。

14
ott--

この構成は、起動時にランダムに生成されたキーを使用し、ハードディスクへのハイバネーションをサポートしません!データの損失を回避するには、尊敬するDE電源管理ユーティリティを使用してハイバネーションを無効にし、[シャットダウン時にクリティカル]に設定する必要があります。

必ず実行してくださいSudo -sまたはsu以下を実行する前に。

  1. スワップを無効にする:

    # swapoff -a
    
  2. 既存のスワップパーティションを見つける

    # lsblk
    

    あなたはこのようなものを得るでしょう:

    sda3    8:3    0     8G  0 part [SWAP]
    
  3. 古いスワップを上書き

    # dd if=/dev/zero bs=1024000 of=/dev/sda<#>
    

    例えば:

    # dd if=/dev/zero bs=1024000 of=/dev/sda3
    
  4. fstabセットアップ

    # vim /etc/fstab
    

    古いSWAPデバイスをcrypttabマッパー名に置き換えます:/dev/mapper/cswap

    #<file system>      <mount point>   <type>  <options>   <dump>  <pass>
    /dev/mapper/cswap   none            swap    pri=1,defaults  0   0
    
  5. 暗号のセットアップ

    # ls -lF /dev/disk/by-id
    

    例えば:

    ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3
    
    # vim /etc/crypttab
    
    # <name>    <device>                            <password>  <options>
      cswap     /dev/disk/by-id/ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3   /dev/urandom    swap,cipher=aes-cbc-essiv:sha256,size=256
    
  6. アクティブな暗号化スワップ

    # reboot
    
  7. 典型的なスワップ操作の確認

    例えば:

    # dmsetup -C info 
    cswap      253   0 L--w    2    1      0 CRYPT-PLAIN-cswap  
    # lsblk
    ├─sda3                8:3    0     8G  0 part  
    │ └─cswap             253:0    0     8G  0 crypt [SWAP]
    # cat /proc/swaps 
    Filename                Type        Size    Used    Priority
    /dev/dm-0               partition   8385532 0       -1
    
6

dd if=/dev/zero of=/swapfile bs=8G count=1を使用し、その後にmkswap /swapfileswapon /swapfileを使用する場合、ルートファイルシステム上に有効なスワップファイルがあるはずです。 (ddを使用して、スワップファイルに穴がないことを確認します)

これにより、ループデバイスやcrypttabをいじる必要がなくなり、すでに暗号化されているファイルシステム内にスワップファイルを配置するだけです。 (ここでは、ドライブ全体で暗号化を使用していると想定しています。他の場所にある場合は、暗号化されたディレクトリへのパスを/swapfileパラメータに追加してください)

詳細については、man mkswapおよびman swaponを参照してください。

1
Mio Rin