Esitleti systemd-homed kaasaskantavate kodukataloogide haldamiseks

Lennart Poettering esitles (PDF) konverentsil All Systems Go 2019 esitati uus süsteemihalduri komponent systemd — systemd-homed, mille eesmärk on tagada kasutajate kodukataloogide kaasaskantavus ja nende eristamine süsteemi seadistustest. Projekti põhikontseptsioon on luua iseseisvaid keskkondi kasutajaandmete jaoks, mida saab kanda erinevate süsteemide vahel, muretsemata identifikaatorite sünkroniseerimise ja privaatsuse pärast.

Kodukatalooge esindatakse munitavates pildifailides, mille andmed on krüpteeritud. Kasutaja sisselogimise andmed on seotud kodukataloogiga, mitte süsteemi seadistustega — selle asemel, et kasutada /etc/passwd ja /etc/shadow, kasutatakse profiili JSON formaadis, mis salvestatakse kausta ~/ .identity. Profiilis on toodud kasutamiseks vajalikud parameetrid, sealhulgas nimi, parooli hash, krüpteerimise võtmed, kvoodid ja saadaval olevad ressursid. Profiil võib olla digitaalalgselt allkirjastatud, mida hoitakse välistel Yubikey tokenitel.

Parameetrid võivad sisaldada ka täiendavat teavet, näiteks SSH võtmed, biometrilise autentimise andmed, pilt, e-post, aadress, ajavöönd, keel, protsesside ja mälu arvulised piirangud, täiendavad mount'i lipud (nodev, noexec, nosuid), teave kasutatavate IMAP/SMTP serverite kohta, teavet lapsekaitse aktiveerimise kohta, varundamise parameetrid jne. Parameetrite pärimiseks ja töötlemiseks on olemas API Varlink.

UID/GID määramine ja töötlemine toimub dünaamiliselt igas kohalikus süsteemis, kuhu kodukataloog on ühendatud. Pakutud süsteemi abil saab kasutaja hoida oma kodukatalooge enda juures, näiteks Flash-mälupulgana, ja saada töötamiseks vajalikku keskkonda igas arvutis ilma registreerimist vajamata (kodukatalooge sisaldava faili olemasolu toob kaasa kasutaja sünteesi).

Andmete krüptimiseks on soovitatav kasutada LUKS2 alasüsteemi, kuid systemd-homed võimaldab kasutada ka teisi tagapõhju, näiteks dekrüptimata katalooge, Btrfs, Fscrypt ja võrgu sektsioone CIFS. Kandevõimekuse kataloogide haldamiseks on ette nähtud utiliit homectl, mis võimaldab luua ja aktiveerida kodukatalooge ning muuta nende suurust ja määrata parooli.

Süsteemi tasandil tagavad töö järgmised komponendid:

  • systemd-homed.service – haldab kodukatalooge ja integreerib JSON-kirjed otse kodukatalooge,
  • pam_systemd – töötleb JSON-profiili parameetreid kasutaja sisenemise ajal ja rakendab neid aktiveeritud seansi kontekstis (teeb autentimist, seadistab keskkonna muutujaid jne);
  • systemd-logind.service – töödeldakse JSON-profiili parameetreid kasutaja sisenemise ajal, rakendab erinevaid ressursihaldus seadistusi ja määrab piirangud;
  • nss-systemd – NSS moodul glibc jaoks, sünteesib klassikalised NSS kirjed JSON-profiili põhjal, pakkudes ühilduvust UNIX API-ga kasutajate töötlemiseks (/etc/password);
  • PID 1 – loob dünaamiliselt kasutajaid (sünteesi kaudu direktiivi DynamicUser kasutamise näitel unit-ites) ja muudab need ülejäänud süsteemi nähtavaks;
  • systemd-userdbd.service – tõlgib UNIX/glibc NSS kontod JSON-kirjeks ja pakub ühtset Varlink API-d kirje pärimise ja loendi saamiseks.

Pakutud süsteemi eeliste seas on kasutajate haldamine ka katalooge /etc ainult lugemisrežiimis, identifikaatorite (UID/GID) sünkroniseerimise vajaduse puudumine süsteemide vahel, kasutaja sõltumatust konkreetsest arvutist, kasutajaandmete blokeerimist unerežiimi ülemineku ajal, krüptimise ja kaasaegsete autentimismeetodite rakendamine. Systemd-homed plaanitakse lisada systemd põhikoosseisu versioonis 244 või 245.

Kasutaja JSON-profiili näide:

«autoLogin» : true,
«binding» : {
«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» : «regular»,
«enforcePasswordPolicy» : false,
«lastChangeUSec» : 1565951024279735,
«memberOf» : [
«wheel»
],
«privileged» : {
«hashedPassword» : [
«$6$WHBKvAFFT9jKPA4k$OPY4D5…/»
]
},
«signature» : [
{
«data» : «LU/HeVrPZSzi3M3J…==»,
«key» : «——BEGIN PUBLIC KEY——\nMCowBQADK2VwAy…=\n——END PUBLIC KEY——\n»
}
],
«userName» : «test»,
«status» : {
«15e19cf24e004b949dfaac60c74aa165» : {
«goodAuthenticationCounter» : 16,
«lastGoodAuthenticationUSec» : 1566309343044322,
«rateLimitBeginUSec» : 1566309342341723,
«rateLimitCount» : 1,
«state» : «inactive»,
«service» : «io.systemd.Home»,
«diskSize» : 161218667776,
«diskCeiling» : 191371729408,
«diskFloor» : 5242780,
«signedLocally» : true
}
}

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster