Introdus systemd-homed pentru a gestiona directoare portabile de acasă

Lennart Poettering a prezentat (PDF) la conferința All Systems Go 2019, o nouă componentă a managerului de sistem systemd - systemd-homed, menit să facă directoarele de acasă ale utilizatorilor portabile și separate de setările de sistem. Ideea principală a proiectului este de a crea medii autonome pentru datele utilizatorilor care pot fi transferate între diferite sisteme fără a vă face griji cu privire la sincronizarea identificatorului și confidențialitatea.

Mediul directorului principal vine sub forma unui fișier imagine montat, datele în care sunt criptate. Acreditările utilizatorului sunt legate mai degrabă de directorul principal decât de setările de sistem - în loc de /etc/passwd și /etc/shadow profil în format JSON, stocat în directorul ~/.identity. Profilul conține parametrii necesari pentru munca utilizatorului, inclusiv informații despre nume, hash parole, chei de criptare, cote și resurse alocate. Profilul poate fi certificat cu o semnătură digitală stocată pe un token extern Yubikey.

Parametrii pot include, de asemenea, informații suplimentare, cum ar fi chei SSH, date de autentificare biometrică, imagine, e-mail, adresă, fus orar, limbă, limite de proces și de memorie, semnalizatoare de montare suplimentare (nodev, noexec, nosuid), informații despre serverele IMAP/SMTP utilizate de utilizator. , informații despre activarea controalelor parentale, opțiunile de rezervă etc. Este furnizat un API pentru a solicita și a analiza parametrii Varlink.

Atribuirea și procesarea UID/GID se face în mod dinamic pe fiecare sistem local la care este conectat directorul principal. Folosind sistemul propus, utilizatorul își poate păstra directorul de acasă cu el, de exemplu pe o unitate Flash, și poate obține un mediu de lucru pe orice computer fără a crea în mod explicit un cont pe acesta (prezența unui fișier cu imaginea directorului de acasă conduce la sinteza utilizatorului).

Se propune utilizarea subsistemului LUKS2 pentru criptarea datelor, dar systemd-homed permite și utilizarea altor backend-uri, de exemplu, pentru directoare necriptate, partiții de rețea Btrfs, Fscrypt și CIFS. Pentru a gestiona directoare portabile, este propus utilitarul homectl, care vă permite să creați și să activați imagini ale directoarelor de acasă, precum și să modificați dimensiunea acestora și să setați o parolă.

La nivel de sistem, lucrul este asigurat de următoarele componente:

  • systemd-homed.service - gestionează directorul de acasă și încorporează înregistrările JSON direct în imaginile directorului de acasă;
  • pam_systemd - procesează parametrii din profilul JSON atunci când utilizatorul se autentifică și îi aplică în contextul sesiunii activate (realizează autentificare, configurează variabilele de mediu etc.);
  • systemd-logind.service - procesează parametrii din profilul JSON atunci când utilizatorul se conectează, aplică diverse setări de gestionare a resurselor și stabilește limite;
  • nss-systemd - modul NSS pentru glibc, sintetizează înregistrări NSS clasice pe baza unui profil JSON, oferind compatibilitate cu API-ul de procesare a utilizatorului UNIX (/etc/password);
  • PID 1 - creează în mod dinamic utilizatori (sintetizați prin analogie cu utilizarea directivei DynamicUser în unități) și îi face vizibili pentru restul sistemului;
  • systemd-userdbd.service - traduce conturile UNIX/glibc NSS în înregistrări JSON și oferă un API Varlink unificat pentru interogare și iterare peste înregistrări.

Avantajele sistemului propus includ capacitatea de a gestiona utilizatorii la montarea directorului /etc în modul doar citire, absența necesității de sincronizare a identificatorilor (UID/GID) între sisteme, independența utilizatorului față de un anumit computer, blocarea datelor utilizatorului în timpul modului de repaus, utilizarea criptării și a metodelor moderne de autentificare. Systemd-homed este planificat să fie inclus în systemd mainstream în versiunea 244 sau 245.

Exemplu de profil de utilizator JSON:

„AutoLogin”: adevărat,
"legare" : {
«15e19cd24e004b949ddaac60c74aa165» : {
„fileSystemType”: „ext4”
«fileSystemUUID» : «758e88c8-5851-4a2a-b98f-e7474279c111»,
„gid”: 60232,
"homeDirectory": "/home/test",
"imagePath": "/home/test.home",
"luksCipher": "aes",
"luksCipherMode": "xts-plain64",
«luksUUID» : «e63581ba-79fa-4226-b9de-1888393f7573»,
„luksVolumeKeySize” : 32,
«partitionUUID» : «41f9ce04-c927-4b74-a981-c669f93eb4dc»,
"storage": "luks",
„uid”: 60233
}
},
"disposition" : "regulat",
„enforcePasswordPolicy”: fals,
„lastChangeUSec”: 1565951024279735,
"membru al" : [
"roata"
],
„privilegiat” : {
„hashedPassword” : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
] },
"semnătură" : [
{
"date" : "LU/HeVrPZSzi3M3J...==",
"key" : "——ÎNCEPE CHEIA PUBLICĂ——\nMCowBQADK2VwAy…=\n——Sfârșiți cheia publică——\n"
}
],
"userName": "test",
"stare" : {
«15e19cf24e004b949dfaac60c74aa165» : {
„goodAuthenticationCounter”: 16,
„lastGoodAuthenticationUSec”: 1566309343044322,
„rateLimitBeginUSec” : 1566309342341723,
„rateLimitCount”: 1,
"state" : "inactiv",
"service" : "io.systemd.Home",
„DiskSize”: 161218667776,
„DiskCeiling”: 191371729408,
„diskFloor”: 5242780,
„signedLocally”: adevărat
}
}

Sursa: opennet.ru

Adauga un comentariu