Linux: LUKS dan beberapa hard drive

11

Saya memiliki sistem Linux Debian (amd64) diinstal pada perangkat RAID-1 sistem terenkripsi (LVM pada LUKS) dan akan memiliki RAID-6 dari> = 4 disk di mana saya akan meletakkan data saya (LUKS dan mungkin LVM).

Saya pikir ide dasarnya adalah untuk membuka kunci sistem partisi terenkripsi (saat boot di lokal atau melalui ssh) dan untuk menyimpan keyfile di / etc / crypttab untuk partisi terenkripsi RAID-6. Apakah itu menimbulkan risiko keamanan? Maksud saya ... tidak ada gunanya kalau ada yang bisa masuk ke sistem saya secara lokal / jarak jauh dan saya pikir ada banyak layanan yang berjalan di server yang rentan terhadap "rooting" (mis. SSH). Apakah ada alternatif (selain membuka kunci partisi melalui SSH yang mungkin menjadi masalah karena misalnya operasi pencadangan dimulai bahkan sebelum partisi data dipasang).

Di komputer lain saya akan menggunakan banyak disk dengan LUKS + greyhole (tanpa RAID-6) untuk Cadangan dan akan sangat merepotkan untuk membuka 10 disk dengan memasukkan 10 kali kata sandi yang sama ...

pengguna51166
sumber
Jika seseorang dapat masuk ke sistem Anda dan menjadi root, mereka tidak perlu mendapatkan kunci untuk partisi terenkripsi Anda. Tidak ada gunanya melindunginya dari root (dan itu tidak mungkin tanpa perangkat keras khusus seperti TPM atau berjalan di mesin virtual).
Gilles 'SO- stop being evil'
Permisi ? Bahkan jika saya root, saya harus memberikan keyfile / passphrase untuk membuka partisi LUKS. Saya kira maksud Anda bahwa jika seseorang menjadi root, ia memiliki akses penuh ke data terenkripsi saya. Sayangnya itu hanya benar karena begitu partisi terenkripsi di-mount, tidak ada bedanya apakah itu dienkripsi atau tidak. Apa keuntungan dari mesin virtual itu? Jadi mengapa enkripsi harus membantu? Apakah satu-satunya solusi untuk menolak akses ke root melalui SSH dan layanan serupa? Tapi tetap saja jika seorang hacker masuk ke sistem sebagai pengguna normal, ia biasanya memiliki akses baca ke setiap file, bukan?
user51166
1
Tepatnya, jika seseorang melakukan root pada sistem Anda, mereka memiliki akses ke semuanya. VM dapat berarti bahwa mereka memiliki akses ke semua yang ada di VM. Satu-satunya penggunaan enkripsi adalah jika seseorang mencuri perangkat keras Anda.
Gilles 'SO- stop being evil'
Ya, baiklah ... dalam hal ini kita dapat berargumen bahwa satu-satunya cara yang hampir aman untuk menyimpan data adalah di komputer terenkripsi yang terputus dari semua jaringan dan terintegrasi dalam gedung. Kemudian masih ada yang bisa datang dengan keyboard dan mencuri data Anda tanpa me-reboot sistem Anda. Saya mungkin juga mengisolasi sistem saya dari internet karena itu akan menjadi server cadangan karena itu akses LAN adalah semua yang dibutuhkan. Kemudian lagi ... jika VPN digunakan atau salah satu mesin LAN terinfeksi, mesin cadangan akan terpapar juga. Apa yang akan Anda lakukan untuk menyelesaikan masalah ini?
user51166

Jawaban:

7

Anda dapat menggunakan /lib/cryptsetup/scripts/decrypt_deriveddi Anda crypttabuntuk secara otomatis menggunakan kunci dari satu disk untuk yang lain.

The decrypt_derived Script adalah bagian dari paket cryptsetup Debian.

Contoh kecil untuk menambahkan kunci dari sda6crypt ke sda5:

/lib/cryptsetup/scripts/decrypt_derived sda6crypt > /path/to/mykeyfile
cryptsetup luksAddKey /dev/sda5 /path/to/mykeyfile
ls -la /dev/disk/by-uuid/ | grep sda5
echo "sda5crypt UUID=<uuid> sda6crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived" >> /etc/crypttab
shred -u /path/to/mykeyfile # remove the keyfile

Karena saat ini sangat sulit untuk benar-benar menghapus file, pastikan bahwa / path / ke / mykeyfile ada di drive terenkripsi ( sda6cryptakan dalam contoh saya solusi yang baik).

Secara umum, Anda dapat menambahkan lapisan keamanan tambahan dengan menggunakan enkripsi sistem file ruang pengguna misalnya via encfs.

Jofel
sumber
Dengan begitu saya tidak perlu menyimpan keyfile di disk. Itu akan menyenangkan. Namun apakah Anda pikir itu sepadan dengan masalahnya (yaitu menyimpan keyfile pada perangkat root terenkripsi adalah "cukup aman")? Saya meminta pendapat karena saya ragu. Terima kasih untuk sarannya.
user51166
Solusi dengan decrypt_derivedhanya memiliki kelebihan, yaitu tidak ada file kunci. Jika seseorang bisa mendapatkan akses root, Anda biasanya hilang pula. Membaca file kunci bisa sedikit lebih mudah bagi penyusup daripada menjalankan skrip. Untuk mendapatkan keamanan lebih, Anda dapat mengeraskan sistem Anda dengan menggunakan mis. TOMOYO Linux, AppAmor, SMACK, SELinux, grsecurity, ... tetapi ini membutuhkan upaya tambahan. Dan pertanyaan apakah itu layak maka lebih penting. Tolong jangan lupa untuk membuat cadangan kunci atau kunci terpisah untuk kasus di mana drive crash dari mana kunci berasal / disimpan.
jofel
Saya berencana menggunakan grsecurity atau software serupa juga (tidak pada awalnya, tetapi ketika saya punya waktu saya akan mengamankannya). Saya berpikir untuk hanya menggunakan kata sandi dan bukan kunci file jika memungkinkan. Nah kata sandinya akan disimpan dalam RAM, jadi saya kira Anda bisa berdebat tentang itu juga.
user51166
Tidak ada cara yang baik untuk menghapus file kunci di mana saja, kecuali menimpa seluruh sistem file (dan mungkin bahkan tidak jika disk gagal). Sistem file jurnal tidak membuat segalanya menjadi lebih buruk.
Gilles 'SO- stop being evil'
@Gilles Karena saya bukan pakar penghapusan file aman, saya mengedit jawaban saya. Saya merekomendasikan sekarang untuk menyimpan keyfile pada drive terenkripsi.
jofel
1

Berdasarkan jawaban Jofels, berikut adalah contoh yang sama tetapi tanpa harus menyimpan kunci dalam file. Kunci dilewatkan dalam pipa bernama, yang tidak menyimpan apa pun ke disk.

Anda dapat menggunakan /lib/cryptsetup/scripts/decrypt_derivedcrypttab Anda untuk secara otomatis menggunakan kunci dari satu disk untuk yang lain. The decrypt_derivedScript adalah bagian dari paket cryptsetup Debian.

Contoh yang dimodifikasi untuk menambahkan kunci dari sda6crypt ke sda5:

mkfifo fifo
/lib/cryptsetup/scripts/decrypt_derived sda6crypt > fifo &
cryptsetup luksAddKey /dev/sda5 fifo
rm fifo

ls -la /dev/disk/by-uuid/ | grep sda5
echo "sda5crypt UUID=<uuid> sda6crypt luks,initramfs,keyscript=/lib/cryptsetup/scripts/decrypt_derived" >> /etc/crypttab

The keyscriptpilihan hanya bekerja jika crypttabdiproses oleh alat cryptsetup asli Debian, yang implementasi ulang systemd saat ini tidak mendukung hal itu. Jika sistem Anda menggunakan systemd (yang merupakan sebagian besar sistem), Anda memerlukan initramfsopsi untuk memaksa pemrosesan terjadi di initrd oleh alat cryptsetup, sebelum systemd memulai.

JanKanis
sumber