Wydanie menedżera systemu systemd 252 z obsługą UKI (Unified Kernel Image).

Po pięciu miesiącach rozwoju zaprezentowano wydanie menedżera systemu systemd 252. Kluczową zmianą w nowej wersji była integracja obsługi ulepszonego procesu rozruchu, który umożliwia weryfikację nie tylko jądra i bootloadera, ale także składników podstawowego środowiska systemowego za pomocą podpisów cyfrowych.

Proponowana metoda polega na wykorzystaniu zunifikowanego obrazu jądra UKI (Unified Kernel Image) podczas ładowania, który łączy w sobie obsługę ładowania jądra z UEFI (UEFI boot stub), obraz jądra Linux oraz initrd, środowisko systemowe ładowane do pamięci, używane do inicjalizacji przed zamontowaniem głównego systemu plików. Obraz UKI jest spakowany jako pojedynczy plik wykonywalny w formacie PE, który można załadować za pomocą tradycyjnych bootloaderów lub wywołać bezpośrednio z oprogramowania układowego UEFI. Po wywołaniu z UEFI integralność i autentyczność nie tylko jądra, ale także zawartości initrd można zweryfikować za pomocą podpisu cyfrowego.

Dodano nowe narzędzie systemd-measure do obliczania parametrów rejestrów TPM PCR (Trusted Platform Module Platform Configuration Register) używanych do monitorowania integralności i generowania podpisu cyfrowego dla obrazu UKI. Klucz publiczny używany w podpisie i towarzyszące mu informacje o PCR można osadzić bezpośrednio w obrazie rozruchowym UKI (klucz i podpis są zapisywane w pliku PE w polach „.pcrsig” i „.pcrkey”) i wyodrębnić z niego za pomocą zewnętrznych lub wewnętrznych narzędzi.

W szczególności narzędzia systemd-cryptsetup, systemd-cryptenroll i systemd-creds zostały dostosowane do wykorzystywania tych informacji, dzięki czemu możliwe jest zapewnienie powiązania zaszyfrowanych partycji dysku z cyfrowo podpisanym jądrem (w tym przypadku dostęp do zaszyfrowanej partycji jest zapewniony tylko wtedy, gdy obraz UKI przeszedł weryfikację za pomocą podpisu cyfrowego na podstawie parametrów umieszczonych w module TPM).

Dodatkowo dołączone jest narzędzie systemd-pcrphase, które umożliwia zarządzanie powiązaniem różnych etapów rozruchu z parametrami umieszczonymi w pamięci kryptoprocesorów obsługujących specyfikację TPM 2.0 (na przykład można udostępnić klucz odszyfrowujący partycję LUKS2 tylko w obrazie initrd i zablokować dostęp do niego na późniejszych etapach rozruchu).

Niektóre inne zmiany:

  • Zapewniono, że domyślnie używana jest lokalizacja C.UTF-8, chyba że w ustawieniach określono inną lokalizację.
  • Zaimplementowano możliwość wykonania pełnego zestawu usług („systemctl preset”) podczas pierwszego rozruchu. Włączenie zestawu podczas rozruchu wymaga kompilacji z opcją „-Dfirst-boot-full-preset”, ale planowane jest jej domyślne włączenie w przyszłych wersjach.
  • Jednostki zarządzania użytkownikami używają kontrolera zasobów CPU, który umożliwia zastosowanie ustawień CPUWeight do wszystkich jednostek segmentów używanych do partycjonowania systemu (app.slice, background.slice, session.slice) w celu odizolowania zasobów między różnymi usługami użytkownika konkurującymi o zasoby CPU. CPUWeight obsługuje również wartość „idle” w celu aktywowania odpowiedniego trybu provisioningu zasobów.
  • W jednostkach przejściowych i narzędziu systemd-repart możliwe jest zastępowanie ustawień poprzez tworzenie plików w katalogu /etc/systemd/system/name.d/.
  • Obrazy systemowe są teraz oznaczane jako „zakończone wsparciem” na podstawie wartości nowego parametru „SUPPORT_END=” w pliku /etc/os-release.
  • Dodano ustawienia „ConditionCredential=” i „AssertCredential=”, których można użyć do ignorowania lub zawieszania jednostek, jeśli w systemie nie ma określonych poświadczeń.
  • Dodano ustawienia „DefaultSmackProcessLabel=” i „DefaultDeviceTimeoutSec=” do system.conf i user.conf w celu zdefiniowania domyślnego poziomu zabezpieczeń SMACK i limitu czasu aktywacji jednostki.
  • W ustawieniach „ConditionFirmware=” i „AssertFirmware=” dodano możliwość określania poszczególnych pól SMBIOS. Na przykład, aby uruchomić jednostkę tylko wtedy, gdy pole /sys/class/dmi/id/board_name zawiera wartość „Custom Board”, można określić „ConditionFirmware=smbios-field(board_name = „Custom Board”)”.
  • Proces inicjalizacji (PID 1) ma teraz możliwość importowania poświadczeń z pól SMBIOS (typ 11, „ciągi dostawcy OEM”), a także definiowania ich za pomocą qemu_fwcfg, co ułatwia podawanie poświadczeń. maszyny wirtualne i eliminuje potrzebę korzystania z narzędzi innych firm, takich jak cloud-init i ignition.
  • Podczas wyłączania systemu zmieniono logikę odmontowywania wirtualnych systemów plików (proc, sys), a w dzienniku zapisano informacje o procesach blokujących odmontowywanie systemów plików.
  • SystemCallFilter domyślnie zezwala na dostęp do wywołania systemowego riscv_flush_icache.
  • Bootloader sd-boot ma teraz możliwość uruchamiania w trybie mieszanym, w którym jądro 64-bitowe Linux Uruchamia się z 32-bitowego oprogramowania układowego UEFI. Dodano eksperymentalną funkcję automatycznego stosowania kluczy SecureBoot z plików znajdujących się na partycji systemowej EFI (ESP).
  • Do narzędzia bootctl dodano nowe opcje: „--all-architectures” do instalacji plików binarnych dla wszystkich obsługiwanych architektur EFI, „--root=" i „--image=" do pracy z katalogiem lub obrazem dysku, „--install-source=" do określenia źródła instalacji, „--efi-boot-option-description=" do kontrolowania nazw wpisów rozruchowych.
  • Narzędzie systemctl ma teraz polecenie 'list-automounts' do wyświetlania listy automatycznie montowanych katalogów i opcję '--image=' do uruchamiania poleceń dla określonego obrazu dysku. Polecenia 'show' i 'status' mają teraz opcje '--state=' i '--type='.
  • W systemd-networkd dodano następujące opcje: „TCPCongestionControlAlgorithm=" do wybierania algorytmu kontroli przeciążenia TCP, „KeepFileDescriptor=" do zapisywania deskryptora pliku interfejsów TUN/TAP, „NetLabel=" do ustawiania etykiet NetLabel, „RapidCommit=" do przyspieszania konfiguracji przez DHCPv6 (RFC 3315). Parametr „RouteTable=" umożliwia teraz określanie nazw tabel routingu.
  • systemd-nspawn zezwala na względne ścieżki plików w opcjach "--bind=" i "--overlay=". Opcja "--bind=" obsługuje teraz parametr 'rootidmap' w celu mapowania identyfikatora użytkownika root w kontenerze na właściciela zamontowanego katalogu w systemie hosta.
  • systemd-resolved używa OpenSSL jako domyślnego zaplecza szyfrowania (wsparcie gnutls jest zachowane jako opcja). Nieobsługiwane algorytmy DNSSEC są teraz traktowane jako niebezpieczne zamiast zwracać błąd (SERVFAIL).
  • systemd-sysusers, systemd-tmpfiles i systemd-sysctl umożliwiają przekazywanie ustawień poprzez mechanizm przechowywania danych uwierzytelniających.
  • Narzędzie systemd-analyze ma teraz polecenie 'compare-versions' do porównywania ciągów z numerami wersji (podobne do 'rpmdev-vercmp' i 'dpkg --compare-versions'). Polecenie 'systemd-analyze dump' ma teraz możliwość filtrowania jednostek według maski.
  • Gdy wybierzesz wieloetapowy tryb uśpienia (wstrzymanie, a następnie hibernacja), ilość czasu spędzonego w trybie uśpienia jest teraz oparta na szacowanym pozostałym czasie pracy baterii. Natychmiastowa hibernacja następuje, gdy poziom naładowania baterii jest mniejszy niż 5%.
  • Do programu „journalctl” dodano nowy tryb wyjściowy „-o short-delta”, który wyświetla różnicę czasu pomiędzy różnymi komunikatami dziennika.
  • systemd-repart obsługuje teraz tworzenie partycji przy użyciu systemu plików Squashfs oraz partycji dla dm-verity, w tym partycji z podpisami cyfrowymi.
  • Dodano ustawienie „StopIdleSessionSec=” do systemd-logind, aby zakończyć bezczynną sesję po upływie określonego limitu czasu.
  • Dodano opcję „--unlock-key-file=” do systemd-cryptenroll, aby wyodrębnić klucz deszyfrujący z pliku, zamiast wyświetlać użytkownikowi monit.
  • Zapewniono możliwość uruchomienia narzędzia systemd-growfs w środowiskach bez udev.
  • systemd-backlight zapewnia lepszą obsługę systemów wyposażonych w wiele kart graficznych.
  • Licencja przykładów kodu udostępnionych w dokumentacji została zmieniona z CC0 na MIT-0.

Zmiany, które zakłócają kompatybilność:

  • Podczas sprawdzania numeru wersji jądra za pomocą dyrektywy ConditionKernelVersion operatory '=' i '!=' używają teraz prostego porównania ciągów znaków, a jeśli nie określono żadnego operatora porównania, można użyć porównania glob-mask za pomocą znaków '*', '?' i '[', ']'. W przypadku porównań wersji w stylu stverscmp() należy używać operatorów '<', '>', '<=' i '>='.
  • Etykieta SELinux, używany do sprawdzania dostępu do pliku jednostkowego, jest teraz odczytywany na etapie ładowania pliku, a nie na etapie sprawdzania dostępu.
  • Warunek „ConditionFirstBoot” jest teraz uruchamiany przy pierwszym uruchomieniu systemu tylko w trakcie samego etapu rozruchu i zwraca „false” podczas wywoływania jednostek po zakończeniu rozruchu.
  • W 2024 r. systemd planuje usunąć obsługę mechanizmu ograniczania zasobów cgroup v1, który został wycofany w systemd 248. Administratorzy powinni rozważyć wcześniejszą migrację usług, które polegają na cgroup v2 do cgroup v1. Kluczową różnicą między cgroups v2 i v1 jest użycie wspólnej hierarchii cgroup dla wszystkich typów zasobów, zamiast oddzielnych hierarchii dla alokacji zasobów procesora, ograniczania pamięci i wejścia/wyjścia. Oddzielne hierarchie utrudniają organizowanie interakcji między programami obsługi i dodatkowe zasoby jądra podczas stosowania reguł dla procesu, do którego odwołują się różne hierarchie.
  • Zakończenie obsługi oddzielnych hierarchii katalogów, w których /usr jest montowany oddzielnie od katalogu głównego lub /bin i /usr/bin, /lib i /usr/lib są rozdzielone, planowane jest na drugą połowę 2023 roku.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster