GNU/Linux >> Belajar Linux >  >> Linux

10 Contoh cryptsetup Linux untuk Manajemen Kunci LUKS (Cara Menambah, Menghapus, Mengubah, Mengatur Ulang Kunci enkripsi LUKS)

LUKS adalah enkripsi disk untuk Linux.

Pertama kali ketika Anda mengenkripsi partisi dengan LUKS (atau ketika Anda memilih opsi enkripsi disk selama instalasi OS), Anda harus menentukan kata sandi yang akan digunakan saat Anda membuka partisi LUKS.

Namun, setelah itu, Anda dapat me-mount dan meng-unmount partisi tersebut sebanyak yang Anda suka tanpa harus memasukkan kata sandi sampai Anda me-reboot sistem.

Bayangkan dua skenario berikut:

  1. Anda lupa kata sandi LUKS. Atau, Anda mewarisi sistem dari seseorang yang memiliki partisi terpasang dengan enkripsi LUKS. Anda tidak memiliki kata sandi LUKS untuk ini. Saat Anda me-reboot sistem, Anda akan berada dalam masalah, karena Anda tidak memiliki kunci LUKS.
  2. Untuk tujuan kepatuhan keamanan, Anda harus sering mengubah sandi enkripsi LUKS. Dalam hal ini Anda harus memutar kunci LUKS tanpa mengganggu partisi yang terpasang.

Dalam tutorial ini, kita akan membahas semua yang perlu Anda ketahui tentang manajemen kunci LUKS.

1. Delapan Slot Kunci LUKS

Di LUKS, untuk satu partisi terenkripsi, Anda dapat memiliki delapan kunci berbeda.

Salah satu dari delapan kunci yang berbeda dapat digunakan untuk membuka partisi terenkripsi.

Anda dapat memilih untuk hanya memiliki satu kunci pada sebuah partisi, atau Anda dapat menetapkan kedelapan kunci yang berbeda.

Kunci ini disimpan di slot kunci LUKS untuk partisi. Jadi, akan ada 8 slot kunci untuk sebuah partisi.

Untuk melihat semua slot kunci, gunakan cryptsetup luksDump seperti yang ditunjukkan di bawah ini. Dalam contoh ini, hanya menggunakan dua slot.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

Di atas:

  • /dev/sdb1 adalah partisi terenkripsi LUKS.
  • Nomor slot kunci dimulai dari 0. Karena kami memiliki 8 slot, nomor slot kunci dimulai dari 0 hingga 7.
  • ENABLED menunjukkan bahwa slot khusus ini memiliki kunci yang ditetapkan untuknya.
  • Di sini kita memiliki dua slot dengan kunci LUKS. Jadi, /dev/sdb1 LUKS partisi terenkripsi memiliki dua kunci yang ditetapkan.

2. Tambahkan Kunci LUKS Baru

Untuk menambahkan frasa sandi LUKS baru (kunci LUKS) ke partisi terenkripsi /dev/sdb1 LUKS, gunakan perintah cryptsetup luksAddKey seperti yang ditunjukkan di bawah ini.

# cryptsetup luksAddKey /dev/sdb1
Enter any passphrase: 
Enter new passphrase for key slot: 
Verify passphrase: 

Di atas:

  • Saat tertulis “Masukkan frasa sandi apa pun:”, Anda harus memasukkan salah satu sandi yang ada untuk /dev/sdb1. Seperti yang kita lihat di atas, ini sudah memiliki dua kata sandi dari Slot 0 dan Slot 1. Anda harus memasukkan salah satu dari kata sandi itu terlebih dahulu.
  • Setelah Anda memasukkan sandi yang ada, Anda dapat menetapkan kunci LUKS baru.

Setiap kali Anda menambahkan kunci LUKS baru, itu akan ditambahkan ke slot berikutnya yang tersedia. Karena kami sudah memiliki dua Kunci, kunci baru ditambahkan ke slot#2, yang merupakan slot berikutnya yang tersedia.

Jadi, Slot#0 hingga 2 akan mengatakan “ENABLED”. Kami memiliki tiga kunci LUKS di /dev/sdba1.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: ENABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

3. Tambahkan Kunci LUKS Baru ke Slot Tertentu

Alih-alih LUKS menambahkan kunci baru ke slot berikutnya yang tersedia, Anda juga dapat menambahkan kunci baru ke slot tertentu.

Untuk ini gunakan opsi -S di cryptsetup luksAddKey seperti yang ditunjukkan di bawah ini.

Dalam contoh ini, kami menambahkan kunci LUKS baru ke Slot#5. Saya menetapkan frasa sandi baru sebagai:PasswordforSlot5

# cryptsetup luksAddKey /dev/sdb1 -S 5

Seperti yang kita lihat di bawah, sekarang Slot#5 mengatakan “ENABLED”, sementara slot#3 dan #4 masih dalam status DINONAKTIFKAN.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: ENABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: ENABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

Pada tahap ini, kami memiliki 4 kunci LUKS yang ditetapkan ke /dev/sdb1 partisi terenkripsi.

4. Hapus Kunci LUKS yang Ada

Untuk menghapus kunci yang ada dari partisi LUKS, gunakan cryptsetup luksRemoveKey seperti yang ditunjukkan di bawah ini.

Dalam contoh ini, Anda hanya perlu memasukkan kata sandi (key) yang ingin Anda hapus.

Hapus/Hapus/Hapus kunci LUKS dari slot. Anda tidak perlu menentukan nomor slot. Sebagai gantinya tentukan kunci yang akan dihapus!.

Dalam contoh ini, ketika diminta "Masukkan frasa sandi LUKS yang akan dihapus:", saya memasukkan kunci yang dibuat pada contoh sebelumnya:PasswordforSlot5

# cryptsetup luksRemoveKey /dev/sdb1
Enter LUKS passphrase to be deleted: 

Seperti yang Anda lihat dari output luksDump berikut, kunci di Slot#5 sekarang telah dihapus.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: ENABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

5. Hapus Kunci LUKS menggunakan luksKillSlot

Jika Anda tidak memiliki kunci untuk slot tertentu, tetapi hanya ingin menghapusnya, Anda dapat melakukannya dengan menggunakan perintah cryptsetup luksKillSlot seperti yang ditunjukkan di bawah ini.

Dalam contoh ini, kami menghapus kunci dari slot LUKS#2.

Untuk ini, Anda harus memasukkan kunci LUKS untuk salah satu slot. Ini hanya sebagai validasi sebelum menghapus Kunci dari slot #2.

# cryptsetup luksKillSlot /dev/sdb1 2
Enter any remaining LUKS passphrase: 

Seperti yang Anda lihat dari output luksDump berikut, kunci di Slot#2 sekarang telah dihapus.

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

6. Tambahkan Kunci LUKS Baru dari File

Anda juga dapat menambahkan kunci LUKS baru berdasarkan file kunci yang sudah Anda miliki seperti yang ditunjukkan di bawah ini.

# cryptsetup luksAddKey  /dev/sdb1 masterkeyfile
Enter any passphrase: 

Di atas:

  • masterkeyfile berisi kunci LUKS baru yang ingin Anda tambahkan. Ini harus berupa file biner.
  • Saat muncul pertanyaan “Enter any passphrase:”, masukkan salah satu kunci LUKS yang ada untuk partisi /dev/sdb1.
  • Seperti yang Anda lihat di atas, itu tidak meminta kunci LUKS baru, karena mengambilnya dari file masterkey.

Seperti yang Anda lihat dari output luksDump berikut, kunci baru dari masterkeyfile ini ditambahkan ke slot#2

# cryptsetup luksDump /dev/sdb1 | grep Slot
Key Slot 0: ENABLED
Key Slot 1: ENABLED
Key Slot 2: ENABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

7. Setel Ulang Kunci LUKS yang Terlupakan – Dapatkan Kunci yang Ada

Jika Anda me-reboot server, dan tidak dapat memasang partisi LUKS terenkripsi Anda, karena Anda lupa kata sandi LUKS Anda, maka Anda kurang beruntung, Anda dapat meresetnya.

Tetapi, jika partisi LUKS terenkripsi sudah dibuka, dan jika Anda belum me-reboot sistem, dan Anda lupa kata sandi LUKS untuk partisi yang sudah di-mount (setidaknya LUKS dibuka sekali sejak reboot terakhir), maka Anda dapat tetapkan kunci LUKS baru.

Dalam skenario “lupa kata sandi LUKS saya” ini, Anda dapat melakukan dua langkah berikut:

  1. Ekstrak kunci terenkripsi saat ini dari partisi LUKS
  2. Buat kunci LUKS baru menggunakan kunci terenkripsi yang diekstraksi di atas

Dalam contoh ini, saya memasang partisi /home1, yang merupakan partisi terenkripsi LUKS, tetapi saya tidak memiliki kata sandi untuk ini.

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             127G   44G   76G  37% /
/dev/mapper/home1      93G  188M   88G   1% /home1

Nama volume adalah apa pun yang ada setelah "/ dev/mapper/" di kolom 1 dari output perintah df di atas. Jadi, dalam contoh kita, nama volumenya adalah “home1”

Tabel dmsetup berikut –showkeys akan menampilkan kunci terenkripsi dari semua partisi yang terpasang pada sistem Anda.

# dmsetup table --showkeys 
home1: 0 197259264 crypt aes-cbc-essiv:sha256 607f482870c795a9b1e307ffbfc6643eaa219e9ef8c6773de02cd298c8fcda3c 0 8:17 4096

Bidang setelah "aes-cbc-essiv:sha256" adalah kata sandi terenkripsi. Dapatkan kunci LUKS terenkripsi dan simpan dalam file.

# vi existinglukskey.txt
607f482870c795a9b1e307ffbfc6643eaa219e9ef8c6773de02cd298c8fcda3c

8. Setel Ulang Kunci LUKS yang Terlupakan – Buat file Kunci Biner

Sekarang, kita harus mengonversi kunci yang ada ini dari file teks ke file biner. Gunakan perintah xxd seperti yang ditunjukkan di bawah ini.

# xxd -r -p existinglukskey.txt existinglukskey.bin

Di atas:

  • -r opsi untuk kebalikannya. Ini akan mengubah hexdump menjadi biner.
  • -p opsi untuk postscript. Ini menunjukkan gaya hexdump berkelanjutan postscript.
  • file masukanlukskey.txt yang ada
  • file keluaran lukskey.bin yang ada. Ini sekarang akan berisi kata sandi LUKS terenkripsi yang ada dalam file biner.

9. Setel Ulang Kunci LUKS yang Terlupakan – Tambahkan Kunci Baru

Terakhir, tambahkan kunci LUKS baru dengan menggunakan kunci LUKS yang sudah kita ekstrak ke dalam file biner.

# cryptsetup luksAddKey /dev/sdb1 --master-key-file <(cat existinglukskey.bin)
Enter new passphrase for key slot: 
Verify passphrase: 

Di atas:

  • –master-key-file Tentukan file biner di sini. Jangan gunakan lukskey.txt yang ada. Alih-alih gunakan lukskey.bin yang ada yang kami buat di atas.
  • Seperti yang Anda lihat di atas, luksAddKey tidak meminta kata sandi LUKS yang ada, karena mengambilnya dari file biner.
  • Saat muncul pertanyaan “Enter new passphrase for key slot:”, masukkan kata sandi LUKS yang baru. Tapi, kali ini, jangan lupakan ini.

Sekali lagi, ingat ini:Jika Anda lupa kata sandi LUKS setelah Anda me-reboot sistem, Anda kehilangan Luks (kurang beruntung), karena Anda tidak dapat meresetnya.

10. Buang LUKS MasterKey

Anda juga dapat membuang MasterKey dan menyimpannya dengan aman di suatu tempat. Gunakan opsi –dump-master-key bersama dengan luksDump seperti yang ditunjukkan di bawah ini.

# cryptsetup luksDump --dump-master-key /dev/sdb1
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase: 
LUKS header information for /dev/sdb1
Cipher name:    aes
Cipher mode:    cbc-essiv:sha256
Payload offset: 4096
UUID:           146d639a-757c-4bcb-aee6-8fe815345104
MK bits:        256
MK dump:        60 7f 48 28 70 c7 95 a9 b1 e3 07 ff bf c6 64 3e 
                aa 21 9e 9e f8 c6 77 3d e0 2c d2 98 c8 fc da 3c 

Perlu diingat bahwa Anda harus menyimpan dump header LUKS di tempat yang aman. Dengan menggunakan dump kunci master, seseorang dapat mengakses partisi terenkripsi LUKS.


Linux
  1. Cara Menambah atau Menghapus Pengguna dari Grup di Linux

  2. Cara Mengganti Shell di Linux

  3. Cara Mengatur kunci SSH untuk login ssh "tanpa kata sandi" di Linux

  1. Cara Mengubah, Menghapus, atau Menonaktifkan Kata Sandi Pengguna di Linux

  2. Tambahkan Pengguna ke Grup di Linux, Bagaimana Melakukannya (Dengan Contoh)

  3. 5 Contoh Perintah Sentuh Linux (Cara Mengubah Stempel Waktu File)

  1. Cara Menambahkan Beberapa Rute di Linux Menggunakan Contoh Perintah ip

  2. 15 Contoh Perintah aptitude untuk Manajemen Paket di Linux

  3. Bagaimana cara mengubah frasa sandi enkripsi disk penuh?