web-dev-qa-db-ja.com

リムーバブルストレージ上のLUKSでYubikeyを使用する

LUKSで暗号化されたUSB HDDにアクセスするための2番目の要素としてYubikey 4を使用しようとしています。これが私がどこまで得たかです:

yubikey-luks を使用して、HMAC-SHA1ハッシュパスワードをデバイスのスロット7に追加しています。

  • 問題:cryptsetupは起動時にyubikeyのみをチャレンジし、ログインしたらデバイスを開きます。

ただし、ykchalrespを使用して手動でYubikeyにチャレンジできます。

  • 問題
  • これには、パスフレーズをプレーンテキストで端末に入力することが含まれます。
  • それを乗り越えても、便利にそれをcryptsetupにパイプ/入力する方法がわかりません。

ハッシュ化されたパスフレーズをファイルに書き込み、それを--key-fileとして使用することを考えましたが、デバイスを配置するためのキーがあるので、それは悪い考えのように思えます。

コマンドの形式が間違っている場合、または私の問題を回避する方法がある場合はお知らせください。

1

私はあなたがしたいことを正確に行いました。私がそれをした方法は以下に概説されています。それは正しい方法ですか?まあ...それは議論の余地がありますが、それは私にとってはうまくいきます。お役に立てば幸いです。また、私はUbuntuではありませんが、Ubuntuでも同じように機能するはずです

最初に、_/etc/ykfde.conf_を編集してYubikey構成をセットアップします_YKFDE_CHALLENGE_を40文字程度の長いランダムな文字列に設定します。それが何であるかは関係ありません、ただランダムであることを確認してください。これにより、秘密のパスワードを要求せずにドライブを復号化できます。また、_YKFDE_CHALLENGE_SLOT_をYubikeyの使用したいスロットに設定します。 (そのスロットでHubi-SHA1チャレンジ応答用にYubikeyをセットアップしたことを確認してください)

次に、ドライブを次のコマンドで暗号化するように設定します。
(これは、fdiskまたは同様のユーティリティを使用してドライブをすでにパーティション分割していることを前提としています)

_# This will ask you for a password. Set a password so that you
# can decrypt the drive without your Yubikey
Sudo cryptsetup luksFormat /dev/sda1

# Next, enroll the Yubikey so that it can decrypt it as well
# When required, touch your Yubikey so it can get a challenge-response
# It'll ask for an existing password, just enter the one you set in the last command
Sudo ykfde-enroll -d /dev/sda1 -s 1

# Next decrypt the drive and add a file system
# Enter the password you set in the first command
Sudo cryptsetup open /dev/sda1 drive
Sudo mkfs.ext4 /dev/mapper/drive
_

すべてのセットアップが完了したら、次のようにホームディレクトリに_mountDrive.sh_というファイルを作成しました。

_. /etc/ykfde.conf
ykchalresp -2 "$YKFDE_CHALLENGE" | Sudo cryptsetup open /dev/sda1 drive
Sudo mount /dev/mapper/drive /run/mount/
_

今、私は単に_sh mountDrive.sh_を実行します
Yubikeyが点滅し、タップすると、ドライブが_/run/mount_にマウントされます

明らかに、_/dev/sda1_をドライブデバイスに変更し、_/run/mount_をドライブをマウントする場所に変更する必要があります。

また、_ykchalresp -2_コマンドは、Yubikeyのスロット2を使用するように指示します。 _/etc/ykfde.conf_ファイルで設定したスロットに変更します

もう1つは、パスワードを入力しなくてもSudoを使用できるように_/etc/sudoers_を設定したことです。おそらく、ドライブを復号化してマウントするためにSudoを使用せずにそれを行うためのより良い方法があります...わからない...とにかく、ここに私がそれを設定する方法があります:

_/etc/sudoers_ファイルに%wheel ALL=(ALL) NOPASSWD: ALLを追加します。
次のように、wheelグループにアカウントを追加します。

_me=`whoami`; Sudo usermod -a -G wheel "$me"
_
1
Ray Perea

この小さなニースプロジェクトを使用することをお勧めします:GitHubで yubikey-full-disk-encryption

暗号化されたデバイスをenrollおよびopenするスクリプトのコレクションです。 README.mdは、あなたがする必要があることをかなりよく文書化しています。また、起動時にYubikeyを使用して自動復号化をセットアップするための指示もあります。

基本的に、次のことを行う必要があります。

  • git clone/downloadプロジェクトとcdをそのフォルダーに
  • Sudo make installはプロジェクトをインストールします
  • /etc/ykdfe.conの構成ファイルを変更する必要があります。特に、次のオプションを変更しました
    • YKFDE_DISK_UUID(必須、blkid /dev/sdXコマンドで取得できます。ここで、/dev/sdXは外部デバイスの名前です)
    • YKFDE_LUKS_NAME(必須、良い名前はluks-<uuid-of-the encrypted-volume>
    • YKFDE_CHALLENGE(オプション、ただし2FAを有効にするために必要)
    • YKFDE_CHALLENGE_SLOT(オプション、デフォルトでは1に設定されていますが、 スロット1にはYubikey OTPの構成が含まれています
    • YKFDE_CHALLENGE_PASSWORD_NEEDED、パスワードも入力する場合(Yubikeyがボリューム自体をロック解除するのに十分ではなく、第2要素認証として機能するようにするため)

次に、 README.md の指示に従って、Yubikeyチャレンジレスポンスを設定し、それを暗号化されたボリュームに追加のパスフレーズとして追加します。

最後に、構成をテストするmake testを実行することをお勧めします。

暗号化されたループデバイスでYubikeyを使用できるので、外付けHDDでも動作するはずです。

お役に立てれば。

0
CristianCantoro