web-dev-qa-db-ja.com

Linux:LUKSおよび複数のハードドライブ

RAID-1システムで暗号化されたデバイス(LUKS上のLVM)にDebian Linuxシステム(AMD64)がインストールされており、データ(LUKSとおそらくLVM)を配置するディスクが4以上のRAID-6があります。

基本的な考え方は、システムの暗号化されたパーティションのロックを解除し(ローカルでの起動時またはsshを介して)、RAID-6暗号化されたパーティションのキーファイルを/ etc/crypttabに格納することです。セキュリティ上のリスクはありますか?つまり、誰かがローカル/リモートでシステムに入ることができ、「ルート化」(SSHなど)に対して脆弱なサーバー上で実行されているサービスがたくさんあるとしたら、それはかなり役に立ちません。代替策はありますか(SSHを介してパーティションのロックを解除する以外に、データパーティションがマウントされる前でもバックアップ操作が開始されるため問題になる可能性があります)。

別のマシンでは、バックアップにLUKS + greyhole(RAID-6なし)の複数のディスクを使用します。同じパスワードを10回入力して10個のディスクのロックを解除するのは本当に大変です...

11
user51166

crypttab/lib/cryptsetup/scripts/decrypt_derivedを使用すると、あるディスクのキーを別のディスクに自動的に使用できます。

decrypt_derivedスクリプトは、Debianのcryptsetupパッケージの一部です。

Sda6cryptからsda5にキーを追加する小さな例:

/lib/cryptsetup/scripts/decrypt_derived sda6crypt > /path/to/mykeyfile
cryptsetup luksAddKey /dev/sda5 /path/to/mykeyfile
ls -la /dev/disk/by-uuid/ | grep sda5
echo "sda5crypt UUID=<uuid> sda6crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived" >> /etc/crypttab
shred -u /path/to/mykeyfile # remove the keyfile

現在、ファイルを実際に削除することは非常に難しいため、/ path/to/mykeyfileが暗号化されたドライブにあることを確認してください(私の例では、sda6cryptが適切なソリューションです)。

一般に、ユーザースペースのファイルシステム暗号化を使用して、セキュリティレイヤーを追加できます。 encfs経由。

7
jofel

Jofelsの回答に基づいて、これは同じ例ですが、ファイルにキーを格納する必要はありません。キーは名前付きパイプで渡され、ディスクには何も保存されません。

Crypttabで/lib/cryptsetup/scripts/decrypt_derivedを使用すると、あるディスクのキーを別のディスクに自動的に使用できます。 decrypt_derivedスクリプトは、Debianのcryptsetupパッケージの一部です。

Sda6cryptからsda5にキーを追加するように変更された例:

mkfifo fifo
/lib/cryptsetup/scripts/decrypt_derived sda6crypt > fifo &
cryptsetup luksAddKey /dev/sda5 fifo
rm fifo

ls -la /dev/disk/by-uuid/ | grep sda5
echo "sda5crypt UUID=<uuid> sda6crypt luks,initramfs,keyscript=/lib/cryptsetup/scripts/decrypt_derived" >> /etc/crypttab

keyscriptオプションは、crypttabがDebianのオリジナルのcryptsetupツールで処理された場合にのみ機能します。systemdの再実装では現在サポートされていません。システムがsystemd(ほとんどのシステム)を使用している場合、initramfsオプションを使用して、systemdが起動する前に、cryptsetupツールによってinitrdで処理を強制的に実行する必要があります。

1
JanKanis