18 octombrie 2015

Despre eCryptfs și SSH

La instalarea sistemului de operare Ubuntu sau a unuia dintre sistemele de operare bazate pe acesta, cum ar fi deliciosul Linux Mint, utilizatorului i se oferă posibilitate de a-şi cifra dosarul de domiciliu. Această opţiune induce configurarea sistemului de fișiere criptografic eCryptfs, astfel încât :
  • Fişierele utilizatorului sunt stocate în formă cifrată în /home/.ecryptfs/$USER/.Private ;
  • La deschiderea unei sesiuni, dosarul cifrat /home/.ecryptfs/$USER/.Private este montat în formă descifrată în /home/$USER, iar la terminarea sesiunii acesta este demontat.
Montarea automată a dosarului cifrat în formă descifrată cade în sarcina polivalentului PAM, sistemul de Module de Autentificare Conectabile din Linux, sau Pluggable Authentication Modules cum i se zice pe Englezeşte.

Lucrurile funcţionează bine atâta timp cât utilizatorul deschide o sesiune folosind un mecanism de autentificare cunoscut de PAM. Ce se întâmplă însă când utilizatorul se conectează la sistem prin SSH ? Recomandarea de bună practică este ca demonul SSH să fie configurat astfel încât să nu permită autentificarea cu parolă, adică „PasswordAuthentication no“, obligându-i pe cei care vor să se conecteze la sistem să prezinte o cheie publică acceptabilă. Jos hecării !

Aici apare prima dificultate. În mod implicit, demonul SSH este configurat astfel încât să se uite după cheia privată a utilizatorului în $HOME/.ssh/authorized_keys … care tocmai că nu există dacă dosarul personal nu a fost montat în clar. Aşa că pentru a permite autentificarea cu chei publice, demonul SSH trebuie să fie configurat să se uite-ntr-altă parte după cheile private ; de exemplu, se poate scrie în /etc/ssh/sshd_config „AuthorizedKeysFile /home/.ssh/%u/authorized_keys“, ceea ce-l determină pe respectivul demon să se uite după fişierul authorized_keys în /home/.ssh/$USER. Asta rezolvă problema autentificării cu chei publice prin SSH.

Dar ce ne facem atunci cu dosarul personal cifrat, pentru că cheia de cifrare este ea însăşi cifrată, sau învelită cu sună terminologia oficială, cu parola utilizatorului. Neama autentificare cu parolă, neama PAM, neama dosar personal montat în clar. Utilizatorul care care se conectează la sistem prin SSH folosind chei publice constată cu tristeţe că dosarul său personal este de nerecunoscut. În locul documentelor şi dosarelor sale el găseşte trei dosare ascunse, numite .cache, .ecryptfs şi .Private, un fişier text numit README.txt, şi o scurtătură de birou pe nume Access-Your-Private-Data.desktop. Şi atât. Citind pe bine-numitul fişier README.txt, utilizatorul află că

THIS DIRECTORY HAS BEEN UNMOUNTED TO PROTECT YOUR DATA.
From the graphical desktop, click on:
"Access Your Private Data"
or
From the command line, run:
ecryptfs-mount-private

De aici vine şi inspiraţia. Pentru a monta în clar dosarul personal cifrat trebuie creat un fişier de iniţializare .profile în $HOME câtă vreme dosarul personal cifrat nu a fost montat.

[ -r "$HOME/.bashrc" ] && return

echo "The home directory $HOME is encrypted using eCryptFS."
echo "You need to supply your login password to decrypt it."
echo

/usr/bin/ecryptfs-mount-private || return

cd "$HOME"

[ "${0:0:1}" = "-" ] && [ -r ./.profile ] && . ./.profile
[ -n "$PS1" ] && [ -r ./.bashrc ] && . ./.bashrc

Linia „[ -r "$HOME/.bashrc" ] && return“ opreşte interpretarea acestui .profile dacă dosarul personal cifrat a fost montat în clar ; puteţi folosi alt fişier ca santinelă, sau alt mecanism cu totul, sau puteţi renunţa la această verificare cu gândul că dacă dosarul personal cifrat a fost montat în clar atunci acest .profile este inaccesibil şi deci n-are cum să fie interpetat.

Dar cum să ajungă utilizatorul la directorul $HOME fără să aibă montat acolo dosarul personal cifrat ? Foarte simplu : îl demontează. Procedaţi astfel :
  1. Ieşiţi din sesiunea grafică. Este important să ieşiţi din sesiunea grafică pentru a nu disturba miriadele de programe şi progămele care o alcătuiesc şi care ţin fişiere deschise prin vreun subdosar ascuns din dosarul personal.
  2. Deschideţi o sesiune în mod text folosind cu încredere combinaţia ‹Ctrl›‹Alt›‹F1› pentru a deschide o consolă.
  3. În sesiunea în mod text schimbaţi directórul curent undeva în afara directórului de domiciliu şi demontaţi dosarul personal cifrat cu descântecul „sudo umount /home/$USER“. Un cd $HOME mai departe vă veţi afla în directórul de domiciliu fără ca dosarul personal cifrat să fie montat acolo.
Cu nădejdea acest articol eminamente practic vi s-a părut interesant, vă doresc Ubuntire plăcută.

Niciun comentariu:

Trimiteți un comentariu