Veröffentlichung des Systemmanagers systemd 243

Nach fünfmonatiger Entwicklung vorgestellt der Veröffentlichung des Systemmanagers systemd 243. Zu den Neuerungen gehört die Integration eines Handlers für Speichermangel im PID 1, die Unterstützung zur Anbindung benutzerdefinierter BPF-Programme zur Filterung des Verkehrs von Einheiten, zahlreiche neue Optionen für systemd-networkd, ein Überwachungsmodus zur Bandbreitenerfassung von Netzwerkinterfaces, standardmäßig in 64-Bit-Systemen die Verwendung von 22-Bit-PID-Nummern anstelle von 16-Bit-PIDs, der Übergang zu einer einheitlichen Hierarchie der cgroups und die Einbindung in systemd-network-generator.

Hauptänderungen:

  • Im PID 1 Handler wurde die Erkennung der durch den Kernel generierten Signale über Speichermangel (Out-Of-Memory, OOM) hinzugefügt, um Einheiten, die ihr Speicherkontingent erreicht haben, in einen speziellen Status zu versetzen, mit der optionalen Möglichkeit, sie zwangsweise zu beenden oder zu stoppen.
  • Für Unit-Dateien wurden die neuen Parameter IPIngressFilterPath und
    IPEgressFilterPath implementiert, die es ermöglichen, BPF-Programme mit beliebigen Handlern zur Filterung von eingehenden und ausgehenden IP-Paketen, die von den mit dieser Einheit verbundenen Prozessen generiert werden, anzubinden. Die vorgeschlagenen Möglichkeiten erlauben es, eine Art Firewalls für systemd-Dienste zu erstellen. Beispiel für die Erstellung eines einfachen Netzwerkfilters auf Basis von BPF;
  • Das Dienstprogramm systemctl hat den Befehl „clean“ zur Löschung von Cache, Runtime-Dateien, Statusinformationen und Log-Verzeichnissen hinzugefügt;
  • In systemd-networkd wurde die Unterstützung für die Netzwerkinterfaces MACsec, nlmon, IPVTAP und Xfrm hinzugefügt;
  • In systemd-networkd wurde eine separate Konfiguration der Stacks für DHCPv4 und DHCPv6 über die Abschnitte „[DHCPv4]“ und „[DHCPv6]“ in der Konfigurationsdatei implementiert. Eine Option RoutesToDNS wurde hinzugefügt, um eine separate Route zum angegebenen DNS-Server, der in den vom DHCP-Server erhaltenen Parametern angegeben ist, hinzuzufügen (damit der Verkehr zu DNS über dasselbe Link gesendet wird wie die Hauptroute, die vom DHCP erhalten wurde). Für DHCPv4 wurden neue Optionen hinzugefügt: MaxAttempts — maximale Anzahl an Adressanforderungen, BlackList — schwarze Liste der DHCP-Server, SendRelease — Aktivierung der Versendung von DHCP RELEASE-Nachrichten am Ende der Sitzung;
  • Im Dienstprogramm systemd-analyze wurden neue Befehle hinzugefügt:
    • „systemd-analyze timestamp“ — Analyse und Umwandlung von Zeit;
    • „systemd-analyze timespan“ — Analyse und Umwandlung von Zeiträumen;
    • „systemd-analyze condition“ — Analyse und Test von ConditionXYZ-Ausdrücken;
    • „systemd-analyze exit-status“ — Analyse und Umwandlung von Rückgabecodes zwischen Nummern und Namen.
    • „systemd-analyze unit-files“ – gibt eine Liste aller Dateipfade für Einheiten und Aliasnamen von Einheiten aus.
  • Die Optionen SuccessExitStatus, RestartPreventExitStatus und
    RestartForceExitStatus unterstützen jetzt nicht nur numerische Rückgabecodes, sondern auch deren Textkennungen (zum Beispiel „DATAERR“). Eine Liste der Zuordnungen von Codes zu Kennungen kann mit dem Befehl „systemd-analyze exit-status“ eingesehen werden;
  • Das Dienstprogramm networkctl hat den Befehl „delete“ hinzuzufügen, um virtuelle Netzwerkgeräte zu entfernen, sowie die Option „—stats“ zur Ausgabe von Statistiken über Geräte;
  • In networkd.conf wurden die Einstellungen SpeedMeter und SpeedMeterIntervalSec hinzugefügt, um die Bandbreite von Netzwerkinterfaces periodisch zu messen. Die durch die Messungen erhaltenen Statistiken können mit dem Befehl ‚networkctl status‘ abgerufen werden;
  • Ein neues Dienstprogramm systemd-network-generator wurde hinzugefügt, um die Dateien
    .network, .netdev und .link basierend auf den über die Befehlszeile des Linux-Kernels im Dracut-Konfigurationsformat übergebenen IP-Einstellungen zu generieren;
  • Der sysctl-Wert „kernel.pid_max“ wird auf 64-Bit-Systemen jetzt standardmäßig auf 4194304 gesetzt (22-Bit-PIDs anstelle von 16-Bit-PIDs), was die Wahrscheinlichkeit von Kollisionen bei der Zuteilung von PIDs verringert, das Limit für gleichzeitig laufende Prozesse erhöht und sich positiv auf die Sicherheit auswirkt. Potenziell kann diese Änderung Komplikationen mit der Kompatibilität verursachen, jedoch wurden bislang in der Praxis diesbezüglich keine Probleme gemeldet;
  • Standardmäßig wurde bei der Erstellung auf eine einheitliche Hierarchie von cgroups-v2 („-Ddefault-hierarchy=unified“) umgestellt. Zuvor war standardmäßig der hybride Modus („-Ddefault-hierarchy=hybrid“) eingestellt;
  • Das Verhalten des Systemaufruffilters (SystemCallFilter) wurde geändert; im Falle eines Zugriffs auf einen verbotenen Systemaufruf wird jetzt der gesamte Prozess beendet und nicht mehr nur einzelne Threads, da das Beenden einzelner Threads zu unvorhersehbaren Problemen führen konnte. Diese Änderungen gelten nur bei Vorhandensein des Linux-Kernels 4.14+ und libseccomp 2.4.0+;
  • Unprivilegierten Programmen wurde die Möglichkeit gegeben, ICMP Echo-Pakete (Ping) zu senden, indem der sysctl „net.ipv4.ping_group_range“ für den gesamten Gruppenbereich festgelegt wurde (für alle Prozesse);
  • Um den Bauprozess zu beschleunigen, wurde standardmäßig die Generierung von Man-Seiten eingestellt (für den vollständigen Dokumentationsaufbau sollte die Option „-Dman=true“ oder „-Dhtml=true“ für HTML-Seiten verwendet werden). Zur Vereinfachung der Dokumentationsansicht sind zwei Skripte in das Paket aufgenommen: build/man/man und build/man/html zur Generierung und Vorschau der interessierenden Seiten;
  • Für die Verarbeitung von Domainnamen mit Zeichen nationaler Alphabete wird standardmäßig die Bibliothek libidn2 verwendet (um libidn zurückzugeben, sollte die Option „-Dlibidn=true“ verwendet werden);
  • Die Unterstützung für die ausführbare Datei /usr/sbin/halt.local, die Funktionalitäten bereitstellte, die in Distris nicht ausreichend verbreitet waren, wurde eingestellt. Um die Ausführung von Befehlen beim Herunterfahren zu organisieren, wird empfohlen, Skripte in /usr/lib/systemd/system-shutdown/ zu verwenden oder eine neue Einheit zu definieren, die von final.target abhängt;
  • In der letzten Phase des Herunterfahrens erhöht systemd jetzt automatisch das Loglevel in sysctl „kernel.printk“, was das Problem löst, dass Ereignisse, die in späten Phasen des Herunterfahrens eintreten, im Log nicht angezeigt werden, wenn die Standard-Logging-Dämonen bereits beendet sind;
  • In journalctl und anderen Log-Anzeige-Tools wurde die Hervorhebung von Warnungen in gelber Farbe und von Audit-Einträgen in blauer Farbe zur visuellen Unterscheidung von der Gesamtheit eingeführt;
  • In der Umgebungsvariable $PATH steht der Pfad zu bin/ nun vor dem Pfad zu sbin/, d.h. wenn im beiden Verzeichnissen ausführbare Dateien mit dem gleichen Namen vorhanden sind, wird die Datei aus bin/ ausgeführt;
  • In systemd-logind wurde der Aufruf von SetBrightness() für eine sichere Anpassung der Bildschirmhelligkeit für jede Sitzung implementiert;
  • Der Befehl „udevadm info“ erhielt das Flag „—wait-for-initialization“, um auf den Abschluss der Geräteeinrichtung zu warten;
  • Während des Systemstarts gibt der Handler PID 1 nun die Namen der Einheiten anstelle einer Zeile mit deren Beschreibung aus. Um das frühere Verhalten wiederherzustellen, kann die Option StatusUnitFormat in /etc/systemd/system.conf oder der Kernelparameter systemd.status_unit_format verwendet werden;
  • In /etc/systemd/system.conf wurde für den watchdog in PID 1 die Option KExecWatchdogSec hinzugefügt, die das Timeout für einen Neustart mit kexec definiert. Die alte Einstellung
    ShutdownWatchdogSec wurde in RebootWatchdogSec umbenannt und definiert das Timeout für Arbeiten während des Herunterfahrens oder des regulären Neustarts;
  • Für Dienste wurde eine neue Option hinzugefügt ExecCondition, die es ermöglicht, Befehle festzulegen, die vor ExecStartPre ausgeführt werden. Auf der Grundlage des von dem Befehl zurückgegebenen Fehlercodes wird entschieden, ob die Ausführung der Einheit fortgesetzt wird — wenn der Code 0 zurückgegeben wird, wird der Start der Einheit fortgesetzt, wenn von 1 bis 254 stillschweigend ohne Fehlerkennzeichnung beendet wird, und wenn 255 — mit einer Fehlerkennzeichnung beendet wird;
  • Ein neuer Dienst systemd-pstore.service wurde hinzugefügt, um Daten aus sys/fs/pstore/ zu extrahieren und in /var/lib/pstore für eine weitere Analyse zu speichern;
  • Neue Befehle zur Konfiguration der NTP-Einstellungen für systemd-timesyncd in Bezug auf Netzwerkinterfaces wurden in das Dienstprogramm timedatectl aufgenommen;
  • Die Anzeige von Lokalisationen, die von UTF-8 abweichen, wurde im Befehl „localectl list-locales“ eingestellt;
  • Fehler beim Zuweisen von Variablen in sysctl.d/-Dateien werden ignoriert, wenn der Variablenname mit dem Zeichen „-“ beginnt;
  • Dienst systemd-random-seed.service verantwortet jetzt vollständig die Initialisierung des Entropie-Pools des Kernel-Pseudo-Zufallszahlengenerators. Dienste, die ein korrekt initialisiertes /dev/urandom benötigen, müssen nach systemd-random-seed.service gestartet werden;
  • Im Bootloader systemd-boot wurde eine optionale Unterstützung für das Halten von Seed-Dateien mit einer Zufallsfolge im EFI-Systempartition (ESP) bereitgestellt;
  • Neue Befehle „bootctl random-seed“ zur Generierung der Seed-Datei im ESP und „bootctl is-installed“ zur Überprüfung der Installation des Bootloaders systemd-boot wurden in das Dienstprogramm bootctl aufgenommen. In bootctl werden auch Warnungen über fehlerhafte Booteinträge ausgegeben (z. B. wenn das Kernel-Image gelöscht wurde, die Booteintragung jedoch beibehalten wurde);
  • Die automatische Auswahl der Swap-Partition beim Übergang des Systems in den Schlafmodus wurde sichergestellt. Die Partition wird basierend auf der konfigurierten Priorität ausgewählt, und im Falle von gleichen Prioritäten — nach der Größe des freien Speicherplatzes;
  • Eine Option keyfile-timeout wurde zu /etc/crypttab hinzugefügt, um die Wartezeit des Geräts mit der Verschlüsselungsschlüsseldatei festzulegen, bevor die Passwortabfrage zum Zugriff auf die verschlüsselte Partition erfolgt;
  • Eine Option IOWeight zum Festlegen des Eingabe-/Ausgabewerts für den BFQ-Scheduler wurde hinzugefügt;
  • In systemd-resolved wurde ein strenger ('strict') Modus für DNS-over-TLS hinzugefügt, und es wurde die Möglichkeit realisiert, nur positive DNS-Antworten zwischenzuspeichern („Cache no-negative“ in resolved.conf);
  • Für VXLAN wurde in systemd-networkd die Option GenericProtocolExtension hinzugefügt, um die VXLAN-Protokollerweiterungen zu aktivieren. Für VXLAN und GENEVE wurde die Option IPDoNotFragment hinzugefügt, um das Fragmentierungsverbot für ausgehende Pakete festzulegen;
  • In systemd-networkd gibt es in der Sektion „[Route]“ die Option FastOpenNoCookie zur Aktivierung des TCP-Fast-Open-Mechanismus (TFO – TCP Fast Open, RFC 7413) für bestimmte Routen, sowie die Option TTLPropagate zur Konfiguration der TTL LSP (Label Switched Path). Die Option „Type“ unterstützt die Routing-Modi local, broadcast, anycast, multicast, any und xresolve;
  • In systemd-networkd wurde in den Sektionen „[Network]“ eine Option DefaultRouteOnDevice angeboten, um die Standardroute für ein bestimmtes Netzwerkgerät automatisch einzurichten;
  • In systemd-networkd wurden für Netzwerkbrücken die Optionen ProxyARP und
    ProxyARPWifi hinzugefügt, um das Verhalten von Proxy ARP, MulticastRouter zur Festlegung der Routing-Parameter im Multicast-Modus sowie MulticastIGMPVersion zur Änderung der IGMP-Version (Internet Group Management Protocol) für Multicast einzustellen;
  • In systemd-networkd wurden für FooOverUDP-Tunnel die Optionen Local, Peer und PeerPort eingeführt, um die IP-Adressen der lokalen und entfernten Seiten sowie die Portnummer anzupassen. Für TUN-Tunnel wurde die Option VnetHeader zur Unterstützung von GSO (Generic Segment Offload) hinzugefügt;
  • In systemd-networkd wurde in den Dateien .network und .link in der Sektion [Match] eine Option Property eingeführt, mit der Geräte anhand ihrer spezifischen Eigenschaften in udev identifiziert werden können;
  • In systemd-networkd wurde die Option AssignToLoopback für Tunnel hinzugefügt, die die Bindung des Tunnelendes an das Loopback-Gerät „lo“ steuert;
  • In systemd-networkd wurde die IPv6-Stack-Aktivierung automatisiert, falls sie über sysctl disable_ipv6 blockiert wird – IPv6 wird aktiviert, wenn für die Netzwerkschnittstelle IPv6-Einstellungen (statisch oder DHCPv6) definiert sind; andernfalls bleibt der bereits festgelegte Wert von sysctl unverändert;
  • In den .network-Dateien wurde die Einstellung CriticalConnection durch die Option KeepConfiguration ersetzt, die mehr Möglichkeiten bietet, um Situationen („yes“, „static“, „dhcp-on-stop“, „dhcp“) zu definieren, in denen systemd-networkd bestehende Verbindungen beim Start nicht verändern soll;
  • Sicherheitsanfälligkeit beseitigt CVE-2019-15718, verursacht durch das Fehlen einer Zugangskontrolle zur D-Bus-Schnittstelle systemd-resolved. Das Problem ermöglicht es einem nicht privilegierten Benutzer, Operationen auszuführen, die normalerweise nur Administratoren vorbehalten sind, beispielsweise können DNS-Einstellungen geändert und DNS-Anfragen an einen gefälschten Server umgeleitet werden;
  • Sicherheitsanfälligkeit beseitigt CVE-2019-9619, die mit der Nichtaktivierung von pam_systemd für nicht-interaktive Sitzungen zusammenhängt, die das Spoofing einer aktiven Sitzung ermöglichen.

Quelle: opennet.ru

60GB SSD 8Gb DDR4