Vrystelling van systemd system manager 252 met UKI (Unified Kernel Image) ondersteuning

Na vyf maande se ontwikkeling is die vrystelling van die stelselbestuurder systemd 252 aangebied. Die sleutelverandering in die nuwe weergawe was die integrasie van ondersteuning vir 'n gemoderniseerde selflaaiproses, wat jou toelaat om nie net die kern en selflaaiprogram te verifieer nie, maar ook komponente van die basiese stelselomgewing deur digitale handtekeninge te gebruik.

Die voorgestelde metode behels die gebruik van 'n verenigde kernbeeld UKI (Unified Kernel Image) tydens laai, wat 'n hanteerder kombineer vir die laai van die kern vanaf UEFI (UEFI boot stub), 'n Linux kern beeld en die initrd stelsel omgewing wat in die geheue gelaai is, gebruik vir aanvanklike inisialisering op die stadium voordat die wortel FS gemonteer word. Die UKI-beeld word verpak as 'n enkele uitvoerbare lêer in PE-formaat, wat met tradisionele selflaailaaiers gelaai kan word of direk vanaf die UEFI-firmware geroep kan word. Wanneer dit vanaf UEFI geroep word, is dit moontlik om die integriteit en betroubaarheid van die digitale handtekening van nie net die kern nie, maar ook die inhoud van die initrd te verifieer.

Om die parameters van die TPM PCR (Trusted Platform Module Platform Configuration Register) registers te bereken wat gebruik word om die integriteit te monitor en 'n digitale handtekening van die UKI-beeld te genereer, is 'n nuwe nuts-stelseld-maatstaf ingesluit. Die publieke sleutel en gepaardgaande PCR-inligting wat in die handtekening gebruik word, kan direk in die UKI-selflaaibeeld ingebed word (die sleutel en handtekening word in 'n PE-lêer in die '.pcrsig' en '.pcrkey'-velde gestoor) en daaruit onttrek deur eksterne of interne nutsdienste.

Veral die systemd-cryptsetup, systemd-cryptenroll en systemd-creds nutsprogramme is aangepas om hierdie inligting te gebruik, waarmee jy kan verseker dat geënkripteerde skyfpartisies aan 'n digitaal ondertekende kern gebind is (in hierdie geval toegang tot die geënkripteerde partisie word slegs verskaf as die UKI-beeld verifikasie deur digitale handtekening geslaag het op grond van parameters wat in TPM geleë is).

Daarbenewens is die systemd-pcrphase-hulpmiddel ingesluit, wat jou toelaat om die binding van verskeie opstartfases aan parameters wat in die geheue van kriptoverwerkers geleë is wat die TPM 2.0-spesifikasie ondersteun, te beheer (jy kan byvoorbeeld die LUKS2-partisie-dekripsiesleutel slegs beskikbaar stel in die initrd-prent en blokkeer toegang daartoe by latere stadiums aflaaie).

Enkele ander veranderinge:

  • Verseker dat die versteklokaal C.UTF-8 is, tensy 'n ander plek in die instellings gespesifiseer word.
  • Dit is nou moontlik om 'n volledige diensvoorafinstelling (“systemctl preset”) tydens die eerste selflaai uit te voer. Om voorafinstellings tydens selflaaityd te aktiveer, vereis bou met die "-Dfirst-boot-full-preset" opsie, maar dit word beplan om by verstek in toekomstige vrystellings geaktiveer te word.
  • Die gebruikerbestuurseenhede behels 'n SVE-hulpbronbeheerder, wat dit moontlik gemaak het om te verseker dat die CPUWeight-instellings toegepas word op alle sny-eenhede wat gebruik word om die stelsel in dele (app.slice, background.slice, session.slice) te isoleer om hulpbronne te isoleer tussen verskillende gebruikersdienste, wat meeding om SVE-hulpbronne. CPUWeight ondersteun ook die "ledige" waarde om die toepaslike hulpbronvoorsieningmodus te aktiveer.
  • In tydelike (“verbygaande”) eenhede en in die systemd-repart-hulpprogram, word oorheersing van instellings toegelaat deur inlooplêers in die /etc/systemd/system/name.d/-gids te skep.
  • Vir stelselbeelde word die ondersteunende vlag gestel, wat hierdie feit bepaal op grond van die waarde van die nuwe parameter “SUPPORT_END=” in die /etc/os-release-lêer.
  • Bygevoeg “ConditionCredential=” en “AssertCredential=” instellings, wat gebruik kan word om eenhede te ignoreer of te verongeluk as sekere geloofsbriewe nie in die stelsel teenwoordig is nie.
  • Bygevoeg "DefaultSmackProcessLabel=" en "DefaultDeviceTimeoutSec=" instellings by system.conf en user.conf om die verstek SMACK sekuriteit vlak en eenheid aktivering uitteltyd te definieer.
  • In die “ConditionFirmware=”- en “AssertFirmware=”-instellings is die vermoë om individuele SMBIOS-velde te spesifiseer bygevoeg, byvoorbeeld om slegs 'n eenheid te begin as die /sys/class/dmi/id/board_name-veld die waarde "Custom" bevat Board", kan jy "ConditionFirmware=smbios" -field(board_name = "Custom Board") spesifiseer.
  • Tydens die inisialiseringsproses (PID 1) is die vermoë om geloofsbriewe vanaf SMBIOS-velde (Tipe 11, "OEM-verkoperstringe") in te voer bykomend tot hul definisie bygevoeg via qemu_fwcfg, wat die verskaffing van geloofsbriewe aan virtuele masjiene vereenvoudig en die behoefte aan derdeparty-gereedskap soos cloud-init en ignition.
  • Tydens afskakeling is die logika vir die ontkoppel van virtuele lêerstelsels (proc, sys) verander en inligting oor prosesse wat die ontkoppeling van lêerstelsels blokkeer, word in die log gestoor.
  • Die stelseloproepfilter (SystemCallFilter) laat by verstek toegang tot die riscv_flush_icache-stelseloproep toe.
  • Die sd-boot selflaaiprogram voeg die vermoë by om in gemengde modus te begin, waarin die 64-bis Linux-kern vanaf 32-bis UEFI-firmware loop. Bygevoeg eksperimentele vermoë om outomaties toe te pas SecureBoot sleutels van lêers gevind in ESP (EFI stelsel partisie).
  • Nuwe opsies is by die bootctl-hulpmiddel gevoeg: “—all-architectures” vir die installering van binaries vir alle ondersteunde EFI-argitekture, “—root=” en “—image=” om met 'n gids of skyfbeeld te werk, “—install-source =” vir die definisie van bron vir installasie, "-efi-boot-option-description=" om opstartinskrywingsname te beheer.
  • Die 'list-automounts'-opdrag is by die systemctl-nutsding gevoeg om 'n lys van outomaties gemonteerde gidse te vertoon en die "--image=" opsie om opdragte uit te voer met betrekking tot die gespesifiseerde skyfbeeld. Het "--state=" en "--type=" opsies by die 'wys' en 'status' opdragte gevoeg.
  • systemd-networkd het opsies “TCPCongestionControlAlgorithm=” bygevoeg om die TCP-opeenhopingbeheeralgoritme te kies, “KeepFileDescriptor=” om die lêerbeskrywing van TUN/TAP-koppelvlakke te stoor, “NetLabel=” om NetLabels te stel, “RapidCommit=” om konfigurasie via DHCPv6 te bespoedig (RFC 3315). Die “RouteTable=” parameter laat toe om die name van roetetabelle te spesifiseer.
  • systemd-nspawn laat die gebruik van relatiewe lêerpaaie in die "--bind=" en "--overlay=" opsies toe. Ondersteuning vir die 'rootidmap'-parameter by die "--bind="-opsie gevoeg om die wortelgebruiker-ID in die houer aan die eienaar van die gemonteerde gids aan die gasheerkant te bind.
  • systemd-resolved gebruik OpenSSL as sy enkripsie-agtergrond by verstek (gnutls-ondersteuning word as 'n opsie behou). Nie-ondersteunde DNSSEC-algoritmes word nou as onveilig behandel in plaas daarvan om 'n fout terug te gee (SERVFAIL).
  • systemd-sysusers, systemd-tmpfiles en systemd-sysctl implementeer die vermoë om instellings oor te dra deur 'n geloofsstoormeganisme.
  • Bygevoeg 'compare-versions'-opdrag om systemd-analyze om stringe met weergawenommers te vergelyk (soortgelyk aan 'rpmdev-vercmp' en 'dpkg --compare-versions'). Het die vermoë om eenhede volgens masker te filter by die 'systemd-analyze dump'-opdrag bygevoeg.
  • Wanneer 'n multi-stadium slaapmodus (suspend-dan-hiberneer) gekies word, word die tyd wat in bystandmodus spandeer word nou gekies op grond van die voorspelling van oorblywende batterylewe. Onmiddellike oorgang na slaapmodus vind plaas wanneer minder as 5% batterylading oorbly.
  • 'n Nuwe uitsetmodus "-o short-delta" is by 'journalctl' gevoeg, wat die tydsverskil tussen verskillende boodskappe in die log vertoon.
  • systemd-repart voeg ondersteuning by vir die skep van partisies met die Squashfs-lêerstelsel en partisies vir dm-verity, insluitend met digitale handtekeninge.
  • Bygevoeg "StopIdleSessionSec="-instelling by systemd-login om 'n onaktiewe sessie te beëindig na 'n gespesifiseerde tydsverloop.
  • Systemd-cryptenroll het 'n "--unlock-key-file=" opsie bygevoeg om die dekripsiesleutel uit 'n lêer te onttrek eerder as om die gebruiker te vra.
  • Dit is nou moontlik om die systemd-growfs-hulpprogram in omgewings sonder udev uit te voer.
  • systemd-backlight het verbeterde ondersteuning vir stelsels met veelvuldige grafiese kaarte.
  • Die lisensie vir die kodevoorbeelde wat in die dokumentasie verskaf word, is verander van CC0 na MIT-0.

Veranderinge wat versoenbaarheid verbreek:

  • Wanneer die kernweergawenommer nagegaan word deur die ConditionKernelVersion-aanwysing te gebruik, word 'n eenvoudige stringvergelyking nou gebruik in die '='- en '!='-operateurs, en as die vergelykingsoperateur glad nie gespesifiseer is nie, kan glob-mask-passing gebruik word met behulp van die karakters '*', '?' En '[', ']'. Om stverscmp() styl weergawes te vergelyk, gebruik die '<', '>', '<=' en '>=' operateurs.
  • Die SELinux-etiket wat gebruik word om toegang van 'n eenheidlêer na te gaan, word nou gelees wanneer die lêer gelaai word, eerder as tydens die toegangskontrole.
  • Die "ConditionFirstBoot"-toestand word nou by die eerste selflaai van die stelsel geaktiveer net direk by die selflaaistadium en gee "onwaar" terug wanneer eenhede geroep word nadat die selflaai voltooi is.
  • In 2024 beplan systemd om op te hou om die cgroup v1-hulpbronbeperkingsmeganisme te ondersteun, wat in systemd-vrystelling 248 opgeskort is. Administrateurs word aangeraai om vooraf te sorg dat cgroup v2-gebaseerde dienste na cgroup v1 migreer. Die sleutelverskil tussen cgroups v2 en v1 is die gebruik van 'n algemene cgroups-hiërargie vir alle soorte hulpbronne, in plaas van aparte hiërargieë vir die toekenning van SVE-hulpbronne, vir die regulering van geheueverbruik en vir I/O. Afsonderlike hiërargieë lei tot probleme met die organisering van interaksie tussen hanteerders en tot bykomende kernhulpbronkoste wanneer reëls toegepas word vir 'n proses waarna in verskillende hiërargieë verwys word.
  • In die tweede helfte van 2023 beplan ons om ondersteuning vir gesplete gidshiërargieë te beëindig, waar /usr afsonderlik van die wortel gemonteer word, of /bin en /usr/bin, /lib en /usr/lib geskei word.

Bron: opennet.ru

Voeg 'n opmerking