LUKS (Linux Unified Key Setup) este unul dintre diferitele formate de criptare a discurilor disponibile pentru Linux, care este platforma agnostică. Acest tutorial vă va oferi partiții root și swap în interiorul unui volum LVM (Linux Volume Manager) conținut în interiorul unei partiții LUKS criptate. Acest tutorial vă permite, de asemenea, să deblocați partiția LUKS de la distanță folosind un demon de server SSH simplificat folosind orice program de client SSH compatibil.
Cerințe preliminare
Pasul 1: Configurare mediu
În pagina Deploy Servers , faceți următoarele:
- Alegeți locația serverului dvs. în
Server Locationsecțiune.
- Alegeți
CentOS7sub ISO Libraryfila Server Typesecțiunii.
- Alegeți specificațiile hardware dorite în
Server Sizesecțiune.
- Faceți clic pe
Deploy Nowbuton.
Utilizați View Consoleopțiunea pentru a accesa instanța VPS prin intermediul consolei noVNC.
Pasul 2: Porniți programul de instalare a modului text CentOS 7
Selectați Install CentOS Linux 7opțiunea.
Apăsați Tabtasta.
Introduceți textdupă, vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20\86_64 quietastfel încât să arate așa vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20\86_64 quiet textși apăsați Entertasta.
VPS va porni acum în programul de instalare CentOS în modul text. Veți vedea un ecran în consola noVNC ca în imaginea de mai jos.

Pasul 3: Instalare LVM pe codul LUKS complet de disc
Utilizați Alt + Right Arrow Keycombinația pentru a naviga către consola TTY2 pentru a tasta comenzi pe linia de comandă.
Tastați următoarele comenzi de mai jos pentru a crea o partiție pentru conținerea încărcătorului de încărcare GRUB2, o /bootpartiție necriptată și o partiție primară care va păstra partiția LUKS.
parted -a opt -s /dev/vda mklabel gpt
parted -s /dev/vda unit mb
parted -s /dev/vda mkpart primary 1 3
parted -s /dev/vda name 1 grub
parted -s /dev/vda set 1 bios_grub on
parted -s /dev/vda mkpart primary 3 259
parted -s /dev/vda name 2 boot
parted -s /dev/vda mkpart primary 259 100%
parted -s /dev/vda name 3 root
Introduceți următoarea comandă pentru a afișa aspectul partiției.
parted -s /dev/vda print
Apoi, completați rootfspartiția numită cu date pseudo-aleatorii. Acest lucru va dura puțin peste o jumătate de oră pentru a finaliza.
dd if=/dev/urandom of=/dev/vda3 bs=1M status=progress
Pe CentOS 7, cryptsetupcomenzile utilizează cifrarea implicită a aes-xts-plain64, dimensiunea cheii implicite de 256 biți și hash-ul implicit SHA1. În schimb, partiția LUKS va fi creată cu cifrul Serpent mai sigur, cu o dimensiune cheie de 512 biți și cu hash-ul Whirlpool.
cryptsetup luksFormat /dev/vda3 -c serpent-xts-plain64 -h whirlpool -s 512
Introduceți răspunsurile, când vi se solicită următoarele întrebări, apoi apăsați Entertasta:
- Esti sigur? (Tip cu majuscule da):
YES
- Introduceți parolă:
strong-password
- Verificați fraza:
strong-password
Opțional: Backup Antetul partiției LUKS
Avertisment Aceasta va permite autentificarea și copierea rădăcină fără o solicitare de parolă. Ucideți acest server SSH după ce ați recuperat /tmp/luks-header-backup.imgfișierul.
Pentru păstrare, salvați o copie a antetului partiției LUKS. Aceasta vă asigură că, dacă antetul partiției dvs. LUKS este cumva deteriorat, acesta poate fi restabilit. Dacă antetul este deteriorat fără o copie de rezervă funcțională, datele dvs. se pierd pentru totdeauna.
cryptsetup luksHeaderBackup /dev/vda3 --header-backup-file /tmp/luks-header-backup.img
Pentru a copia /tmp/luks-header-backup.imgfișierul de pe server, un server SSH trebuie pornit temporar, folosind copia sigură executabilă scppe o gazdă client, pentru a-l prelua.
Introduceți următoarea comandă de mai jos pentru a genera cheile de gazdă SSH.
sshd-keygen
Introduceți următoarea comandă de mai jos pentru a crea /etc/ssh/sshd_configfișierul.
cp /etc/ssh/sshd_config.anaconda /etc/ssh/sshd_config
Introduceți următoarea comandă de mai jos pentru a edita /etc/ssh/sshd_configfișierul.
vi /etc/ssh/sshd_config
Pentru a edita fișierul, apăsați Inserttasta și utilizați tastele săgeată pentru a naviga la secțiunile fișierului care au nevoie de editare.
În linia întâi, schimbați numărul Port 22de la implicit 22la un număr aleatoriu la alegere între 1025și 65535. (Exemplu: port 25782)
Derulați în jos până la numărul treisprezece, apăsați Endtasta și apăsați Entertasta.
Pe linia următoare, adăugați HostKey /etc/ssh/ssh_host_ed25519_keyși apăsați Entertasta.
Pe linia următoare, adăugați HostKey /etc/ssh/ssh_host_rsa_keyși apăsați Entertasta.
Apăsați Esctasta, tastați :wqși apăsați Entertasta pentru a salva fișierul.
Interfața de rețea implicită eth0are nevoie de o adresă IP. Tastați următoarea comandă de mai jos pentru a atribui adresa IP listată pentru instanța dvs. la eth0interfața de rețea.
dhclient
Tastați următoarea comandă pentru a afișa adresa IP alocată. Adresa IP va fi listată imediat după inetși înainte netmask. (Exemplu: inet 192.0.2.1netmask)
ifconfig eth0
Tastați următoarea comandă pentru a porni serverul SSH.
/usr/sbin/sshd
Dacă utilizați scpcomanda de la o linie de comandă de pe o mașină client, folosiți următoarea comandă de mai jos ca șablon pentru a prelua /tmp/luks-header-backup.imgfișierul. Înlocuiți 25782cu numărul de port real alocat în /etc/ssh/sshd_config. Înlocuiți 192.0.2.1cu adresa IP asignată.
scp -P 25782 [email protected]:/tmp/luks-header-backup.img .
După recuperarea luks-header-backup.imgfișierului, omorâți imediat serverul SSH tastând comanda de mai jos în fereastra consolei noVNC.
killall sshd
Deschideți partiția LUKS pentru a configura volumul fizic LVM care va rezista în interior.
cryptsetup luksOpen /dev/vda3 centos
Introduceți fraza de acces creată anterior pentru a deschide partiția LUKS atunci când vi se solicită, apoi apăsați Entertasta.
Introduceți o parolă pentru /dev/vda3:strong-password
Introdu mai jos următoarea comandă:
ls /dev/mapper
Acesta conține următoarele fișiere numite centos, control, live-baseși live-rw. Este centospartiția LUKS.
Tastați următoarea comandă de mai jos pentru a crea volumul fizic LVM.
pvcreate /dev/mapper/centos
Când aveți succes, veți primi următorul mesaj:
Physical volume "/dev/mapper/centos" successfully created
Tastați următoarea comandă de mai jos pentru a crea grupul de volum LVM.
vgcreate ssd /dev/mapper/centos
Când aveți succes, veți primi următorul mesaj:
Volume group "ssd" successfully created
Tastați următoarea comandă de mai jos pentru a crea un volum logic LVM pentru o partiție swap. Folosiți o judecată sonoră pentru a crea o partiție swap, de dimensiunea necesară (-L = dimensiunea volumului), pe baza instanței dvs. VPS.
lvcreate -L 1G -n swap ssd
Când aveți succes, veți primi următorul mesaj:
Logical volume "swap" created
Tastați următoarea comandă de mai jos pentru a crea un volum logic LVM pentru partiția rădăcină. Acest lucru va utiliza spațiul liber rămas în timp ce va rezerva cinci procente (5%) pentru a conține instantanee LVM ale volumelor dvs. logice, dacă alegeți acest lucru.
lvcreate -l 95%FREE -n root ssd
Când aveți succes, veți primi următorul mesaj:
Logical volume "root" created
Afișează volumul fizic LVM.
pvdisplay
Veți vedea textul în consola noVNC similar cu imaginea din imaginea de mai jos.

Afișați grupul de volum LVM.
vgdisplay
Veți vedea textul în consola noVNC similar cu imaginea din imaginea de mai jos.

Afișează volumul (volumele) LVM.
lvdisplay
Veți vedea textul în consola noVNC similar cu imaginea din imaginea de mai jos.

Tastați următoarea comandă de mai jos pentru a dezactiva grupul de volum LVM. Aceasta trebuie finalizată pentru a permite cryptsetupînchiderea partiției LUKS în pasul următor.
vgchange -a n
Când aveți succes, veți primi următorul mesaj:
0 logical volume(s) in volume group "ssd" now active
Închideți volumul LUKS.
cryptsetup luksClose centos
Introdu mai jos următoarea comandă:
ls /dev/mapper
Acesta conține următoarele fișiere numite control, live-baseși live-rw. centosFișierul, care conține partiția LUKS, va lipsi pentru a se asigura că acesta a fost închis corect.
Tastați rebootși apăsați Entertasta pentru a reporni.
Pasul 4: Porniți programul Instalator GUI CentOS 7
Selectați Install CentOS Linux 7opțiunea și apăsați Entertasta.
VPS se va porni acum în programul de instalare CentOS GUI. Veți vedea un ecran în consola noVNC ca în imaginea de mai jos. Selectați Install CentOS 7(1) și apăsați Entertasta.

Pe WELCOME TO CENTOS 7ecran, faceți clic pe Continuebutonul albastru (1).

Atenție Dacă nu utilizați limba implicită a limbii engleze și localizarea Statelor Unite, introduceți limba în bara de căutare (1). Faceți clic pe limba (2) și pe localul corespunzător (3) asociat cu acesta. Când vă mulțumiți, faceți clic pe Continuebutonul albastru (4).

Pe INSTALLATION SUMMARYecran, faceți clic pe INSTALLATION DESTINATION (Automatic partitioning selected)(1) sub SYSTEM.

Pe INSTALLATION DESTINATIONecran, selectați opțiunea I will configure partitioning(1) de sub Other Storage Options (Partitioning)și faceți clic pe Donebutonul albastru (2) din stânga sus a ecranului.

Pe MANUAL PARTITIONINGecran, faceți clic pe Unknownacordeonul extensibil (1). Acesta va dezvălui trei partiții cu numele BIOS Boot (vda1), Unknown (vda2)și Encrypted (LUKS) (vda3).

Cu BIOS Bootpartiția evidențiată în albastru (1), selectați opțiunea casetelor de selectare din Reformat(2) de lângă File System:acordeon și faceți clic pe Update Settingsbutonul (3).

Faceți clic pe Unknownpartiția (1), astfel încât să fie evidențiată în albastru. Selectați opțiunea casetelor de selectare din Reformat(2) de lângă File System:acordeon. Selectați ext2în File System:acordeon (3), introduceți /bootîn câmpul de text (4) sub Mount Point:, introduceți bootîn câmpul de text (5) sub Label:și faceți clic pe Update Settingsbutonul (6).

Faceți clic pe Encrypted (LUKS)partiția (1), astfel încât să fie evidențiată în albastru. Introduceți expresia de acces creat pentru partiție LUKS în Step 3: Setup LVM On LUKS Full Disk Encryptionîn Passphrase:câmpul de text (2) și faceți clic pe Unlockbutonul (3).

UnknownVa apărea un nou acordeon expandabil (1). Va dezvălui două partiții numite Unknown (ssd-root)și Unknown (ssd-swap).

Cu Unknown (ssd-root)partiția (1) evidențiată în albastru, selectați opțiunea casetei Reformat(2) de lângă File System:acordeon. Selectați xfsîn File System:acordeon (3), introduceți /în câmpul de text (4) sub Mount Point:, introduceți rootîn câmpul de text (5) sub Label:și faceți clic pe Update Settingsbutonul (6).

Faceți clic pe Unknown (ssd-swap)partiția (1), astfel încât să fie evidențiată în albastru. Selectați opțiunea casetelor de selectare din Reformat(2) lângă File System:acordeon. Selectați swapîn File System:acordeon (3), introduceți swapcâmpul text (4) de mai jos Label:și faceți clic pe Update Settingsbutonul (5).

Faceți clic pe Donebutonul albastru (1) din partea stângă sus a ecranului.

SUMMARY OF CHANGESVa apărea o casetă numită . Faceți clic pe Accept Changesbutonul (1). Acest lucru vă va readuce pe WELCOME TO CENTOS 7ecran.

Faceți clic pe NETWORK & HOST NAME (Not connected)(1) sub SYSTEM.

Pe NETWORK & HOST NAMEecran, mutați glisorul (1), lângă dreapta Ethernet(eth0)câmpului, din OFFpoziție în ONpoziție. Dacă doriți să utilizați un nume de gazdă personalizat în loc de implicit (192.0.2.1.vultr.com) în Host name:caseta de text (2), schimbați-l. Faceți clic pe Donebutonul albastru (3) din stânga sus a ecranului. Acest lucru vă va readuce pe WELCOME TO CENTOS 7ecran.

Când sunteți mulțumit de opțiunile de pe WELCOME TO CENTOS 7ecran, faceți clic pe Begin Installationbutonul albastru (1).

Pe CONFIGURATIONecran, faceți clic pe ROOT PASSWORD (Root password is not set)(1) sub USER SETTINGS.

Pe ROOT PASSWORDecran, introduceți o parolă puternică atât în câmpurile de text Root Password:(1) cât și Confirm:(2). Faceți clic pe Donebutonul albastru (3) din stânga sus a ecranului. Acest lucru vă va readuce pe CONFIGURATIONecran.

Pe CONFIGURATIONecran, faceți clic pe USER CREATION (No user will be created)(1) sub USER SETTINGS.

Pe CREATE USERecran, introduceți numele complet în Full namecâmpul de text (1), un nume de utilizator în User namecâmpul de text (2), o parolă puternică atât în câmpurile de text Password(3) cât și Confirm password(4). Faceți clic pe Advanced...butonul (5).

ADVANCED USER CONFIGURATIONVa apărea o casetă numită . În Add user to the following groups:câmpul text (1) de mai jos Group Membership, introduceți wheelși faceți clic pe Save Changesbutonul (2).

Faceți clic pe Donebutonul albastru (1) din partea stângă sus a ecranului.

Procesul post-instalare va începe acum. Durează câteva minute până la final. Când ați terminat, faceți clic pe Rebootbutonul albastru (1) pentru a reporni instanța VPS.

Navigați înapoi la ecranul de gestionare a serverului VULTR . Faceți clic pe Settingslinkul din partea de sus. Faceți clic pe Custom ISOmeniul din partea stângă. În Custom ISOpagină, faceți clic pe Remove ISObutonul pentru a demonta ISO-ul și a reporni în instanța dvs. CentOS 7 VPS. Faceți clic pe OKbuton atunci când vi se solicită, iar instanța VPS se va reporni.
Navigați înapoi la View Consolefereastră pentru a accesa instanța VPS prin consola noVNC. Actualizați fereastra dacă nu a fost deconectat.
Vi se va solicita să introduceți fraza de acces (Exemplu Please enter passphrase for disk primary (luks-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)!::) pe care ați creat-o pentru partiția LUKS Step 3: Setup LVM On LUKS Full Disk Encryption. Introduceți parola și apăsați Entertasta.

Vei fi apoi prezentat cu promptul de conectare la consolă. Acum puteți închide fereastra consolei noVNC.
Pasul 5: Actualizați sistemul
Conectați-vă prin SSH cu un utilizator obișnuit și actualizați sistemul după cum urmează.
sudo yum install epel-release -y
sudo yum clean all && sudo yum update -y
Pasul 6: Instalați Dracut-Crypt-SSH
În timp ce sunteți încă conectat ca utilizator obișnuit, introduceți următoarele comenzi de mai jos pentru instalare dracut-crypt-ssh.
sudo yum install wget -y
sudo wget -O /etc/yum.repos.d/rbu-dracut-crypt-ssh-epel-7.repo https://copr.fedorainfracloud.org/coprs/rbu/dracut-crypt-ssh/repo/epel-7/rbu-dracut-crypt-ssh-epel-7.repo
sudo yum install dracut-crypt-ssh -y
Tastați următoarea comandă de mai jos pentru a instala nanoeditorul pentru a ușura editarea fișierelor.
sudo yum install nano -y
Va trebui să editați fișierul grub implicit situat în /etc/default/grub.
sudo nano /etc/default/grub
Introduceți rd.neednet=1 ip=dhcpîntre GRUB_CMDLINE_LINUX="crashkernel=autoși rd.luks.uuid=luks-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
Salvați fișierul introducând următoarele combinații de tastatură. Apăsați tastele Ctrl+ x, apăsați ytasta și apăsați Entertasta.
Regenerați-vă fișierul de configurare GRUB, tastați comanda de mai jos.
sudo grub2-mkconfig -o /etc/grub2.cfg
Faceți o copie de siguranță a originalului /etc/dracut.conf.d/crypt-ssh.conftastând următoarea comandă de mai jos.
sudo mv /etc/dracut.conf.d/crypt-ssh.conf /etc/dracut.conf.d/crypt-ssh.conf.orig
Creați un nou /etc/dracut.conf.d/crypt-ssh.conffișier tastând următoarea comandă de mai jos.
sudo nano /etc/dracut.conf.d/crypt-ssh.conf
Copiați și lipiți textul de mai jos în nanoeditor.
dropbear_acl="/etc/dropbear/keys/authorized_keys"
dropbear_ecdsa_key="/etc/dropbear/keys/ssh_ecdsa_key"
dropbear_rsa_key="/etc/dropbear/keys/ssh_rsa_key"
Creați directorul keysUnder /etc/dropbear/, cu permisiunile necesare de director, care va deține authorized_keys, ssh_ecdsa_keyși ssh_rsa_keyfișiere.
sudo mkdir /etc/dropbear/keys/; sudo chmod /etc/dropbear/keys/
Generați fișierele ssh_ecdsa_keyși ssh_rsa_keyfișierele cu ssh_keygenprogramul tastând următoarele comenzi de mai jos. Apăsați Entertasta de două ori, pentru fiecare comandă, când vi se solicită parole.
sudo ssh-keygen -t ecdsa -f /etc/dropbear/keys/ssh_ecdsa_key
sudo ssh-keygen -t rsa -f /etc/dropbear/keys/ssh_rsa_key
Schimbați permisiunile de fișiere pe ssh_ecdsa_key, ssh_ecdsa_key.pub, ssh_rsa_keyși ssh_rsa_key.pubtastând comanda de mai jos.
sudo chmod 400 /etc/dropbear/keys/*_key; sudo chmod 444 /etc/dropbear/keys/*.pub
Generați chei publice folosind How Do I Generate SSH Keys?tutorialul, găsit la începutul tutorialului Prerequisites, pentru sistemul dvs. de operare potențial client.
Copiați și lipiți tot textul din cheia publică în /etc/dropbear/keys/authorized_keysfișier utilizând nanoprogramul tastând comanda de mai jos.
sudo nano /etc/dropbear/keys/authorized_keys
Mai întâi trebuie să construiți initramfs și orice actualizare ulterioară a configurației dracut-crypt-ssh. Tastați următoarea comandă de mai jos pentru construirea inițială a initramfs.
sudo dracut -f
După ce s-a terminat, instalarea CentOS 7 este configurată pentru a asculta conectarea clientului dvs. SSH și vă va permite să deblocați partiția LUKS folosind fraza de acces. Acum puteți să reporniți instanța CentOS 7 introducând comanda de mai jos.
sudo reboot
În sistemele client, consultați secțiunile 3.3. Unlocking the volumes interactivelyși 3.4. Unlocking using thedeblocați commandpagina Dracut-Crypt-SSH GitHub pentru a forța o solicitare de parolă sau utilizați unlockcomanda pentru a deschide partiția LUKS de la clientul dvs. SSH.