Bagaimana cara mengkonfigurasi LVM & LUKS ke partisi autodecrypt?


21

Saya baru saja menginstal server ubuntu 11.04 dengan enkripsi lvm lengkap (diinstal dari pengaturan). Saya ingin sekarang menggunakan file kunci untuk melakukan buka kunci otomatis. Saya telah mencoba mengikuti panduan ini http://ubuntuforums.org/showthread.php?t=837416

Saya membuat kunci dengan perintah ini: sudo dd if=/dev/urandom of=/boot/grub/keyfile bs=1024 count=4

saya memasukkannya ke dalam /boot/grubkarena saya pikir itu tidak dienkripsi. Ketika saya mencoba untuk menambahkan kunci dengan commad ini sudo cryptsetup luksAddKey /dev/sdX /boot/grub/keyfile ia meminta saya untuk frasa sandi dan ketika saya meletakkannya tidak ada yang terjadi, tidak ada yang dicetak ke layar! Saya mengabaikannya dan melanjutkan langkah-langkah lain dan reboot tetapi tidak ada yang terjadi dan meminta kata sandi.

Terima kasih untuk bantuannya .


Apakah maksud Anda mendekripsi tanpa memasukkan frasa sandi? Jika proses boot bisa melakukannya, maka kunci yang diperlukan untuk mendekripsi volume harus ada pada sistem di suatu tempat yang dapat diakses selama boot. Bagaimana Anda berharap hal itu melindungi Anda dari pencurian data?
James Henstridge

ya, saya pikir saya akan meletakkan kunci di partisi tersembunyi atau usb flash drive. Apakah itu mungkin ?
isoman

Masalahnya adalah jika boot loader dapat menemukan kunci, maka seseorang yang memeriksa kode boot (tidak terenkripsi) juga akan dapat menemukannya. Jika Anda menyimpan kunci pada stik USB, Anda ingin memastikan bahwa stik tidak akan dicuri dengan komputer. Jika Anda hanya akan mencolokkan tongkat saat boot, maka itu tidak lebih nyaman daripada memasukkan frasa sandi.
James Henstridge

Jawaban:


27

Saya baru saja melalui ini di server rumah baru saya, butuh banyak googling dan tebakan, tetapi saya berhasil. Saya akan mencoba mereproduksi langkah-langkah di sini. Saya menggunakan Ubuntu Server 11.10, dan mulai dengan instalasi standar yang cukup banyak menggunakan LVM terenkripsi, jadi saya hanya akan menghubungkan perubahan yang saya buat dari sana.

Mendirikan:

  • / dev / sda1 adalah partisi / boot tidak terenkripsi saya
  • / dev / sda5 adalah partisi lvm saya yang berisi segalanya - root, swap, dan home
  • / dev / sdc1 adalah partisi pada USB flash drive tempat saya menyimpan keyfile

Pertama, saya membuat keyfile, tepat di direktori home saya:

dd if=/dev/urandom of=keyfile bs=512 count=4

(Anda dapat menggunakan blocksize yang lebih besar atau menghitung untuk kunci yang lebih besar)

Beri tahu cryptsetup kunci baru (isinya yang penting, bukan nama file):

sudo cryptsetup luksAddKey /dev/sda5 keyfile

Kemudian, saya memformat USB flash drive saya dengan ext2 dan memberinya label. Saya menggunakan label, sehingga nanti saya bisa memasangnya dengan label, dan mengganti USB flash drive kalau-kalau ada yang salah dengan itu.

sudo mkfs -t ext2 /dev/sdc1
sudo e2label /dev/sdc1 KEYS

(tentu saja, perangkat Anda akan bervariasi)

Sekarang, salin keyfile ke USB flash drive, yang dimiliki oleh mode root 400:

mkdir KEYS
sudo mount /dev/sdc1 KEYS
sudo cp keyfile KEYS
sudo chown root KEYS/keyfile
sudo chmod 400 KEYS/keyfile

Ubah / etc / crypttab. Milik saya awalnya terkandung

sd5_crypt UUID=(...) none luks

yang saya ubah menjadi

sd5_crypt UUID=(...) /dev/disk/by-label/KEYS:/keyfile luks,keyscript=/lib/cryptsetup/scripts/passdev

Akhirnya, perbarui initramfs:

sudo update-initramfs -uv

Sekarang boot menggunakan keyfile pada USB flash drive. Jika saya menghapus flash drive (katakanlah, ketika saya pergi berlibur) itu tidak bisa boot dan data saya aman.

Jika ada yang tahu cara mendapatkannya untuk meminta frasa sandi jika USB flash drive tidak ada, itu akan berguna sebagai fallback. Semoga ini bisa membantu, penambahan atau koreksi apa pun akan lebih dari sekadar selamat datang!


3
Jika Anda tidak yakin bagaimana cara mendapatkan prompt kata sandi, Anda bisa menggunakan partisi yang dapat di-boot di flash drive untuk memuat melalui initramfs alternatif yang mencari keyfile dan memiliki boot default pada hard disk memuat initramfs biasa yang meminta untuk kata sandi.
Reinstate Monica - ζ--

1
@ 3pic Saya tidak yakin 100% sejak saya melakukan ini beberapa bulan yang lalu. Tetapi Ubuntu mem-boot ke sistem file virtual. keyscript=/lib/cryptsetup/scripts/passdevmenambahkan passdevskrip ke dalamnya. Dan kemudian update-initramfs -uvmembangun kembali arsip sistem file.
VarunAgw

1
@RandyOrrison ini benar-benar hebat. Berhasil. Tapi ... setelah melewati initram, ia kemudian duduk selama satu atau dua menit dengan A start job is running for dev-sda8:-keyfile.device (1min 18s...)dll. Berlalu , semuanya sudah terpasang, tetapi hang untuk sementara waktu. Log mengatakan "Habis waktu menunggu perangkat dev-sda8: -sda7keyfile.device; Ketergantungan gagal untuk Crypto Setup untuk sda7crypt." Tentu saja, sudah dipasang oleh initram, tapi .... Apa yang saya lakukan salah?
Deitch

1
Untuk beberapa alasan sepertinya tidak suka / bekerja dengan systemd; itu hanya akan mengabaikan keyscriptbidang sama sekali.
Etienne Bruines

1
Di Ubuntu 17.10+, alat pembaruan-initramfs tidak akan menghasilkan gambar initramfs yang mampu mem-boot volume luks jika sistem file root Anda berada pada volume luks dan memiliki file kunci. Anda dapat membuatnya bekerja dengan meninggalkan "tidak ada" sebagai nilai keyfile, dan mengatur opsi untuk memiliki keyscript = / etc / my-keyscript, di mana / etc / my-keyscript adalah skrip shell yang mencetak kunci.
Macil

6

Petunjuk ini dari howtoforge.com membuat saya menjalankan dan menjalankan dengan volume dekripsi yang otomatis.

Cara: Membuka Kunci Secara Otomatis LUKS Encrypted Drives With A Keyfile

Langkah 1: Buat keyfile acak

sudo dd if=/dev/urandom of=/root/keyfile bs=1024 count=4

Langkah 2: Buat keyfile read-only menjadi root

sudo chmod 0400 /root/keyfile

Itu akan membuat keyfile hanya bisa dibaca oleh root. Jika seseorang mendapatkan akses ke file keyfile ini, maka Anda memiliki masalah yang lebih besar pada komputer Anda.

Cara lainnya chew keyfile yang Anda inginkan untuk root: root dan pindahkan ke folder / root

Langkah 3: Tambahkan keyfile ke LUKS

Perangkat yang diaktifkan LUKS / dm_crypt dapat menampung hingga 10 file kunci / kata sandi yang berbeda. Jadi, di samping sudah memiliki kata sandi pengaturan, kita akan menambahkan keyfile ini sebagai metode otorisasi tambahan.

sudo cryptsetup luksAddKey /dev/sdX /root/keyfile

sdX tentu saja perangkat LUKS Anda.

Pertama, Anda akan diminta memasukkan kata sandi (yang sudah ada) untuk membuka kunci drive. Jika semuanya bekerja dengan baik, Anda harus mendapatkan output seperti ini:

Enter any LUKS passphrase:
key slot 0 unlocked.
Command successful.

Langkah 4: Buat mapper

Perangkat LUKS perlu membuat mapper yang kemudian dapat direferensikan di fstab. Buka / etc / crypttab

sudo nano /etc/crypttab

dan tambahkan kemudian baris seperti ini:

sdX_crypt      /dev/sdX  /root/keyfile  luks

atau Anda dapat menggunakan UUID perangkat:

sdX_crypt      /dev/disk/by-uuid/247ad289-dbe5-4419-9965-e3cd30f0b080  /root/keyfile  luks

sdX_crypt adalah nama mapper yang sedang dibuat. Anda dapat menggunakan di sini nama apa pun misalnya "musik" atau "film" atau "sfdsfawe" ....

Simpan dan tutup file dengan mengeluarkan ctrl-x, enter, enter. Ctrl-x menutup nano tetapi pertama-tama ia meminta untuk menyimpan file [yes = enter] dan apa namanya [nama yang sama = masukkan].

Apa yang telah kami lakukan di sana sebenarnya adalah memberitahukan bahwa / root / keyfile harus digunakan sebagai pengganti kata sandi untuk membuka kunci drive.

Langkah 5: Pasang perangkat di fstab

Sekarang, kita memiliki perangkat yang tidak terkunci (well, belum tetapi ketika sistem sedang di-boot) dan kita hanya perlu memasangnya sekarang. Buka / etc / fstab:

sudo nano /etc/fstab

dan tambahkan entri baru seperti:

/dev/mapper/sdX_crypt  /media/sdX     ext3    defaults        0       2

Pastikan Anda memiliki nama mapper yang benar yang Anda tambahkan pada langkah 4. Juga pastikan bahwa titik pemasangan / folder ada. Setelah menambahkannya, simpan kembali file tersebut dan tutup (ctrl-x, enter, enter).

Langkah 6: Reboot atau remount

Itu dia. Sekarang Anda dapat reboot dan perangkat tambahan harus dibuka dan dipasang secara otomatis. Anda juga dapat mengujinya dengan memasang kembali semua perangkat:

sudo mount -a

1
Anda lupa memperbarui initramfs, 100% diperlukan
3pic

6

Meningkatkan jawaban Randy Orrison , berikut ini adalah skrip kecil yang saya buat, yang akan membuat sistem mundur untuk meminta kata sandi pengguna jika gagal menemukan keyfile.

#!/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

Simpan dan menggantinya keyscript=/lib/cryptsetup/scripts/passdevdi /etc/crypttabdengan path ke file ini dan menjalankan sudo update-initramfs -uvdan Anda selesai.


Saya kira solusi Anda tidak berfungsi untuk usb drive untuk lebih dari satu keyfile. Maksud saya jika saya memiliki lebih dari satu partisi terenkripsi (home, swap, root). Tampaknya tidak melepas driver USB setelah perintah cat. Apakah Anda tahu cara memperbaikinya?
Khamidulla

Ini berfungsi untuk saya (Xubuntu 17.10) tetapi saya harus mengedit grub dan menghapus "splash". Juga saya harus menyimpan file di lokasi yang tepat (/ lib / cryptsetup / scripts / unlock_custom) dan chmod 755. Tidak yakin apakah splash atau menyalin di tempat tertentu membuatnya bekerja untuk saya, tetapi tidak berhasil sebelumnya. Lagi pula, ini berfungsi tetapi saat boot, setelah Startet AppArmor initialization.saya dapatkan: Pekerjaan mulai berjalan untuk dev-disk keyfile.device (1m 30s). Setelah tahun 90an X dimulai dan saya dapat menggunakan sistem saya ... tidak tahu bagaimana cara memperbaiki pekerjaan awal ini ...
firepol

1

@deitch Saya memiliki setup yang sama seperti @Randy Orrison dan mengalami masalah yang sama seperti Anda dan ternyata adalah bug dari systemd yang mencoba me-mount kembali sistem file / karena menemukan entri yang sesuai di / etc / crypttab.

Untuk mengatasi ini saya baru saja menghapus entri untuk sda5_crypt dari / etc / crypttab setelah perintah update-initramfs -uv dijalankan.

Boot ulang dan semuanya berfungsi sebagaimana mestinya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.