LUKSキースクリプトが無視されています…パスワードを要求します


10

LUKSは初めてではないということから始めましょう。LVMを使用する場合と使用しない場合で、キースクリプトを使用してLUKSを何度も設定しました。ここで実際に何が起こっているのかわかりません。暗号化されたパーティションが1つあるシステムがあります。私のドライブは次のように構成されています。

#lsblk

名前MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0128G 0ディスク  
└─sda18:1 0 128G 0パーツ  
  ├─vg0-root253:1 0 20G 0 lvm /
  vg─vg0-secure253:6 0 100M 0 lvm   
  │sec─secure253:7 0 98M 0 crypt / root / secure
  vg─vg0-swap253:4 0 1G 0 lvm [スワップ]

私の/etc/crypttabファイルはこのようなものです

#LVへのパスは変更されないため、ここではUUIDは不要です
安全な/ dev / vg0 / secure none luks、keyscript = / lib / cryptsetup / scripts / insecure

私の/lib/cryptsetup/scripts/insecureファイルは実行可能であり、このようなものです

#!/bin/sh
# My actual file looks somewhat different because it dumps the key file with dd.
# This accomplishes virtually the same thing though.

echo -n "my-encryption-password"

update-initramfs -k all -ucrypttabを構成してキースクリプトファイルを配置した後、何度も実行しました。

私の知る限り、私のスクリプトファイルはinitrd.imgファイルにコピーされていません。ルートパーティションは暗号化されておらず、スクリプトファイルはそこから簡単にアクセスできるはずなので、私はそれについて考えましたが、initrd.imgファイルにコピーされるとは思いません。

再起動すると、システムはcrypttabからレコードを確認し、キースクリプトを使用してLUKSパーティションのロックを解除するのではなく、パスワード(私の場合、唯一のキーはランダムなビットでいっぱいのキーファイルであるため実際には存在しません)を要求します。LVMからLUKSを取り出してsda2に入れてみましたが、結果は同じでした。keyscriptが機能cryptsetup luksOpen /dev/vg0/secure secure -d - <<< "$(/lib/cryptsetup/scripts/insecure)"するのは、チャームのように機能し、LUKSパーティションを復号化するためです。

私はこれをUbuntu 16.04.2とUbuntu Mate 16.04.2で試しましたが、同じ結果が得られました。以前は問題なくキースクリプトを使用しました。唯一の違いは、以前は/パーティションが常に暗号化されていたことです。誰かが光を当てることができれば、私はそれを感謝します。このシステムのクローン作成を計画しているため、非常に小さい暗号化されたパーティションのみが必要です。/パーティション全体を暗号化してクローンを作成する必要はありません。


アップデート2017-04-26

ログを調べたところ、意味のない次のエラーの行が見つかりました。「keyscript = / path / to / script」はいつcrypttabの不明なオプションになるのですか?

... systemd-cryptsetup [737]:不明な/ etc / crypttabオプション 'keyscript = / lib / cryptsetup / scripts / insecure'が発生しましたが、無視しました。

キックのためだけに、keyscriptオプションを削除してキーファイルを使用してみましたが、すべてうまくいきました!実際、keyfile-offsetのような他のオプションを試しましたが、それらも機能します。したがって、問題はkeyscriptオプションのどこかにあります。なぜ誰かが何か考えを持っていますか?


3
systemdが問題だと思います。systemdとkeyscriptの簡単なgoogleは、systemdにkeyscript を実装するためのバグとプルリクエストを示しています。最初のリンクから利用できる回避策もあります。
sergtech 2017

これは私の疑念であり、問​​題を掘り下げ、オンラインで見つけた結果を検索し続けました。ここでいくつかの推奨事項を試しましたが、スクリプトファイルをinitrdに取り込む方法がわかりません。
b_laoshi 2017

回答:


3

/ etc / crypttabでオプション「initramfs」を試してください(https://unix.stackexchange.com/a/447676/356711に従って)。あなた/etc/crypttabはこのようになります:

# UUID is not required here since the path to the LV won't change
secure      /dev/vg0/secure       none      luks,keyscript=/lib/cryptsetup/scripts/insecure,initramfs

ルートfsがLVMコンテナーにあることが問題である可能性があることに注意してください。この問題は上記のリンク先の記事にも記載されています。「これは現在、ルートデバイスがLVMにない場合にのみ(確実に)機能します。」幸い、回避策が提供されているようです。

私のシステムは次のようになります:

$ lsblk
NAME                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                             8:0    0 931.5G  0 disk
└─sda1                          8:1    0 931.5G  0 part
  └─md1                         9:1    0 931.4G  0 raid1
    └─md1_crypt               253:3    0 931.4G  0 crypt
      └─raid_crypt_vg-data_lv 253:4    0 931.4G  0 lvm   /raid
sdb                             8:16   0 931.5G  0 disk
└─sdb1                          8:17   0 931.5G  0 part
  └─md1                         9:1    0 931.4G  0 raid1
    └─md1_crypt               253:3    0 931.4G  0 crypt
      └─raid_crypt_vg-data_lv 253:4    0 931.4G  0 lvm   /raid
sdc                             8:32   0 465.8G  0 disk
├─sdc1                          8:33   0   953M  0 part  /boot
└─sdc2                          8:34   0 464.8G  0 part
  └─sdc2_crypt                253:0    0 464.8G  0 crypt
    ├─system_crypt_vg-data_lv 253:1    0   447G  0 lvm   /
    └─system_crypt_vg-swap_lv 253:2    0  17.8G  0 lvm   [SWAP]

...そして以下/etc/crypttabは、Ubuntu 18.04.2 LTSのキースクリプト(!)を使用して復号化マジックを実行します

$ cat /etc/crypttab
# <target name> <source device>                           <key file> <options>
sdc2_crypt      UUID=[...]                                none       luks,discard,keyscript=/etc/decryptkeydevice/decryptkeydevice_keyscript.sh
md1_crypt       /dev/md1                                  none       luks,discard,keyscript=/etc/decryptkeydevice/decryptkeydevice_keyscript.sh,initramfs

sdc2_crypt提供されたキースクリプトによるの復号化はinitramfsオプションなしで機能することに注意してください(ルートfsが含まれているため、initramfsブートフェーズで「自動的に」考慮されるため)。md1_cryptinitramfsオプションを追加した後、initramfsブートフェーズ中にのみ(したがって、crypttabエントリに応じたキースクリプトを使用して)復号化されました。「systemd cryptsetup」はオプションのキースクリプトをサポートしていないため、systemdブートフェーズ中のmd1_cryptの後の復号化は、crypttabで指定されたキースクリプトでは機能しません。https: //github.com/systemd/systemd/pull/3007を参照してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.