Afkóða LUKS gám við ræsingu kerfisins

Góðan dag og nótt allir! Þessi færsla mun nýtast þeim sem nota LUKS gagnadulkóðun og vilja afkóða diska undir Linux (Debian, Ubuntu) á stig afkóðun rótar skiptingarinnar. Og ég gat ekki fundið slíkar upplýsingar á netinu.

Nýlega, með auknum fjölda diska í hillum, lenti ég í því vandamáli að afkóða diska með því að nota meira en vel þekkta aðferð í gegnum /etc/crypttab. Persónulega legg ég áherslu á nokkur vandamál við að nota þessa aðferð, nefnilega að verið er að lesa skrána aðeins eftir að hafa hlaðið (tengja) rótarskiptinguna, sem hefur neikvæð áhrif á ZFS innflutning, sérstaklega ef þeir voru byggðir úr skiptingum á *_crypt tæki, eða mdadm árás byggð úr skiptingum líka. Við vitum öll að þú getur notað parted á LUKS gáma, ekki satt? Og einnig vandamálið við snemma byrjun annarrar þjónustu, þegar það eru engar fylki ennþá, en nota Ég þarf nú þegar eitthvað (ég vinn með clustered Proxmox VE 5.x og ZFS yfir iSCSI).

Smá um ZFSoverISCSIiSCSI virkar fyrir mig í gegnum LIO, og í raun, þegar iscsi targetið byrjar og sér ekki ZVOL tæki, þá fjarlægir það þau einfaldlega úr stillingunum, sem kemur í veg fyrir að gestakerfin ræsist. Þess vegna, annaðhvort að endurheimta afrit af json skrá, eða bæta við tækjum með auðkennum handvirkt fyrir hvern VM, sem er einfaldlega hræðilegt þegar það eru heilmikið af slíkum vélum og hver stilling hefur meira en 1 disk.

Og önnur spurningin sem ég mun íhuga er hvernig á að afkóða (þetta er lykilatriði greinarinnar). Og við munum tala um þetta hér að neðan, farðu undir skurðinn!

Oftast, á internetinu, er lykilskrá notuð (bætt sjálf við raufina á undan með skipuninni - cryptsetup luksAddKey), eða í sjaldgæfum undantekningum (á rússnesku internetinu eru mjög litlar upplýsingar) - decrypt_derived scriptið staðsett í /lib/cryptsetup/script/ (auðvitað eru aðrar leiðir til, en ég notaði þessar tvær, sem lágu til grundvallar greininni). Ég sóttist líka eftir fullri sjálfvirkri innlimun eftir endurræsingu, án frekari skipana í stjórnborðinu, svo að allt myndi „fljúga upp“ fyrir mig í einu. Þess vegna, hvers vegna að bíða? —

Byrjum!

Gerum ráð fyrir að kerfi, eins og Debian, sé sett upp á sda3_crypt dulmálsskiptingu og tugi diska tilbúnir til að dulkóða og búa til eftir bestu getu. Við höfum aðgangsorð (aðgangsorð) til að opna sda3_crypt, og það er frá þessari skiptingu sem við munum fjarlægja „hash“ úr lykilorðinu á keyrandi (afkóðaða) kerfinu og bæta því við restina af diskunum. Allt er grunnatriði, í stjórnborðinu keyrum við:

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

þar sem X er diskarnir okkar, skipting o.s.frv.

Eftir að hafa dulkóðað diskana með "hash" úr lykilorðinu okkar þarftu að finna út UUID eða auðkenni - allt eftir því hver er vanur hverju og hverju. Við tökum gögn frá /dev/disk/by-uuid og by-id í sömu röð.

Næsta skref er að undirbúa skrár og smáforskriftir fyrir þær aðgerðir sem við þurfum til að vinna, við skulum halda áfram:

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

Innihald ../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

Innihald ../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"

örlítið meira

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

Efni ../partprobe

#!/bin/sh

$DESTDIR/bin/partprobe

og síðast, fyrir update-initramfs, þarftu að breyta /etc/initramfs-tools/scripts/local-top/cryptroot skránni, frá línu ~360, kóðabút fyrir neðan

Original


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

og koma því í þetta form

Breytt


                # 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

Athugaðu að annað hvort er hægt að nota UUID eða auðkenni hér. Aðalatriðið er að nauðsynlegum reklum fyrir HDD / SSD tæki er bætt við /etc/initramfs-tools/modules. Þú getur fundið út hvaða bílstjóri er notaður með skipuninni udevadm info -a -n /dev/sdX | egrep 'útlit|Bílstjóri'.

Nú þegar við erum búin og allar skrárnar eru á sínum stað skaltu keyra update-initramfs -u -k allt -v, í skráningu má ekki vera framkvæmdarvillur á forskriftum okkar. Við endurræsum, sláum inn lykilorðið og bíðum aðeins, allt eftir fjölda diska. Næst mun kerfið fara í gang og á lokastigi ræsingar, þ.e. eftir að hafa „sett“ rótarsneiðina, verður partprobe skipunin keyrð - það mun finna og taka upp allar búnar skiptingar á LUKS tækjum og hvaða fylki sem er, hvort sem það er ZFS eða mdadm, verður sett saman án vandræða! Og allt þetta fyrir fermingu kjarnaþjónustu og þjónustu sem þarfnast þessara diska/fylki.

uppfæra1: Hvernig tók eftir AEP, þessi aðferð virkar aðeins fyrir LUKS1.

Heimild: www.habr.com

Bæta við athugasemd