ื“ืขืงืจื™ืคึผื˜ื™ื ื’ ืึท LUKS ืงืึทื ื˜ื™ื™ื ืขืจ ืื™ืŸ ืกื™ืกื˜ืขื ืฉื˜ื™ื•ื•ืœ ืฆื™ื™ื˜

ื’ื•ื˜ ื˜ืึธื’ ืื•ืŸ ื ืึทื›ื˜ ืึทืœืขืžืขืŸ! ื“ืขืจ ืคึผืึธืกื˜ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื ื•ืฆื™ืง ืคึฟืึทืจ ื™ืขื ืข ื•ื•ืึธืก ื ื•ืฆืŸ LUKS ื“ืึทื˜ืŸ ืขื ืงืจื™ืคึผืฉืึทืŸ ืื•ืŸ ื•ื•ื™ืœืŸ ืฆื• ื“ืขืงืจื™ืคึผื˜ ื“ื™ืกืงืก ืื•ื ื˜ืขืจ ืœื™ื ื•ืงืก (ื“ืขื‘ื™ืึทืŸ, ื•ื‘ื•ื ื˜ื•) ืื•ื™ืฃ ื‘ื™ื ืข ืคื•ืŸ โ€‹โ€‹ื“ืขืงืจื™ืคึผื˜ื™ืึธืŸ ืคื•ืŸ ื“ืขืจ ื•ื•ืึธืจืฆืœ ืฆืขื˜ื™ื™ืœื•ื ื’. ืื•ืŸ ืื™ืš ืงืขืŸ ื ื™ืฉื˜ ื’ืขืคึฟื™ื ืขืŸ ืึทื–ืึท ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื•ื™ืฃ ื“ื™ ืื™ื ื˜ืขืจื ืขื˜.

ื’ืึทื ืฅ ืœืขืฆื˜ื ืก, ืžื™ื˜ ืึท ืคืึทืจื’ืจืขืกืขืจืŸ ืื™ืŸ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื“ื™ืกืงืก ืื™ืŸ ื“ื™ ืฉืขืœื•ื•ืขืก, ืื™ืš ื’ืขืคึผืœืึธื ื˜ืขืจื˜ ื“ื™ ืคึผืจืึธื‘ืœืขื ืคื•ืŸ ื“ืขืงืจื™ืคึผื˜ื™ื ื’ ื“ื™ืกืงืก ื ื™ืฆืŸ ื“ื™ ืžืขืจ ื•ื•ื™ ื‘ืึทื•ื•ื•ืกื˜ ืื•ืคึฟืŸ ื“ื•ืจืš /etc/crypttab. ืคึผืขืจืกื ืึทืœื™, ืื™ืš ื”ื•ื™ื›ืคึผื•ื ืงื˜ ืึท ื‘ื™ืกืœ ืคืจืื‘ืœืขืžืขืŸ ืžื™ื˜ ื“ืขื ืื•ืคึฟืŸ, ื ื™ื™ืžืœื™ ืึทื– ื“ื™ ื˜ืขืงืข ืื™ื– ืœื™ื™ืขื ืขืŸ ื‘ืœื•ื™ื– ื ืึธืš ืœืึธื•ื“ื™ื ื’ (ืžืึทื•ื ื˜ื™ื ื’) ื“ื™ ื•ื•ืึธืจืฆืœ ืฆืขื˜ื™ื™ืœื•ื ื’, ื•ื•ืืก ื”ืื˜ ื ืขื’ืื˜ื™ื•ื• ืืคืขืงื˜ื™ืจื˜ ื–ืคืก ืื™ืžืคืืจื˜ืŸ, ื‘ืคืจื˜ ืื•ื™ื‘ ื–ื™ื™ ื–ืขื ืขืŸ ื’ืขื–ืืžืœื˜ ื’ืขื•ื•ืืจืŸ ืคื•ืŸ ืคืืจื˜ื™ื™ืœื•ื ื’ืขืŸ ืื•ื™ืฃ ื *_ืงืจื™ืคื˜ ืžื™ื˜ืœ, ืื“ืขืจ ืžื“ืื ืจืื™ื“ืก ืื•ื™ืš ื’ืขื–ืืžืœื˜ ืคื•ืŸ ืคืืจื˜ื™ื™ืœื•ื ื’ืขืŸ. ืžื™ืจ ืึทืœืข ื•ื•ื™ืกืŸ ืึทื– ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืคึผืึทืจื˜ืึทื“ ืื•ื™ืฃ LUKS ืงืึทื ื˜ื™ื™ื ืขืจื–, ืจืขื›ื˜? ืื•ืŸ ืื•ื™ืš ื“ื™ ืคึผืจืึธื‘ืœืขื ืคื•ืŸ ืคืจื™ ืึธื ื”ื™ื™ื‘ ืคื•ืŸ ืื ื“ืขืจืข ื‘ืึทื“ื™ื ื•ื ื’ืขืŸ, ื•ื•ืขืŸ ืขืก ื–ืขื ืขืŸ ืงื™ื™ืŸ ืขืจื™ื™ื– ื ืึธืš, ืื•ืŸ ื ื•ืฆืŸ ืื™ืš ืฉื•ื™ืŸ ื“ืึทืจืคึฟืŸ ืขืคึผืขืก (ืื™ืš ื‘ื™ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืงืœืึทืกื˜ืขืจื“ Proxmox VE 5.x ืื•ืŸ ZFS ืื™ื‘ืขืจ iSCSI).

ื ื‘ื™ืกืœ ื•ื•ืขื’ืŸ ZFSoverISCSIiSCSI ืึทืจื‘ืขื˜ ืคึฟืึทืจ ืžื™ืจ ื“ื•ืจืš LIO, ืื•ืŸ ืื™ืŸ ืคืึทืงื˜, ื•ื•ืขืŸ ื“ื™ ื™ืกืงืกื™ ืฆื™ืœ ืกื˜ืึทืจืฅ ืื•ืŸ ืงืขืŸ ื ื™ืฉื˜ ื–ืขืŸ ZVOL ื“ืขื•ื•ื™ืกืขืก, ืขืก ืคืฉื•ื˜ ืจื™ืžื•ื•ื•ื– ื–ื™ื™ ืคื•ืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ื•ื•ืึธืก ืคึผืจื™ื•ื•ืขื ืฅ ื’ืึทืกื˜ ืกื™ืกื˜ืขืžืขืŸ ืคื•ืŸ ื‘ื•ื˜ื™ื ื’. ื“ืขืจืคืืจ, ืึธื“ืขืจ ืจื™ืกื˜ืึธืจื™ื ื’ ื“ื™ ื‘ืึทืงืึทืคึผ ื“ื–ืฉืกืึธืŸ ื˜ืขืงืข, ืึธื“ืขืจ ืžืึทื ื™ื•ืึทืœื™ ืึทื“ื™ื ื’ ื“ืขื•ื•ื™ืกืขืก ืžื™ื˜ ื“ื™ ื™ื“ืขื ื˜ื™ืคื™ืขืจืก ืคื•ืŸ ื™ืขื“ืขืจ VM, ื•ื•ืึธืก ืื™ื– ืคืฉื•ื˜ ืฉืจืขืงืœืขืš ื•ื•ืขืŸ ืขืก ื–ืขื ืขืŸ ื“ืึทื–ืึทื ื– ืคื•ืŸ ืึทื–ืึท ืžืืฉื™ื ืขืŸ ืื•ืŸ ื™ืขื“ืขืจ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื”ืื˜ ืžืขืจ ื•ื•ื™ 1 ื“ื™ืกืง.

ืื•ืŸ ื“ื™ ืฆื•ื•ื™ื™ื˜ืข ืงืฉื™ื ื•ื•ืึธืก ืื™ืš ื•ื•ืขืœ ื‘ืึทื˜ืจืึทื›ื˜ืŸ ืื™ื– ื•ื•ื™ ืฆื• ื“ืขืงืจื™ืคึผื˜ (ื“ืึธืก ืื™ื– ื“ืขืจ ืฉืœื™ืกืœ ืคื•ื ื˜ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ). ืื•ืŸ ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื“ืขื ืื•ื ื˜ืŸ, ื’ื™ื™ืŸ ืฆื• ื“ื™ ืฉื ื™ื™ึทื“ืŸ!

ืจื•ื‘ึฟ ืึธืคื˜ ืื•ื™ืฃ ื“ืขืจ ืื™ื ื˜ืขืจื ืขืฅ, ื–ื™ื™ ื ื•ืฆืŸ ืึท ืฉืœื™ืกืœ ื˜ืขืงืข (ื•ื•ืึธืก ืื™ื– ืื•ื™ื˜ืึธืžืึทื˜ื™ืฉ ืฆื•ื’ืขื’ืขื‘ืŸ ืฆื• ื“ื™ ืฉืคึผืขืœื˜ืœ ืžื™ื˜ ื“ื™ ื‘ืึทืคึฟืขืœ - cryptsetup luksAddKey), ืึธื“ืขืจ ืื™ืŸ ื–ืขืœื˜ืŸ ืื•ื™ืกื ืขืžืขืŸ (ืขืก ืื™ื– ื–ื™ื™ืขืจ ืงืœื™ื™ืŸ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ืื•ื™ืฃ ื“ืขืจ ืจื•ืกื™ืฉ-ืฉืคึผืจืึทืš ืื™ื ื˜ืขืจื ืขืฅ) - ื“ื™ ื“ืขืงืจื™ืคึผื˜_ื“ืขืจื™ื•ื•ื“ ืฉืจื™ืคื˜, ืœื™ื’ืŸ ืื™ืŸ /lib/cryptsetup/script/ (ืคื•ืŸ ืงื•ืจืก, ืขืก ื–ืขื ืขืŸ ืื ื“ืขืจืข ื•ื•ืขื’ืŸ, ืึธื‘ืขืจ ืื™ืš ื’ืขื•ื•ื™ื™ื ื˜ ื“ื™ ืฆื•ื•ื™ื™, ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ื“ื™ ื™ืงืขืจ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ). ืื™ืš ืื•ื™ืš ื’ืขืฉื˜ืจืขื‘ื˜ ืคึฟืึทืจ ืคื•ืœ ืึธื˜ืึทื ืึทืžืึทืก ืึทืงื˜ืึทื•ื•ื™ื™ืฉืึทืŸ ื ืึธืš ืจืขื‘ืึธืึธืฅ, ืึธืŸ ืงื™ื™ืŸ ื ืึธืš ืงืึทืžืึทื ื“ื– ืื™ืŸ ื“ื™ ืงืึทื ืกืึธื•ืœ, ืึทื–ื•ื™ ืึทื– ืึทืœืฅ ื•ื•ืึธืœื˜ "ื ืขืžืขืŸ ืึทื•ื•ืขืง" ืคึฟืึทืจ ืžื™ืจ ื’ืœื™ื™ืš. ื“ืขืจื™ื‘ืขืจ, ื•ื•ืึธืก ื•ื•ืึทืจื˜ืŸ? โ€”

ืœืืžื™ืจ ืื ื”ื™ื™ื‘ืขืŸ!

ืžื™ืจ ื™ื‘ืขืจื ืขืžืขืŸ ืึท ืกื™ืกื˜ืขื, ืœืžืฉืœ ื“ืขื‘ื™ืึทืŸ, ืื™ื ืกื˜ืึทืœื™ืจืŸ ืื•ื™ืฃ ื“ื™ sda3_crypt ืงืจื™ืคึผื˜ืึธ ืฆืขื˜ื™ื™ืœื•ื ื’ ืื•ืŸ ืึท ื˜ื•ืฅ ื“ื™ืกืงืก ื’ืจื™ื™ื˜ ืฆื• ืขื ืงืจื™ืคึผื˜ ืื•ืŸ ืžืึทื›ืŸ ื•ื•ืึธืก ื“ื™ื™ืŸ ื”ืึทืจืฅ ื•ื•ื™ืœ. ืžื™ืจ ื”ืึธื‘ืŸ ืึท ืฉืœื™ืกืœ ืคืจืึทื–ืข (ืคึผืึทืกืกืคืจืึทืกืข) ืฆื• ื•ืคืฉืœื™ืกืŸ sda3_crypt ืื•ืŸ ืขืก ืื™ื– ืคึฟื•ืŸ ื“ืขื ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืึทื– ืžื™ืจ ื•ื•ืขืœืŸ ื‘ืึทื–ื™ื™ึทื˜ื™ืงืŸ ื“ื™ "ื”ืึทืฉ" ืคื•ืŸ ื“ื™ ืคึผืึทืจืึธืœ ืื•ื™ืฃ ืึท ืคืœื™ืกื ื“ื™ืง (ื“ืขืงืจื™ืคึผื˜ื™ื“) ืกื™ืกื˜ืขื ืื•ืŸ ืœื™ื™ื’ืŸ ืขืก ืฆื• ืื ื“ืขืจืข ื“ื™ืกืงืก. ืึทืœืฅ ืื™ื– ืขืœืขืžืขื ื˜ืึทืจ, ืื™ืŸ ื“ื™ ืงืึทื ืกืึธื•ืœ ืžื™ืจ ื•ื™ืกืคื™ืจืŸ:

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

ื•ื•ื• X ืื™ื– ืื•ื ื“ื–ืขืจ ื“ื™ืกืงืก, ืคึผืึทืจื˜ื™ืฉืึทื ื–, ืขื˜ืง.

ื ืึธืš ืขื ืงืจื™ืคึผื˜ื™ื ื’ ื“ื™ ื“ื™ืกืงืก ืžื™ื˜ ืึท ื”ืึทืฉ ืคึฟื•ืŸ ืื•ื ื“ื–ืขืจ ืฉืœื™ืกืœ ืคืจืึทื–ืข, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื’ืขืคึฟื™ื ืขืŸ ื“ื™ UUID ืึธื“ืขืจ ID - ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื•ื•ืึธืก ืื™ื– ื’ืขื•ื•ื™ื™ื ื˜ ืฆื• ื•ื•ืึธืก. ืžื™ืจ ื ืขืžืขืŸ ื“ืึทื˜ืŸ ืคื•ืŸ /dev/disk/by-uuid ืื•ืŸ by-id, ืจื™ืกืคึผืขืงื˜ื™ื•ื•ืœื™.

ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ื‘ื™ื ืข ืื™ื– ืคึผืจื™ืคึผืขืจื™ื ื’ ื˜ืขืงืขืก ืื•ืŸ ืžื™ื ื™-ืกืงืจื™ืคึผืก ืคึฟืึทืจ ื“ื™ ืคืึทื ื’ืงืฉืึทื ื– ื•ื•ืึธืก ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืึทืจื‘ืขื˜ืŸ, ืœืึธื–ืŸ ืื•ื ื“ื– ื’ื™ื™ื  ื•ื•ื™ื™ึทื˜ืขืจ:

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/

ะดะฐะปะตะต

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

ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ../ื“ืขืงืจื™ืคึผื˜

#!/bin/sh

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

ะดะฐะปะตะต

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

ืื™ื ื”ืึทืœื˜ ../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"

ืึท ื‘ื™ืกืœ ืžืขืจ

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

ืื™ื ื”ืึทืœื˜ ../partprobe

#!/bin/sh

$DESTDIR/bin/partprobe

ืื•ืŸ ืœืขืกืึธืฃ, ืื™ื™ื“ืขืจ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ-ื™ื ื™ื˜ืจืึทืžืคืก, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ื˜ืขืงืข /etc/initramfs-tools/scripts/local-top/cryptroot, ืกื˜ืึทืจื˜ื™ื ื’ ืคื•ืŸ ืฉื•ืจื” ~360, ืึท ืฉื˜ื™ืง ืคื•ืŸ ืงืึธื“ ืื•ื ื˜ืŸ

ืึธืจื™ื’ื™ื ืขืœ


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

ืื•ืŸ ื‘ืจืขื ื’ืขืŸ ืขืก ืฆื• ื“ืขื ืคืึธืจืขื

ืขื“ื™ื˜ื™ื“


                # 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

ื‘ืึทืžืขืจืงื•ื ื’ ืึทื– ืึธื“ืขืจ UUID ืึธื“ืขืจ ID ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื“ืึธ. ื“ื™ ื”ื•ื™ืคึผื˜ ื–ืึทืš ืื™ื– ืึทื– ื“ื™ ื ื™ื™ื˜ื™ืง ื“ืจื™ื•ื•ืขืจืก ืคึฟืึทืจ ื”ื“ื“ / ืกืกื“ ื“ืขื•ื•ื™ืกืขืก ื–ืขื ืขืŸ ืžื•ืกื™ืฃ ืฆื• /etc/initramfs-tools/modules. ืื™ืจ ืงืขื ืขืŸ ื’ืขืคึฟื™ื ืขืŸ ืื•ื™ืก ื•ื•ืึธืก ืฉืึธืคืขืจ ืื™ื– ื’ืขื ื™ืฆื˜ ืžื™ื˜ ื“ืขื ื‘ืึทืคึฟืขืœ ื•ื“ืขื•ื•ืึทื“ื ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข -a -n /dev/sdX | egrep 'ืงื•ืงืŸ|ื“ืจื™ื™ื•ื•ืขืจ'.

ืื™ืฆื˜ ืึทื– ืžื™ืจ ื–ืขื ืขืŸ ืคืึทืจื˜ื™ืง ืื•ืŸ ืึทืœืข ื“ื™ ื˜ืขืงืขืก ื–ืขื ืขืŸ ืื™ืŸ ืคึผืœืึทืฅ, ืžื™ืจ ืœื•ื™ืคืŸ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ-ื™ื ื™ื˜ืจืึทืžืคืก -ื• -ืง ืึทืœืข -ื•ื•, ืื™ืŸ ืœืึธื’ื™ื ื’ ืžื•ื– ื ื™ืฉื˜ ื–ื™ื™ืŸ ืขืจืจืึธืจืก ืื™ืŸ ื“ืขืจ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืกืงืจื™ืคึผืก. ืžื™ืจ ืจืขื‘ืึธืึธื˜, ืึทืจื™ื™ึทืŸ ื“ื™ ืฉืœื™ืกืœ ืคืจืึทื–ืข ืื•ืŸ ื•ื•ืึทืจื˜ืŸ ืึท ื‘ื™ืกืœ, ื“ื™ืคึผืขื ื“ื™ื ื’ ืื•ื™ืฃ ื“ื™ ื ื•ืžืขืจ ืคื•ืŸ ื“ื™ืกืงืก. ื“ืขืจื ืึธืš, ื“ื™ ืกื™ืกื˜ืขื ื•ื•ืขื˜ ืึธื ื”ื™ื™ื‘ืŸ ืื•ืŸ ืื™ืŸ ื“ื™ ืœืขืฆื˜ ืกื˜ืึทื’ืข ืคื•ืŸ โ€‹โ€‹ืกื˜ืึทืจื˜ืึทืคึผ, ื ื™ื™ืžืœื™ ื ืึธืš "ืžืึธื•ื ื˜ื™ื ื’" ื“ื™ ื•ื•ืึธืจืฆืœ ืฆืขื˜ื™ื™ืœื•ื ื’, ื“ื™ ืคึผืึทืจืฅ ืคึผืจืึธื‘ืข ื‘ืึทืคึฟืขืœ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ - ืขืก ื•ื•ืขื˜ ื’ืขืคึฟื™ื ืขืŸ ืื•ืŸ ืงืœื™ื™ึทื‘ืŸ ืึทืœืข ื‘ืืฉืืคืŸ ืคึผืึทืจื˜ื™ืฉืึทื ื– ืื•ื™ืฃ LUKS ื“ืขื•ื•ื™ืกืขืก ืื•ืŸ ืงื™ื™ืŸ ืขืจื™ื™ื–, ื–ื™ื™ืŸ ZFS ืึธื“ืขืจ ืžื“ืื, ื•ื•ืขื˜ ืžืขืŸ ืคืืจื–ืืžืœื˜ ื•ื•ืขืจืŸ ืืŸ ืคืจืื‘ืœืขืžืขืŸ! ืื•ืŸ ื“ืึธืก ืึทืœืฅ ืื™ื™ื“ืขืจ ืœืึธื•ื“ื™ื ื’ ื“ื™ ื”ื•ื™ืคึผื˜ ื‘ืึทื“ื™ื ื•ื ื’ืก ื•ื•ืึธืก ื“ืึทืจืคึฟืŸ ื“ื™ ื“ื™ืกืงืก / ืขืจื™ื™ื–.

ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ1: ื•ื•ื™ ื‘ืืžืขืจืงื˜ AEP, ื“ืขื ืื•ืคึฟืŸ ืึทืจื‘ืขื˜ ื‘ืœื•ื™ื– ืคึฟืึทืจ LUKS1.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’