Dekripsi wadah LUKS dina waktos boot sistem

Wilujeng siang sareng wengi sadayana! Tulisan ieu bakal mangpaat pikeun anu nganggo enkripsi data LUKS sareng hoyong ngadekrip disk dina Linux (Debian, Ubuntu) dina tahapan decrypting partisi root. Sareng kuring henteu mendakan inpormasi sapertos kitu dina Internét.

Nu leuwih anyar, jeung ngaronjatna jumlah disk dina rak, abdi lumpat kana masalah decrypting disk ngagunakeun métode leuwih ti well-dipikawanoh ngaliwatan /etc/crypttab. Pribadi, kuring nyorot sababaraha masalah sareng nganggo metodeu ieu, nyaéta yén filena dibaca ngan sanggeus loading (gunung) partisi root, nu négatip mangaruhan impor ZFS, utamana lamun maranéhanana diwangun ti partitions dina alat * _crypt, atawa razia mdadm diwangun ti partitions ogé. Urang sadayana terang yén anjeun tiasa nganggo parted dina wadah LUKS, sanés? Sarta ogé masalah mimiti mimiti jasa lianna, lamun euweuh arrays acan, tapi ngagunakeun Kuring geus butuh hal (Kuring digawekeun ku clustered Proxmox VE 5.x na ZFS leuwih iSCSI).

A saeutik ngeunaan ZFSoverISCSIiSCSI lumaku pikeun kuring ngaliwatan LIO, sarta dina kanyataanana, lamun udagan iscsi dimimitian tur teu ningali alat ZVOL, eta ngan saukur ngaluarkeun aranjeunna tina konfigurasi, nu nyegah sistem tamu ti booting. Lantaran kitu, boh mulangkeun cadangan file json, atawa sacara manual nambahkeun alat kalawan identifiers pikeun tiap VM, nu ngan dahsyat lamun aya puluhan mesin sapertos na unggal konfigurasi boga leuwih ti 1 disk.

Sareng patarosan kadua anu bakal kuring pertimbangkeun nyaéta kumaha cara ngadekrip (ieu mangrupikeun titik konci tulisan). Sarta kami bakal ngobrol ngeunaan ieu di handap, buka handapeun cut!

Seringna, dina Internét, file konci dianggo (ditambahkeun nyalira kana slot sateuacan ieu ku paréntah - cryptsetup luksAddKey), atanapi dina pengecualian anu jarang (dina Internét basa Rusia aya sakedik inpormasi) - skrip decrypt_derived lokasina di /lib/cryptsetup/script/ (tangtosna, aya cara sejen, tapi kuring dipaké dua ieu, nu jadi dadasar artikel). Kuring ogé strove pikeun citakan otonom pinuh sanggeus reboots, tanpa paréntah tambahan dina konsol nu, ku kituna sagalana bakal "ngapung up" pikeun kuring sakaligus. Ku kituna, naha ngantosan? —

Hayu urang mimitian!

Hayu urang anggap sistem, kawas Debian, dipasang dina partisi crypto sda3_crypt jeung belasan disk siap énkripsi sarta dijieun pikeun eusi haté anjeun. Kami ngagaduhan frasa sandi (passphrase) pikeun muka konci sda3_crypt, sareng tina partisi ieu kami bakal ngahapus "hash" tina kecap akses dina sistem anu ngajalankeun (dekripsi) sareng tambahkeun kana sesa disk. Sadayana dasar, dina konsol kami laksanakeun:

/lib/cryptsetup/scripts/decrypt_derived sda3_crypt | cryptsetup luksFormat /dev/sdX

dimana X nyaéta disk urang, partisi, jsb.

Saatos énkripsi disk nganggo "hash" tina frasa sandi kami, anjeun kedah milarian UUID atanapi ID - gumantung kana saha anu biasa naon sareng naon. Kami nyandak data tina / dev / disk / by-uuid sareng by-id masing-masing.

Léngkah salajengna nyaéta nyiapkeun file sareng mini-skrip pikeun fungsi anu urang peryogikeun, hayu urang teraskeun:

cp -p /usr/share/initramfs-tools/hooks/cryptroot /etc/initramfs-tools/hooks/
cp -p /usr/share/initramfs-tools/scripts/local-top/cryptroot /etc/initramfs-tools/scripts/local-top/

saterusna

touch /etc/initramfs-tools/hooks/decrypt && chmod +x /etc/initramfs-tools/hooks/decrypt

Eusi ../decrypt

#!/bin/sh

cp -p /lib/cryptsetup/scripts/decrypt_derived "$DESTDIR/bin/decrypt_derived"

saterusna

touch /etc/initramfs-tools/hooks/partcopy && chmod +x /etc/initramfs-tools/hooks/partcopy

Eusi ../partcopy

#!/bin/sh

cp -p /sbin/partprobe "$DESTDIR/bin/partprobe"
cp -p /lib/x86_64-linux-gnu/libparted.so.2 "$DESTDIR/lib/x86_64-linux-gnu/libparted.so.2"
cp -p /lib/x86_64-linux-gnu/libreadline.so.7 "$DESTDIR/lib/x86_64-linux-gnu/libreadline.so.7"

saeutik deui

touch /etc/initramfs-tools/scripts/local-bottom/partprobe && chmod +x /etc/initramfs-tools/scripts/local-bottom/partprobe

Eusi ../partprobe

#!/bin/sh

$DESTDIR/bin/partprobe

sareng terakhir, sateuacan update-initramfs, anjeun kedah ngédit file /etc/initramfs-tools/scripts/local-top/cryptroot, mimitian ti garis ~360, snippet kode di handap.

asli


                # decrease $count by 1, apparently last try was successful.
                count=$(( $count - 1 ))
                
                message "cryptsetup ($crypttarget): set up successfully"
                break

jeung mawa ka formulir ieu

Diédit


                # decrease $count by 1, apparently last try was successful.
                count=$(( $count - 1 ))
                

                /bin/decrypt_derived $crypttarget | cryptsetup luksOpen /dev/disk/by-uuid/ *CRYPT_MAP*
                /bin/decrypt_derived $crypttarget | cryptsetup luksOpen /dev/disk/by-id/ *CRYPT_MAP*

                message "cryptsetup ($crypttarget): set up successfully"
                break

Catet yén UUID atanapi ID tiasa dianggo di dieu. Hal utama nyaéta yén supir anu dipikabutuh pikeun alat HDD / SSD ditambah kana /etc/initramfs-tools/modules. Anjeun tiasa mendakan supir mana anu dianggo ku paréntah udevadm info -a -n / dev / sdX | egrep 'neangan|SUPIRAN'.

Ayeuna urang parantos réngsé sareng sadaya file parantos aya, jalankeun update-initramfs -u -k sadayana -v, dina logging teu kudu kasalahan palaksanaan naskah urang. Kami reboot, lebetkeun kecap akses sareng antosan sakedik, gumantung kana jumlah disk. Salajengna, sistem bakal ngamimitian sareng dina tahap ahir peluncuran, nyaéta saatos "masang" partisi akar, paréntah partprobe bakal dieksekusi - éta bakal mendakan sareng nyandak sadaya partisi anu diciptakeun dina alat LUKS sareng susunan naon waé, naha ZFS atanapi mdadm, bakal dirakit tanpa masalah! Sareng sadaya ieu saméméh loading jasa inti jeung jasa nu peryogi disk ieu / arrays.

update1: Kumaha perhatoskeun AEP, Metoda ieu ngan lumaku pikeun LUKS1.

sumber: www.habr.com

Tambahkeun komentar