最近、完全なlvm暗号化(セットアップからインストール)でubuntuサーバー11.04をインストールしました。キーファイルを使用して自動ロック解除を行いたいと思います。私はこのガイドに従うことを試みました http://ubuntuforums.org/showthread.php?t=837416
次のコマンドでキーを生成しました:Sudo dd if=/dev/urandom of=/boot/grub/keyfile bs=1024 count=4
暗号化されていないと思うので、/boot/grub
に入れました。このコンマSudo cryptsetup luksAddKey /dev/sdX /boot/grub/keyfile
でキーを追加しようとすると、パスフレーズの入力を求められ、何も入力しないと、画面に何も印刷されません。私はそれを無視し、他の手順を続行して再起動しますが、何も起こりませんでした。パスフレーズを要求します。
助けてくれてありがとう 。
新しいホームサーバーでこれを行ったばかりですが、グーグルや推測に多くの時間がかかりましたが、うまくいきました。ここで手順を再現してみます。私はUbuntu Server 11.10を使用しており、暗号化されたLVMを使用してほぼ標準のインストールを開始したので、そこから行った変更を関連付けます。
セットアップ:
最初に、ホームディレクトリにキーファイルを作成しました。
dd if=/dev/urandom of=keyfile bs=512 count=4
(より大きなブロックサイズを使用するか、より大きなキーにカウントすることができます)
Cryptsetupに新しいキーを伝えます(重要なのはファイル名ではなく内容です):
Sudo cryptsetup luksAddKey /dev/sda5 keyfile
次に、USBフラッシュドライブをext2でフォーマットし、ラベルを付けました。ラベルを使用したので、後でラベルでマウントし、何か問題が発生した場合に備えてUSBフラッシュドライブを交換できます。
Sudo mkfs -t ext2 /dev/sdc1
Sudo e2label /dev/sdc1 KEYS
(もちろん、デバイスは異なります)
次に、キーファイルをルートモード400が所有するUSBフラッシュドライブにコピーします。
mkdir KEYS
Sudo mount /dev/sdc1 KEYS
Sudo cp keyfile KEYS
Sudo chown root KEYS/keyfile
Sudo chmod 400 KEYS/keyfile
/ etc/crypttabを変更します。元々含まれていた鉱山
sd5_crypt UUID=(...) none luks
に変更しました
sd5_crypt UUID=(...) /dev/disk/by-label/KEYS:/keyfile luks,keyscript=/lib/cryptsetup/scripts/passdev
最後に、initramfsを更新します。
Sudo update-initramfs -uv
USBフラッシュドライブのキーファイルを使用して起動します。フラッシュドライブを取り外した場合(休日に出かけたときなど)は起動せず、データは安全です。
USBフラッシュドライブが見つからない場合にパスフレーズを要求する方法を知っている人は、フォールバックとして便利です。これがお役に立てば幸いです。どんな追加や修正も歓迎です!
Howtoforge.comからのこれらの手順により、自動的に復号化するボリュームを使用して実行できました。
Sudo dd if=/dev/urandom of=/root/keyfile bs=1024 count=4
Sudo chmod 0400 /root/keyfile
これにより、キーファイルはルートのみが読み取り可能になります。誰かがこのキーファイルにアクセスできるようになったら、とにかくコンピューターに大きな問題があります。
または、目的のキーファイルをroot:rootにchownし、/ rootフォルダーに移動します
LUKS/dm_crypt対応デバイスは、最大10個の異なるキーファイル/パスワードを保持できます。そのため、既にセットアップされたパスワードの次に、このキーファイルを追加の認証方法として追加します。
Sudo cryptsetup luksAddKey /dev/sdX /root/keyfile
sdXはもちろんLUKSデバイスです。
最初に、ドライブのロックを解除するための(既存の)パスワードの入力を求められます。すべてが正常に機能する場合、次のような出力が得られます。
Enter any LUKS passphrase:
key slot 0 unlocked.
Command successful.
LUKSデバイスは、fstabで参照できるマッパーを作成する必要があります。/etc/crypttabを開きます
Sudo nano /etc/crypttab
次に、次のような行を追加します。
sdX_crypt /dev/sdX /root/keyfile luks
または、デバイスのUUIDを使用できます。
sdX_crypt /dev/disk/by-uuid/247ad289-dbe5-4419-9965-e3cd30f0b080 /root/keyfile luks
sdX_cryptは、作成されているマッパーの名前です。ここで任意の名前を使用できます。 「音楽」または「映画」または「sfdsfawe」....
Ctrl-xを発行してファイルを保存して閉じ、Enter、Enterを押します。 Ctrl-xはnanoを閉じますが、最初にファイルを保存するように要求します[yes = enter]および名前を[same name = enter]にします。
そこで実際に行ったのは、パスワードエントリの代わりに/ root/keyfileを使用してドライブのロックを解除することです。
これで、ロックが解除されたデバイスができました(まだではありませんが、システムの起動中です)。今すぐマウントする必要があります。/etc/fstabを開きます。
Sudo nano /etc/fstab
次のような新しいエントリを追加します。
/dev/mapper/sdX_crypt /media/sdX ext3 defaults 0 2
手順4で追加した正しいマッパー名を持っていることを確認します。また、マウントポイント/フォルダーが存在することを確認します。追加した後、ファイルを再度保存して閉じます(ctrl-x、enter、enter)。
それでおしまい。これで再起動でき、追加のデバイスが自動的にロック解除されてマウントされます。すべてのデバイスを再マウントしてテストすることもできます。
Sudo mount -a
Randy Orrison's answer の改善、これは私が作成した小さなスクリプトで、キーファイルが見つからなかった場合にユーザーにパスワードを要求するようにシステムをフォールバックします。
#!/bin/sh
ask_for_password () {
cryptkey="Unlocking the disk $cryptsource ($crypttarget)\nEnter passphrase: "
if [ -x /bin/plymouth ] && plymouth --ping; then
cryptkeyscript="plymouth ask-for-password --Prompt"
cryptkey=$(printf "$cryptkey")
else
cryptkeyscript="/lib/cryptsetup/askpass"
fi
$cryptkeyscript "$cryptkey"
}
device=$(echo $1 | cut -d: -f1)
filepath=$(echo $1 | cut -d: -f2)
# Ask for password if device doesn't exist
if [ ! -b $device ]; then
ask_for_password
exit
fi
mkdir /tmp/auto_unlocker
mount $device /tmp/auto_unlocker
# Again ask for password if device exist but file doesn't exist
if [ ! -e /tmp/auto_unlocker$filepath ]; then
ask_for_password
else
cat /tmp/auto_unlocker$filepath
fi
umount /tmp/auto_unlocker
それを保存し、keyscript=/lib/cryptsetup/scripts/passdev
の/etc/crypttab
をこのファイルへのパスに置き換えて、Sudo update-initramfs -uv
を実行すると完了です。
@deitch私は@Randy Orrisonのような同じ設定をしていて、あなたと同じ問題にぶつかりました。そして、それはsystemdのバグであり、/ etc/crypttabで対応するエントリを見つけると/ filesystemを再びマウントしようとします。
これを解決するには、update-initramfs -uvコマンドが実行されたら、/ etc/crypttabからsda5_cryptのエントリを削除しました。
Reebootとすべてが意図したとおりに正常に動作します。