berhenti crypttab meminta kata sandi untuk swap

10

Saya menginstal sistem 11,04 baru ketika dirilis dan mengatur enkripsi disk penuh dengan LUKS. Pada awalnya ia meminta saya untuk kata sandi untuk tiga partisi terenkripsi saya:

/
/home
swap

Mengetik frasa sandi tiga kali menjadi frustasi, jadi saya mencoba mengatur / home dan menukar untuk mendekripsi dari keyfile yang disimpan di /. Saya membuat keyfile dan mengaktifkannya di dua partisi. Crypttab saya sekarang terlihat seperti ini:

root-root_crypt UUID=13c21bf6-4d92-42a7-877a-87cc31b1aa19 none luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 /root/keyfile luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 none luks
sda3_crypt UUID=e4677895-2114-4054-9f23-d36f6bb0e6a2 /root/keyfile luks,swap

Ini berfungsi dengan baik untuk / home, yang akan dipasang secara otomatis tanpa meminta kata sandi. Tetapi cryptsetup masih meminta kata sandi untuk ruang swap. Saya bahkan sudah mencoba menambahkan noauto ke ruang swap sehingga tidak akan diatur sama sekali - setelah sistem di-boot saya dapat mengaktifkannya tanpa frasa sandi, jadi saya pikir saya hanya akan menambahkan skrip init yang terlambat untuk dilakukan itu, tetapi bahkan dengan noauto cryptsetup masih meminta frasa sandi.

Terima kasih!

Brad
sumber
4
Untuk alasan ini, disarankan untuk menggunakan LVM + LUKS jika terjadi beberapa partisi. Crypsetup dapat digunakan di atas atau di bawah lapisan LVM (di atas -> sistem file, di bawah -> disk). Menggunakan cryptsetup di bawah LVM memiliki keuntungan bahwa Anda hanya perlu satu partisi terenkripsi (yang LVM).
Lekensteyn

Jawaban:

10

Punya pertanyaan yang sama, di sini adalah bagaimana saya melakukannya di ubuntu 12.04.1 dan 12.10,

--Sebelum memulai pastikan Anda memiliki cadangan dan juga dapat mem-boot sistem Anda dengan ubuntu cd atau usb; seolah-olah Anda membuat kesalahan, sistem Anda mungkin tidak bisa boot lagi atau Anda dapat kehilangan data. saya berasumsi Anda memiliki sistem ubuntu terenkripsi dengan LUKS, di dalam LUKS Anda memiliki 3 partisi, SYSTEM-BOOT (tidak terenkripsi), SYSTEM-SWAP (terenkripsi) dan SYSTEM-OS (terenkripsi) -

Anda perlu menyesuaikan UUID, SYSTEM-SWAP_crypt, SYSTEM-OS_crypt, SYSTEM-SWAP, SYSTEM-OS dengan variasi yang digunakan pada sistem Anda, silakan lihat tautan referensi di bawah solusi saya untuk info lebih lanjut

Dapatkan UUID:

blkid

Persiapkan>

swapoff /dev/mapper/SYSTEM-SWAP_crypt
cryptsetup luksClose SYSTEM-SWAP_crypt

Beri tahu cryptsetup untuk menghitung frasa sandi partisi swap dari kunci dekripsi volume yang menahan sistem file root>

/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksFormat /dev/mapper/SYSTEM-SWAP --key-file -
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksOpen /dev/mapper/SYSTEM-SWAP SYSTEM-SWAP_crypt --key-file -
mkswap /dev/mapper/SYSTEM-SWAP_crypt

beri tahu sistem tentang partisi swap, edit crypttab>

nano /etc/crypttab

=? pastikan dua baris cocok

SYSTEM-OS_crypt UUID=uuid-of-luks-containing-osroot none luks
SYSTEM-SWAP_crypt UUID=uuid-of-luks-containing-swap SYSTEM-OS_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

beri tahu sistem tentang partisi swap, edit fstab>

nano /etc/fstab

=? pastikan kamu memiliki baris ini

/dev/mapper/SYSTEM-SWAP_crypt swap swap sw 0 0

beri tahu sistem tentang partisi swap, edit resume>

nano /etc/initramfs-tools/conf.d/resume

=? pastikan kamu memiliki baris ini

RESUME=UUID=uuid-of-encrypted-swap-SYSTEM-SWAP_crypt

perbarui initramfs pada partisi boot>

update-initramfs -u -k all

Referensi

Jawabannya terinspirasi oleh Menyiapkan sistem Debian terenkripsi (tautan arsip):

Jika Anda menggunakan sistem Debian terenkripsi, Anda mungkin memiliki beberapa persyaratan keamanan untuk dipenuhi. Jika itu masalahnya, Anda juga harus menggunakan partisi swap terenkripsi.

Partisi swap dapat dienkripsi dengan dua cara:

  • itu dapat diciptakan kembali pada setiap boot, menggunakan frasa sandi acak, atau
  • itu dapat dibuat seperti volume terenkripsi lainnya dengan frasa sandi persisten

Jika Anda ingin menggunakan disk suspend-to-disk, Anda tidak dapat menggunakan pendekatan pertama karena akan menimpa jejak memori Anda yang tersimpan di partisi swap. Selain itu, Anda tidak dapat menggunakan file kunci seperti partisi lain, karena sistem file root tidak (dan tidak boleh) dipasang pada saat proses resume dimulai dan perlu membaca partisi swap yang didekripsi.

Cara saya menyelesaikan ini adalah dengan memberitahu cryptsetup untuk menghitung frasa sandi partisi swap dari kunci dekripsi volume yang memegang sistem file root; paket cryptsetup mengimplementasikan ini dengan /lib/cryptsetup/scripts/decrypt_derived. Jadi, untuk mengatur partisi swap, saya melakukan hal berikut, dengan asumsi hda2adalah partisi memegang swap terenkripsi dan sistem file root di hda5_crypt:

swapoff /dev/mapper/hda2_crypt
cryptsetup luksClose hda2_crypt
dd if=/dev/urandom of=/dev/hda2
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksFormat /dev/hda2 --key-file -
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksOpen /dev/hda2 hda2_crypt --key-file -
mkswap /dev/mapper/hda2_crypt

Untuk memberi tahu sistem tentang partisi swap ini, kita perlu menambahkannya ke /etc/crypttabdan /etc/fstab; pastikan, file-file itu berisi baris seperti berikut:

/etc/crypttab:
  hda2_crypt /dev/hda2 hda5_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

/etc/fstab:
  /dev/mapper/hda2_crypt swap swap sw 0 0

Dengan ini, segera setelah Anda mengkonfigurasi sistem untuk disk-ke-disk, partisi swap akan secara otomatis diatur bersama sistem file root sangat awal selama urutan boot. Untuk mengetahui partisi swap mana yang tersedia pada saat itu, cryptsetup memeriksa yang berikut: asfasfafs - baris seperti RESUME=/dev/mapper/hda2_cryptdi /etc/initramfs-tools/conf.d/resume - pengaturan perangkat resume di /etc/uswsusp.conf(lihat uswsusp.conf(5)) - entri di /etc/suspend.conf - a resume=/dev/mapper/hda2_cryptdi dalam baris perintah kernel

Anda dapat memeriksa /usr/share/initramfs-tools/hooks/cryptrootjika Anda ingin tahu lebih banyak tentang ini.

Pangeran
sumber
Selamat Datang di Tanya Ubuntu! Akan memberi +1 jika tidak cukup menyalin / menempel tanpa mengurus format (yang baru saja saya lakukan). Saya suka pendekatan "itu bisa diciptakan kembali pada setiap boot, menggunakan pendekatan frasa sandi acak" di sini.
gertvdijk
menambahkan perintah saya benar-benar digunakan untuk jawabannya, saya akan mengujinya pada 12,10 juga, akan memperbarui jawabannya nanti
Pangeran
Baik. Saya berasumsi Anda menyalin / menempelkannya sepenuhnya. Harap ubah agar jelas tentang perubahan apa yang Anda lakukan untuk membuatnya berfungsi. Akan sangat membantu, terima kasih!
gertvdijk
jangan mencobanya pada 12.10 ketika saya menemukan bug yang mencegah boot, saya mendapatkan "cryptsetup lvm tidak tersedia", laporan pencarian kembali bug Google. perlu melihatnya lebih dalam tetapi tidak punya waktu, akan memberi tahu Anda nanti.
Pangeran
memperbarui jawabannya, sistem 12.10 saya sekarang berfungsi penuh dan hanya meminta satu kata sandi, saya tidak memperbarui-initramfs -u -k semua pada akhirnya menciptakan masalah yang saya sebutkan di komentar sebelumnya. @gertcdijk memformat segalanya, semoga Anda bahagia sekarang
Pangeran
4

Ini mungkin menunjukkan bahwa partisi swap sedang diakses selama initramfsbagian dari proses boot. Pada titik ini sistem file root belum dipasang, sehingga file konfigurasi yang disimpan di sana tidak akan terlihat.

Sementara ruang swap dipasang setelah sistem file root, ada alasan untuk initramfsproses inisialisasi untuk mengakses ruang swap: ketika Anda hibernasi komputer Anda, isi memori dan status sistem ditulis untuk swap. Untuk melanjutkan dari hibernasi, perlu untuk memeriksa apakah ruang swap berisi gambar hibernasi yang akan memerlukan frasa sandi.

Jika Anda tidak keberatan kehilangan kemampuan untuk melanjutkan dari hibernasi, Anda dapat menonaktifkan perilaku ini dengan mengedit /etc/initramfs-tools/conf.d/resumedan mengomentari baris yang dimulai dengan RESUME=. Setelah melakukan perubahan, jalankan update-initramfs -uuntuk memperbarui initramfsgambar.

James Henstridge
sumber
Terima kasih! Saya tidak yakin ingin mengorbankan hibernasi. Saya tidak sering menggunakannya, tetapi ketika baterai habis tanpa saya sadari, itu berguna. Apakah Anda tahu jika ada cara agar cryptsetup menggunakan kembali kata sandi yang sama untuk /?
Brad
Saya tidak tahu cara untuk melakukan itu. Dan sebelum Anda bertanya, jangan mencoba memasukkan salinan keyfile Anda ke dalam initramfs. Sementara itu akan menghilangkan prompt frasa sandi, itu juga akan membuatnya tersedia bagi siapa saja dengan akses fisik ke disk.
James Henstridge