Wydanie menedżera systemowego systemd 243

Po pięciu miesiącach prac rozwojowych zaprezentowano premiera menedżera systemowego systemd 243. Wśród nowości można wymienić integrację w PID 1 z obsługą braku pamięci w systemie, wsparcie dla podpinania własnych programów BPF do filtrowania ruchu jednostek, liczne nowe opcje dla systemd-networkd, tryb monitorowania przepustowości interfejsów sieciowych, domyślne użycie na systemach 64-bitowych 22-bitowych identyfikatorów PID zamiast 16-bitowych, przejście na ujednoliconą hierarchię cgroups, włączenie w skład systemd-network-generator.

Główne zmiany:

  • Do obsługi PID 1 dodano rozpoznawanie sygnałów generowanych przez jądro o braku pamięci (Out-Of-Memory, OOM) w celu przeniesienia jednostek, które osiągnęły limit zużycia pamięci, w specjalny stan z opcjonalną możliwością wymuszenia ich zakończenia lub zatrzymania;
  • Dla plików jednostek wprowadzono nowe parametry IPIngressFilterPath i
    IPEgressFilterPath, które umożliwiają podłączenie programów BPF z dowolnymi obsługami do filtrowania przychodzących i wychodzących pakietów IP generowanych przez procesy związane z daną jednostką. Proponowane możliwości pozwalają na tworzenie swoistego rodzaju zapór sieciowych dla usług systemd. Przykład pisania prostego filtru sieciowego na bazie BPF;
  • Do narzędzia systemctl dodano polecenie „clean” do usuwania pamięci podręcznej, plików runtime, informacji o stanie i katalogów z logami;
  • W systemd-networkd dodano wsparcie dla interfejsów sieciowych MACsec, nlmon, IPVTAP i Xfrm;
  • W systemd-networkd wprowadzono oddzielną konfigurację stosów DHCPv4 i DHCPv6 za pośrednictwem sekcji „[DHCPv4]” i „[DHCPv6]” w pliku konfiguracyjnym. Dodano opcję RoutesToDNS do dodania osobnej trasy do serwera DNS wskazanego w parametrach uzyskanych od serwera DHCP (aby ruch do DNS był kierowany przez ten sam link, co główna trasa uzyskana od DHCP). Dla DHCPv4 dodano nowe opcje: MaxAttempts — maksymalna liczba zapytań o adres, BlackList — czarna lista serwerów DHCP, SendRelease — włączenie wysyłania komunikatów DHCP RELEASE po zakończeniu sesji;
  • Do narzędzia systemd-analyze dodano nowe polecenia:
    • „systemd-analyze timestamp” — analiza i przetwarzanie czasu;
    • „systemd-analyze timespan” — analiza i przetwarzanie przedziałów czasowych;
    • „systemd-analyze condition” — analiza i testowanie wyrażeń ConditionXYZ;
    • „systemd-analyze exit-status” — analiza i przetwarzanie kodów zakończenia z numerów w nazwy i odwrotnie;
    • «systemd-analyze unit-files» — wyświetla listę wszystkich ścieżek plików dla jednostek i aliasów jednostek.
  • Opcje SuccessExitStatus, RestartPreventExitStatus i
    RestartForceExitStatus teraz obsługują nie tylko numeryczne kody zwrotne, ale także ich identyfikatory tekstowe (na przykład „DATAERR”). Listę powiązań kodów z identyfikatorami można zobaczyć za pomocą polecenia „sytemd-analyze exit-status”;
  • Do narzędzia networkctl dodano polecenie „delete” do usuwania wirtualnych urządzeń sieciowych oraz opcję „—stats” do wyświetlania statystyk dotyczących urządzeń;
  • Do networkd.conf dodano ustawienia SpeedMeter i SpeedMeterIntervalSec do okresowego pomiaru przepustowości interfejsów sieciowych. Statystykę uzyskaną z wyników pomiarów można zobaczyć w wyniku polecenia ‘networkctl status’;
  • Dodano nowe narzędzie systemd-network-generator do generowania plików
    .network, .netdev i .link na podstawie ustawień IP przesyłanych przy uruchamianiu przez linię poleceń jądra Linux w formacie ustawień Dracut;
  • Wartość sysctl „kernel.pid_max” na systemach 64-bitowych jest teraz domyślnie ustawiana na 4194304 (22-bitowe PID zamiast 16-bitowych), co zmniejsza prawdopodobieństwo kolizji przy przypisywaniu PID, zwiększa limit liczby jednocześnie uruchomionych procesów oraz korzystnie wpływa na bezpieczeństwo. Potencjalnie zmiana może prowadzić do problemów ze zgodnością, ale w praktyce jak dotąd o takich problemach nie zgłoszono;
  • Domyślnie podczas budowy wprowadzono przejście na zjednoczoną hierarchię cgroups-v2 („-Ddefault-hierarchy=unified”). Wcześniej domyślnie ustawiony był tryb hybrydowy („-Ddefault-hierarchy=hybrid”);
  • Zmieniło się zachowanie filtra wywołań systemowych (SystemCallFilter), który w przypadku odwołania do zabronionego wywołania systemowego teraz kończy cały proces, a nie pojedyncze wątki (thread), ponieważ kończenie pojedynczych wątków mogło prowadzić do nieprzewidywalnych problemów. Zmiany obowiązują tylko w przypadku posiadania jądra Linux 4.14+ i libseccomp 2.4.0+;
  • Nieuprzywilejowane programy otrzymały możliwość wysyłania pakietów ICMP Echo (ping) dzięki ustawieniu sysctl „net.ipv4.ping_group_range” dla całego zakresu grup (dla wszystkich procesów);
  • Aby przyspieszyć proces budowy, domyślnie wyłączono generację podręczników man (aby zbudować pełną dokumentację, należy użyć opcji „-Dman=true” lub „-Dhtml=true” dla podręczników w formacie html). W celu ułatwienia przeglądania dokumentacji w skład włączono dwa skrypty build/man/man i build/man/html do generacji i podglądu interesujących podręczników;
  • Do obsługi nazw domen zawierających znaki narodowych alfabetów domyślnie używana jest biblioteka libidn2 (aby przywrócić libidn, należy użyć opcji „-Dlibidn=true”);
  • Wsparcie dla pliku wykonywalnego /usr/sbin/halt.local, który zapewniał funkcjonalność, która nie zyskała odpowiedniej popularności w dystrybucjach, zostało zakończone. Aby zorganizować uruchamianie poleceń przy zakończeniu pracy, zaleca się korzystanie ze skryptów w /usr/lib/systemd/system-shutdown/ lub zdefiniowanie nowej jednostki zależnej od final.target;
  • Na ostatnim etapie zamykania systemu systemd teraz automatycznie zwiększa poziom logów w sysctl „kernel.printk”, co rozwiązuje problem z wyświetlaniem w logu zdarzeń, które miały miejsce na późnych etapach zakończenia pracy, kiedy standardowe demony logowania już zakończyły działanie;
  • W journalctl i innych narzędziach wyświetlających logi dodano wyróżnienie ostrzeżeń kolorem żółtym, a rekordy audytu niebieskim w celu ich wizualnego wyróżnienia;
  • W zmiennej środowiskowej $PATH ścieżka do bin/ teraz znajduje się przed ścieżką do sbin/, tzn. jeśli w obu katalogach znajdują się pliki wykonywalne o tych samych nazwach, będzie wykonywany plik z bin/;
  • W systemd-logind zapewniono wywołanie SetBrightness() do bezpiecznej zmiany jasności ekranu dla każdej sesji;
  • Do polecenia „udevadm info” dodano flagę „—wait-for-initialization” do oczekiwania na zakończenie inicjalizacji urządzenia;
  • Podczas uruchamiania systemu procesor PID 1 teraz wyświetla na ekranie nazwy jednostek, zamiast linii z ich opisem. Aby przywrócić poprzednie zachowanie, można użyć opcji StatusUnitFormat w /etc/systemd/system.conf lub parametru jądra systemd.status_unit_format;
  • W /etc/systemd/system.conf dla watchdog w PID 1 dodano opcję KExecWatchdogSec, określającą czas oczekiwania na ponowne uruchomienie z użyciem kexec. Stara konfiguracja
    ShutdownWatchdogSec została przemianowana na RebootWatchdogSec i określa czas oczekiwania dla zadań w procesie zamykania lub zwykłego ponownego uruchamiania;
  • Dodano nową opcję dla usług ExecCondition, umożliwiająca wydawanie poleceń, które będą wykonywane przed ExecStartPre. Na podstawie kodu błędu zwróconego przez polecenie podejmuje się decyzję o dalszym wykonaniu jednostki — jeśli kod 0, uruchomienie jednostki jest kontynuowane, jeśli od 1 do 254 kończy się milcząco bez oznaczenia wystąpienia awarii, jeśli 255 — kończy się z oznaczeniem wystąpienia awarii;
  • Dodano nową usługę systemd-pstore.service do wyodrębniania danych z sys/fs/pstore/ i ich zapisywania w /var/lib/pstore dla dalszej analizy;
  • Do narzędzia timedatectl dodano nowe polecenia do konfigurowania parametrów NTP dla systemd-timesyncd w powiązaniu z interfejsami sieciowymi;
  • W poleceniu «localectl list-locales» zaprzestano wyświetlania lokalizacji innych niż UTF-8;
  • Zignorowano błędy przypisywania zmiennych w plikach sysctl.d/, jeśli nazwa zmiennej zaczyna się od symbolu «-«;
  • Serwis systemd-random-seed.service teraz w pełni rozlicza się z inicjalizacją puli entropii generatora liczb losowych jądra Linux. Usługi, które wymagają prawidłowo zainicjalizowanego /dev/urandom, muszą być uruchamiane po systemd-random-seed.service;
  • W bootloaderze systemd-boot zapewniono opcjonalną możliwość utrzymania pliku seed z losową sekwencją w partycji EFI System Partition (ESP);
  • Do narzędzia bootctl dodano nowe polecenia «bootctl random-seed» do generowania pliku seed w ESP oraz «bootctl is-installed» do sprawdzania instalacji bootloadera systemd-boot. W bootctl również wprowadzono wyświetlanie ostrzeżeń o nieprawidłowej konfiguracji wpisów rozruchowych (na przykład, gdy obraz jądra został usunięty, a wpis do jego uruchomienia pozostał);
  • Zapewniono automatyczny wybór partycji wymiany podczas przechodzenia systemu w stan uśpienia. Partycja jest wybierana w zależności od priorytetu skonfigurowanego dla niej, a w przypadku równych priorytetów — rozmiaru dostępnego miejsca;
  • Do /etc/crypttab dodano opcję keyfile-timeout do określenia czasu oczekiwania na urządzenie z kluczem szyfrowania przed wyświetleniem monitu o hasło dostępu do zaszyfrowanej partycji;
  • Dodano opcję IOWeight do ustawienia wagi wejścia/wyjścia dla planisty BFQ;
  • W systemd-resolved dodano tryb ścisły (‘strict’) dla DNS-over-TLS oraz wdrożono możliwość buforowania tylko pozytywnych odpowiedzi DNS («Cache no-negative» w resolved.conf);
  • Dla VXLAN w systemd-networkd dodano opcję GenericProtocolExtension do włączenia rozszerzeń protokołu VXLAN. Dla VXLAN i GENEVE dodano opcję IPDoNotFragment, aby ustawić flagę zakazu fragmentacji dla wychodzących pakietów;
  • W systemd-networkd w sekcji „[Route]” pojawiła się opcja FastOpenNoCookie, która umożliwia włączenie mechanizmu szybkiego otwierania połączeń TCP (TFO - TCP Fast Open, RFC 7413) w powiązaniu z poszczególnymi trasami, a także opcja TTLPropagate do skonfigurowania TTL LSP (Label Switched Path). W opcji „Type” zapewniono wsparcie dla trybów routingu local, broadcast, anycast, multicast, any i xresolve;
  • W systemd-networkd w sekcji „[Network]” zaproponowano opcję DefaultRouteOnDevice, która automatycznie konfiguruje trasę domyślną dla danego urządzenia sieciowego;
  • W systemd-networkd dla mostów sieciowych dodano opcje ProxyARP i
    ProxyARPWifi do skonfigurowania zachowania proxy ARP, MulticastRouter do ustawienia parametrów routingu w trybie multicast, MulticastIGMPVersion do zmiany wersji IGMP (Internet Group Management Protocol) dla multicast;
  • W systemd-networkd dla tuneli FooOverUDP dodano opcje Local, Peer i PeerPort do skonfigurowania adresów IP lokalnych i zdalnych, a także numeru portu sieciowego. Dla tuneli TUN dodano opcję VnetHeader do wsparcia GSO (Generic Segment Offload);
  • W systemd-networkd w plikach .network i .link w sekcji [Match] pojawiła się opcja Property, która pozwala na identyfikację urządzeń według specyficznych dla nich właściwości w udev;
  • W systemd-networkd dla tuneli dodano opcję AssignToLoopback, która zarządza powiązaniem końca tunelu z urządzeniem loopback „lo”;
  • W systemd-networkd zautomatyzowano aktywację stosu IPv6 w przypadku jego zablokowania przez sysctl disable_ipv6 — IPv6 jest aktywowane, jeśli dla interfejsu sieciowego określono ustawienia IPv6 (statyczne lub DHCPv6), w przeciwnym razie już ustalona wartość sysctl pozostaje niezmieniona;
  • W plikach .network konfiguracja CriticalConnection została zastąpiona opcją KeepConfiguration, która zapewnia więcej środków do określenia sytuacji („yes”, „static”, „dhcp-on-stop”, „dhcp”), w których systemd-networkd nie powinien ingerować w już istniejące połączenia przy uruchamianiu;
  • Usunięto podatność CVE-2019-15718, spowodowana brakiem kontroli dostępu do interfejsu D-Bus systemd-resolved. Problem pozwala nieuprzywilejowanemu użytkownikowi na wykonywanie operacji dostępnych tylko dla administratorów, na przykład można zmienić ustawienia DNS i skierować zapytania DNS do fałszywego serwera;
  • Usunięto podatność CVE-2019-9619, związana z wyłączeniem pam_systemd dla nieinteraktywnych sesji, co umożliwia przeprowadzenie spoofingu aktywnej sesji.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster