Vydanie systémového správcu systemd 252 s podporou UKI (Unified Kernel Image)

Po piatich mesiacoch vývoja bol predstavený release systémového manažéra systemd 252. Kľúčovou zmenou v novej verzii je integrácia podpory modernizovaného procesu zavádzania, ktorý umožňuje overiť digitálnymi podpismi nielen jadro a zavádzač, ale aj komponenty základného systémového prostredia.

Navrhnutá metóda zahŕňa použitie unifikovaného obrazu jadra UKI (Unified Kernel Image) pri zavádzaní, ktorý kombinuje spracovateľ na zavádzanie jadra z UEFI (UEFI boot stub), obraz jadra Linux a do pamäte načítané systémové prostredie initrd, ktoré sa používa na počiatočnú inicializáciu v štádiu pred pripojením koreňového FS. UKI-obraz je vytvorený ako jeden spustiteľný súbor vo formáte PE, ktorý môže byť načítaný pomocou tradičných zavádzačov alebo priamo vyvolaný z UEFI firmvéru. Pri vyvolaní z UEFI sa poskytuje možnosť overenia integrity a dôveryhodnosti pomocou digitálneho podpisu nielen jadra, ale aj obsahu initrd.

Na výpočet parametrov registrov TPM PCR (Trusted Platform Module Platform Configuration Register), ktoré sa používajú na kontrolu integrity a tvorbu digitálneho podpisu obrazu UKI, bola pridaná nová utilita systemd-measure. Používaný otvorený kľúč vo podpise a sprievodné informácie o PCR môžu byť zabudované priamo do zavádzacieho obrazu UKI (kľúč a podpis sú uložené v súbore vo formáte PE v poliach '.pcrsig' a '.pcrkey') a extrahované externými alebo internými utilitami.

Okrem toho sú pre použitie týchto informácií prispôsobené utility systemd-cryptsetup, systemd-cryptenroll a systemd-creds, pomocou ktorých je možné zabezpečiť previazaní zašifrovaných diskových oddielov s overeným digitálnym podpisom jadra (v tomto prípade je prístup k zašifrovanému oddielu povolený iba v prípade, že obraz UKI prešiel overením prostredníctvom digitálneho podpisu na základe parametrov uložených v TPM).

Pridane bola aj utilita systemd-pcrphase, ktorá umožňuje spravovať previazaní rôznych štádií zavádzania s parametrami, ktoré sú uložené v pamäti kryptoprocesorov, podporujúcich špecifikáciu TPM 2.0 (napríklad je možné sprístupniť kľúč na dešifrovanie oddielu LUKS2 iba v obraze initrd a zablokovať prístup k nemu v neskorších fázach zavádzania).

Niektoré ďalšie zmeny:

  • Predvolená lokalizácia C.UTF-8 je zabezpečená, pokiaľ nie je v nastaveniach určená iná lokalizácia.
  • Bola implementovaná možnosť vykonania operácie plného prednastavenia služieb („systemctl preset“) počas prvého spustenia. Na umožnenie prednastavenia počas spustenia je potrebné zostavenie s možnosťou „-Dfirst-boot-full-preset“, avšak v budúcich verziách sa plánuje jeho aktivácia predvolene.
  • V unit-och správy užívateľov bol zavedený kontrolér zdrojov CPU, čo umožnilo uplatniť nastavenia CPUWeight na všetky slice- jednotky používané na rozdelenie systému na časti (app.slice, background.slice, session.slice) na izoláciu zdrojov medzi rôznymi užívateľskými službami, ktoré súťažia o CPU. V CPUWeight bola tiež implementovaná podpora hodnoty „idle“ na aktiváciu zodpovedajúceho režimu poskytovania zdrojov.
  • V transientných („transient“) unit-och a v utilite systemd-repart bolo povolené predefinovanie nastavení vytvorením drop-in súborov v adresári /etc/systemd/system/názov.d/.
  • Pre systémové obrazy bolo zabezpečené nastavenie príznaku ukončenia podpory (‘support-ended’), určením tohto faktu na základe hodnoty nového parametra „SUPPORT_END=” v súbore /etc/os-release.
  • Boli pridané nastavenia „ConditionCredential=“ a „AssertCredential=“, ktoré sa môžu použiť na ignorovanie alebo núdzové ukončenie unit-ov pri absencii určitých prihlasovacích údajov v systéme.
  • Do system.conf a user.conf boli pridané nastavenia „DefaultSmackProcessLabel=“ a „DefaultDeviceTimeoutSec=“ na určenie úrovne bezpečnosti SMACK a časového limitu aktivácie unit-u, ktoré sa aplikujú predvolene.
  • Do nastavení „ConditionFirmware=“ a „AssertFirmware=“ bola pridaná možnosť určiť jednotlivé polia SMBIOS, napríklad na spustenie unit-u iba v prípade, že pole /sys/class/dmi/id/board_name obsahuje hodnotu „Custom Board“, môže byť zadané „ConditionFirmware=smbios-field(board_name = „Custom Board“)“.
  • V procese inicializácie (PID 1) bola pridaná možnosť importovať prihlasovacie údaje z polí SMBIOS (Typ 11, „OEM vendor strings“) okrem ich definovania cez qemu_fwcfg, čo zjednodušuje poskytovanie prihlasovacích údajov virtuálnym strojom a umožňuje obísť potrebu externých nástrojov, ako sú cloud-init a ignition.
  • Počas vypínania bola zmenená logika odpojenia virtuálnych FS (proc, sys) a zabezpečené zapisovanie do logu informácií o procesoch, ktoré blokujú odpojenie súborových systémov.
  • Vo filtri systémových volaní (SystemCallFilter) je predvolene povolený prístup k systémovému volaniu riscv_flush_icache.
  • Do načítača sd-boot bola pridaná možnosť načítania v zmiešanom režime, v ktorom sa 64-bitové jadro Linuxu spúšťa z 32-bitového firmvéru UEFI. Pridaná bola experimentálna funkcia automatického uplatnenia kľúčov SecureBoot z súborov nájdených v ESP (EFI systémová partícia).
  • Do nástroja bootctl boli pridané nové možnosti ‘—all-architectures’ na inštaláciu binárnych súborov pre všetky podporované architektúry EFI, ‘—root=’ a ‘—image=’ na prácu s adresárom alebo diskovým obrazom, ‘—install-source=’ na určenie zdroja pre inštaláciu, ‘—efi-boot-option-description=’ na správu názvov bootovacích záznamov.
  • Do nástroja systemctl bola pridaná príkaz ‘list-automounts’ na zobrazenie zoznamu automaticky pripojených adresárov a možnosť ‘—image=’ na vykonávanie príkazov viazaných na zadaný diskový obraz. Do príkazov ‘show’ a ‘status’ boli pridané možnosti ‘—state=’ a ‘—type=’.
  • Do systemd-networkd boli pridané možnosti ‘TCPCongestionControlAlgorithm=’ na výber algoritmu riadenia preťaženia TCP, ‘KeepFileDescriptor=’ na uchovanie súborového deskriptoru rozhraní TUN/TAP, ‘NetLabel=’ na nastavenie označení NetLabel, ‘RapidCommit=’ na urýchlenie nastavenia prostredníctvom DHCPv6 (RFC 3315). V parametri ‘RouteTable=’ je povolené uvádzanie názvov routingových tabuliek.
  • V systemd-nspawn je povolené používanie relatívnych súborových ciest v možnostiach ‘—bind=’ a ‘—overlay=’. Do možnosti ‘—bind=’ bola pridaná podpora parametra ‘rootidmap’ na pripojenie identifikátora používateľa root v kontajneri k vlastníkovi pripojeného adresára na strane hostiteľského systému.
  • V systemd-resolved je ako backend na šifrovanie predvolene použitý balík OpenSSL (podpora gnutls zostáva ako voľba). Nepodporované algoritmy DNSSEC sú teraz spracovávané ako nebezpečné, namiesto vrátenia chyby (SERVFAIL).
  • V systemd-sysusers, systemd-tmpfiles a systemd-sysctl bola implementovaná možnosť odovzdania nastavení prostredníctvom mechanizmu ukladania poverení.
  • Do nástroja systemd-analyze bola pridaná príkaz ‘compare-versions’ na porovnávanie reťazcov s číslami verzií (podobne ako ‘rpmdev-vercmp’ a ‘dpkg —compare-versions’). Do príkazu ‘systemd-analyze dump’ bola pridaná možnosť filtrovať jednotky podľa masky.
  • Pri výbere viacstupňového režimu spánku (suspend-then-hibernate, prechod do spánkového režimu po režime čakania) sa teraz doba pobytu v režime čakania určuje na základe predpokladu zostávajúceho času prevádzky na batériu. Okamžitý prechod do spánkového režimu sa vykonáva, keď zostáva menej ako 5 % nabitia batérie.
  • Do ‘journalctl’ bol pridaný nový režim výstupu „-o short-delta“, ktorý zobrazuje rozdiel v čase medzi rôznymi správami v logu.
  • Do systemd-repart bola pridaná podpora pre vytváranie oddielov s FS Squashfs a oddielov pre dm-verity, vrátane digitálnych podpisov.
  • Do systemd-logind bola pridaná možnosť „StopIdleSessionSec=“, ktorá umožňuje ukončiť neaktívnu reláciu po uplynutí stanoveného časového limitu.
  • Do systemd-cryptenroll bola pridaná voľba „—unlock-key-file=“, ktorá umožňuje extrakciu kľúča na decryptáciu z súboru, a nie prostredníctvom výzvy pre užívateľa.
  • Bola zabezpečená možnosť spúšťať utilitu systemd-growfs v prostrediach bez udev.
  • V systemd-backlight bola vylepšená podpora systémov s viacerými grafickými kartami.
  • Licencia k uvedeným príkladom kódu v dokumentácii bola zmenená z CC0 na MIT-0.

Zmeny narušujúce kompatibilitu:

  • Pri kontrole čísla verzie jadra pomocou direktívy ConditionKernelVersion sa v operátoroch ‘=’ a ‘!=’ teraz používa jednoduché porovnanie reťazcov. Ak operátor porovnania nie je uvedený, môže sa použiť porovnávanie pomocou glob masky so znakmi ‘*’, ‘?’ a ‘[‘, ‘]’. Na porovnávanie verzií v štýle funkcie stverscmp() by sa mali používať operátory ‘’, ‘=’.
  • Štítok SELinux, použitý na overenie prístupu z unit súboru, sa teraz číta v priebehu načítania súboru, a nie v okamihu overovania prístupu.
  • Podmienka „ConditionFirstBoot“ sa teraz spustí pri prvom spustení systému len priamo v štádiu spustenia a vracia „false“ pri volaní jednotiek po ukončení spustenia.
  • V roku 2024 sa plánuje zastavenie podpory mechanizmu obmedzovania zdrojov cgroup v1 v systemd, ktorý bol vyhlásený za zastaraný vo vydaní systemd 248. Administrátorom sa odporúča, aby vopred zabezpečili prechod na cgroup v2 pre služby, ktoré sú viazané na cgroup v1. Kľúčovým rozdielom medzi cgroups v2 a v1 je použitie spoločnej hierarchie cgroups pre všetky druhy zdrojov, namiesto oddelených hierarchií na rozdelenie CPU zdrojov, na reguláciu spotreby pamäte a na vstup/výstup. Oddelené hierarchie vedú k problémom s organizovaním interakcie medzi spracovateľmi a k dodatočným nákladom na zdroje jadra pri aplikovaní pravidiel pre proces, ktorý je uvedený v rôznych hierarchiách.
  • V druhej polovici roku 2023 sa plánuje zastavenie podpory oddelených hierarchií adresárov, keď je /usr namontovaný oddelene od koreňa alebo sú oddelené adresáre /bin a /usr/bin, /lib a /usr/lib.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster