Bagaimana cara membuat partisi swap yang dienkripsi dan dikunci secara acak, merujuk padanya “by-uuid”, di Debian?

8

Masuk akal jika Anda memiliki enkripsi perangkat blok apa pun yang diterapkan pada sistem GNU / Linux Anda, untuk mengenkripsi partisi swap Anda juga, karena setiap data yang didekripsi dapat ditulis dalam cleartext kapan saja untuk swap.

Melihat halaman manual debian untuk "crypttab" Saya melihat contoh membuat partisi swap yang dikunci secara acak pada saat boot-up, jadi kunci tersebut diatur secara acak ketika boot berlangsung dan hanya diketahui oleh sistem itu sendiri:

# Encrypted swap device
cswap /dev/sda6 /dev/urandom cipher=aes-cbc-essiv:sha256,hash=ripemd160,size=256,swap

Dalam contoh ini perangkat swap disebut oleh jalur dev konvensional yaitu /dev/sda6

Jalur perangkat absolut dapat berubah dan ditugaskan kembali saat boot-up jika, katakanlah usb drive dicolokkan, misalnya. Seorang pengguna akan sangat tidak senang jika /dev/sda6terjadi partisi yang berbeda dari yang diharapkan dan kemudian ditimpa dengan data swap acak !!

Jadi solusinya adalah: gunakan UUID sebagai ganti jalur perangkat (karena UUID tidak boleh berubah), ganti /dev/sda6dengan/dev/disk/by-uuid/<whatever the uuid of dev/sda6 is>

TAPI ... inilah masalahnya: Setiap kali cryptsetup membuat ulang partisi swap terenkripsi pada saat boot, ia menghasilkan UUID baru untuk itu! Doh!

Jadi kita perlu melestarikan UUID dari sistem file terenkripsi ini entah bagaimana. Saya pikir cryptsetup dapat melakukan ini dengan --offsetsaklarnya, memungkinkan untuk pelestarian header LUKS dan dengan demikian UUID.

Saya telah menemukan URL ini: https://wiki.archlinux.org/index.php/System_Encryption_with_LUKS#Using_UUIDs_with_encrypted_swap_partitions

Adakah yang tahu bagaimana menerapkan solusi yang dijelaskan untuk Arch Linux pada OS Debian? Skrip init yang dirujuk dalam dokumen tampaknya tidak ada di OS Debian

Terima kasih!

EDIT One dapat menggunakan ecryptfs untuk mencapai tujuan yang sama (ruang swap terenkripsi) menggunakan perintah: ecryptfs-setup-swap Tanpa masalah yang menimpa blokir enkripsi perangkat. Silahkan lihat pada permintaan AskUbuntu ini

Geeb
sumber
"Seseorang dapat menggunakan ecryptfs untuk mencapai tujuan yang sama [...] Tanpa masalah yang menimpa blokir perangkat." Tidak, karena ecryptfs-setup-swapitu hanya penolong yang mengkonfigurasi dm-crypt/ crypttabuntuk Anda. Seperti halnya ecryptfsdriver tingkat file, itu tidak menangani seluruh partisi, jadi itu membuat off untuk itu dm-crypt. Anda mungkin menemukan metode ini lebih ramah pengguna, tetapi Anda pada akhirnya tidak mencapai hal yang berbeda. Jika ada, kebiasaan metode ini (termasuk UUID) mungkin membuat saya lebih bingung daripada jika saya melakukannya sendiri dari prinsip pertama ... meskipun saya belajar lebih banyak.
underscore_d

Jawaban:

6

Setiap kali cryptsetup membuat ulang partisi swap terenkripsi pada saat boot itu menghasilkan UUID baru untuk itu! Doh!

Di / etc / crypttab, gunakan / dev / disk / by-id alih - alih / dev / disk / oleh-UUID untuk merujuk ke partisi swap Anda. Sebagai contoh, entri / etc / fstab Anda untuk swap mungkin

#<file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/cswap none swap sw 0 0

Maka entri terkait yang benar di / etc / crypttab akan menjadi sesuatu seperti

# <name> <device> <password> <options>
cswap /dev/disk/by-id/ata-SAMSUNG_SSD_830_Series_S0XYNEAC762041-part5 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256

Perhatikan bahwa perangkat di atas disebut oleh / dev / disk / by-id yang dapat Anda temukan untuk drive Anda dengan mengetik berikut ini di CLI:

ls -lF /dev/disk/by-id
Jun_in_Jeju
sumber
Perhatikan bahwa nama oleh-merujuk pada model dan nomor seri, yang sangat tidak mungkin tumpang tindih dengan perangkat lain yang mungkin Anda tancapkan.
cscracker
... yang, untuk kepentingan pembaca yang mungkin bertanya-tanya, adalah hal yang sangat bagus. Anda tidak ingin mengonfigurasi swap terenkripsi Anda /dev/sdaNkemudian memasukkan disk lain suatu hari dan menemukan bahwa urutan penamaan kernel Anda telah bergeser dan salah satu partisi non-swap Anda telah dibuang. UUID juga bagus, tetapi saya pikir masalah utamanya adalah ia disimpan dalam beberapa byte pertama dari partisi, jadi kami mendapatkan skenario ayam-dan-telur yang tidak larut yang dibahas di sini.
underscore_d
3

Di / etc / crypttab saya, saya punya

# <target name>  <source device>        <key file>   <options>
swap             /dev/mapper/cswap      /dev/random  swap

Di sini / dev / mapper / cswap adalah volume logis yang dibuat oleh LVM, yang menangani penetapan nama volume logis dengan benar terlepas dari nama huruf drive. Ini juga memungkinkan saya untuk dengan mudah mengubah ukuran partisi swap saya.

Andrew Schulman
sumber
0

Coba terapkan sisa solusi, abaikan file init. Sepertinya sedikit skrip init hanya ada untuk melindungi Anda. Baik Debian tidak melindungi Anda dengan cara itu, atau Debian akan memberi Anda pesan kesalahan ketika Anda mencoba untuk boot dengannya yang diharapkan akan membawa Anda ke tempat yang tepat.

Saya juga akan berhati-hati bahwa IIRC Debian dan ArchLinux memiliki format berbeda untuk / etc / crypttab (gila, saya tahu, tapi saya pindah dari Ubuntu ke Arch beberapa tahun yang lalu dan akhirnya memutuskan untuk menggunakan bash langsung daripada mencampuri crypttab).

idupree
sumber
Terimakasih atas tanggapan Anda. Ya, saya setuju skrip Arch adalah pemeriksaan kewarasan untuk memastikan partisi tersebut tampak sebagai partisi swap. Tapi saya membayangkan telah meninggalkan drive USB terpasang dan reboot untuk menemukan partisi non-swap yang digunakan. Saya pikir saya akan menangis sangat ... Saya bersyukur untuk semua pemeriksaan kewarasan yang bisa saya dapatkan!
Geeb
Itu seharusnya tidak terjadi karena Anda menggunakan UUID untuk menemukannya di tempat pertama. Jadi yang akan ditemukan hanyalah partisi swap, atau tidak sama sekali.
idupree
0

jalankan ecryptfs-setup-swap atau secara manual:

Konfigurasi ini menggunakan kunci yang dibuat secara acak saat boot dan tidak akan mendukung Hibernasi ke hard disk! Anda Harus Menonaktifkan Hibernasi melalui DE Utilitas Manajemen Daya hormat Anda dan mengaturnya untuk Shutdown pada Kritis untuk menghindari Kehilangan Data!

Beralih ke akun admin / root

su root atau sudo untuk setiap perintah

Nonaktifkan Swap

swapoff -a

Temukan Partisi Swap yang ada

lsblk

contoh: sda3 8: 3 0 8G 0 bagian [SWAP]

Timpa Tukar Lama

dd if = / dev / zero bs = 1024000 dari = / dev / sda <#>

contoh: dd if = / dev / zero bs = 1024000 dari = / dev / sda3

Pengaturan FSTAB

vim / etc / fstab

Ganti perangkat SWAP lama dengan nama map crypttab: / dev / mapper / cswap

Tukar UUID = d03f3d8e-7888-48a5-b3cc-41de8dbbcfdc default swap swap 0 0

BARU

/ dev / mapper / cswap tidak ada swap pri = 1, default 0 0

Pengaturan Crypto

ls-lF / dev / disk / by-id

Contoh: ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3

vim / etc / crypttab

cswap / dev / disk / by-id / ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 / dev / swap secara acak, cipher = aes-cbc-essiv: sha256, ukuran = 256

Swap Terenkripsi Aktif

Nyalakan Ulang Komputer

Verifikasi Operasi Swap yang Diperkirakan

dmsetup -C info

Contoh: cswap 253 0 L - w 2 1 0 CRYPT-PLAIN-cswap

lsblk

Contoh ├─sda3 8: 3 0 8G 0 bagian
│ └─cswap 253: 0 0 8G 0 crypt [SWAP]

cat / proc / swaps

contoh: Nama File Ukuran Ukuran Prioritas yang Dipakai / dev / dm-0 partisi 8385532 0 -1

Timothy Butterworth
sumber