Dopo cinque mesi di sviluppo rilascio del gestore di sistema . Tra le novità, si segnala l'integrazione nel PID 1 di un gestore delle mancanze di memoria di sistema, il supporto per collegare programmi BPF personalizzati per filtrare il traffico delle unità, numerose nuove opzioni per systemd-networkd, la modalità di monitoraggio della larghezza di banda delle interfacce di rete, l'uso predefinito su sistemi a 64 bit di numeri PID a 22 bit invece di 16 bit, la transizione a una gerarchia unificata di cgroups e l'inclusione nel systemd-network-generator.
Principali modifiche:
- Nel gestore PID 1 è stata aggiunta la capacità di riconoscere i segnali generati dal kernel sulla mancanza di memoria (Out-Of-Memory, OOM) per trasferire le unità che hanno raggiunto il limite di consumo di memoria in uno stato speciale, con un'opzione di terminazione forzata o arresto;
- Per i file delle unità sono stati implementati nuovi parametri IPIngressFilterPath e
IPEgressFilterPath, che consentono di collegare programmi BPF con gestori arbitrari per filtrare i pacchetti IP in entrata e in uscita generati dai processi associati con questa unità. Le funzionalità proposte permettono di creare una sorta di firewall per i servizi systemd. di un semplice filtro di rete basato su BPF; - Nel comando systemctl è stata aggiunta l'opzione 'clean' per rimuovere la cache, i file runtime, le informazioni di stato e le directory di registro;
- In systemd-networkd è stato aggiunto il supporto per le interfacce di rete MACsec, nlmon, IPVTAP e Xfrm;
- In systemd-networkd è stata implementata una configurazione separata per gli stack DHCPv4 e DHCPv6 attraverso le sezioni '[DHCPv4]' e '[DHCPv6]' nel file di configurazione. È stata aggiunta l'opzione RoutesToDNS per aggiungere un percorso separato al server DNS specificato nelle opzioni ricevute dal server DHCP (affinché il traffico verso DNS venga inviato attraverso lo stesso link del percorso principale ricevuto dal DHCP). Per DHCPv4 sono state aggiunte nuove opzioni: MaxAttempts — numero massimo di richieste per ottenere un indirizzo, BlackList — lista nera dei server DHCP, SendRelease — attivazione dell'invio di messaggi DHCP RELEASE al termine della sessione;
- Nel comando systemd-analyze sono state aggiunte nuove opzioni:
- 'systemd-analyze timestamp' — analisi e conversione dei tempi;
- 'systemd-analyze timespan' — analisi e conversione degli intervalli di tempo;
- 'systemd-analyze condition' — analisi e test delle espressioni ConditionXYZ;
- 'systemd-analyze exit-status' — analisi e conversione dei codici di uscita da numeri a nomi e viceversa;
- «systemd-analyze unit-files» — visualizza l'elenco di tutti i percorsi dei file per le unità e gli alias delle unità.
- Le opzioni SuccessExitStatus, RestartPreventExitStatus e
RestartForceExitStatus ora supportano non solo codici di uscita numerici, ma anche i loro identificatori di testo (ad esempio «DATAERR»). Puoi visualizzare l'elenco della mappatura dei codici agli identificatori usando il comando «systemd-analyze exit-status»; - Nell'utility networkctl è stato aggiunto il comando «delete» per rimuovere le interfacce di rete virtuali, così come l'opzione «—stats» per visualizzare statistiche sulle interfacce;
- Nel file networkd.conf sono state aggiunte le impostazioni SpeedMeter e SpeedMeterIntervalSec per misurare periodicamente la larghezza di banda delle interfacce di rete. Le statistiche ottenute dai risultati delle misurazioni possono essere visualizzate nell'output del comando ‘networkctl status’;
- È stata aggiunta una nuova utility systemd-network-generator per generare file
.network, .netdev e .link basati sulle impostazioni IP fornite al momento dell'avvio tramite la riga di comando del kernel Linux nel formato delle impostazioni Dracut; - Il valore sysctl «kernel.pid_max» sui sistemi a 64 bit ora è impostato di default a 4194304 (PID a 22 bit invece che a 16 bit), riducendo la possibilità di collisioni durante l'assegnazione dei PID, aumentando il limite sul numero di processi attivi contemporaneamente e migliorando la sicurezza. Questo cambiamento potrebbe potenzialmente causare problemi di compatibilità, ma in pratica non sono stati segnalati problemi al riguardo;
- Di default, nella fase di costruzione è stata effettuata la transizione a una gerarchia unificata cgroups-v2 («-Ddefault-hierarchy=unified»). In precedenza, era impostato il modo ibrido come predefinito («-Ddefault-hierarchy=hybrid»);
- Il comportamento del filtro delle chiamate di sistema (SystemCallFilter) è stato modificato: ora, se viene effettuata una chiamata a una syscall vietata, l'intero processo viene terminato anziché i singoli thread, poiché la terminazione di thread singoli potrebbe causare problemi imprevisti. Le modifiche hanno effetto solo se si dispone del kernel Linux 4.14+ e libseccomp 2.4.0+;
- Ai programmi non privilegiati è stata data la possibilità di inviare pacchetti ICMP Echo (ping) grazie all'impostazione del sysctl «net.ipv4.ping_group_range» per l'intero intervallo di gruppi (per tutti i processi);
- Per accelerare il processo di build, la generazione delle guide man è disabilitata per impostazione predefinita (per costruire la documentazione completa è necessario utilizzare l'opzione «-Dman=true» o «-Dhtml=true» per le guide nel formato html). Per semplificare la visualizzazione della documentazione, sono inclusi due script build/man/man e build/man/html per generare e visualizzare le guide di interesse.
- Per gestire i nomi di dominio con caratteri degli alfabeti nazionali, è utilizzata per impostazione predefinita la libreria libidn2 (per ritornare a libidn è necessario utilizzare l'opzione «-Dlibidn=true»);
- È stata interrotta la supporto per il file eseguibile /usr/sbin/halt.local, che forniva una funzionalità non adeguatamente diffusa nelle distribuzioni. Si raccomanda di utilizzare script in /usr/lib/systemd/system-shutdown/ o di definire una nuova unità, dipendente da final.target, per eseguire comandi al termine del funzionamento;
- Nella fase finale di spegnimento, systemd ora aumenta automaticamente il livello dei log in sysctl «kernel.printk», risolvendo il problema della registrazione degli eventi che si verificano nelle fasi finali dello spegnimento, quando i demoni di log standard sono già stati terminati.
- In journalctl and other log-viewing utilities, warnings are highlighted in yellow, while audit entries are marked in blue for better visual differentiation.
- In the $PATH environment variable, the path to bin/ now precedes the path to sbin/. This means that if there are files with the same name in both directories, the file from bin/ will be executed.
- In systemd-logind, the SetBrightness() call has been implemented to safely change the screen brightness for each session.
- The command 'udevadm info' has been enhanced with the '--wait-for-initialization' flag to wait for device initialization to complete.
- During system boot, the PID 1 handler now displays the names of units instead of a string with their description. To revert to the previous behavior, use the StatusUnitFormat option in /etc/systemd/system.conf or the systemd.status_unit_format kernel parameter.
- In /etc/systemd/system.conf, the option KExecWatchdogSec has been added for the watchdog in PID 1, defining the timeout for restarts using kexec. The old setting ShutdownWatchdogSec has been renamed to RebootWatchdogSec and defines the timeout for operations during shutdown or regular reboot.
ShutdownWatchdogSec è stata rinominata in RebootWatchdogSec e definisce un timeout per i lavori durante il processo di spegnimento o riavvio normale; - A new option has been added for services. , che consente di impostare comandi che verranno eseguiti prima di ExecStartPre. In base al codice di errore restituito dal comando si decide se il unit continuerà a essere eseguito: se il codice è 0, l'unità continua a avviarsi; se è da 1 a 254, termina silenziosamente senza segnalare un errore; se è 255, termina segnalando un errore;
- Aggiunto un nuovo servizio systemd-pstore.service per estrarre dati da sys/fs/pstore/ e salvarli in /var/lib/pstore per ulteriori analisi;
- Nuovi comandi sono stati aggiunti all'utilità timedatectl per configurare i parametri NTP per systemd-timesyncd in relazione alle interfacce di rete;
- Nella command 'localectl list-locales' è stato interrotto il display delle locale diverse da UTF-8;
- Garantita l'ignoranza degli errori di assegnazione delle variabili nei file sysctl.d/, se il nome della variabile inizia con il simbolo «-«;
- Servizio ora è completamente responsabile dell'inizializzazione del pool di entropia del generatore di numeri pseudocasuali del kernel Linux. I servizi che richiedono un /dev/urandom correttamente inizializzato devono essere avviati dopo systemd-random-seed.service;
- Nel caricatore systemd-boot è stata fornita la possibilità opzionale di mantenere con una sequenza casuale nella partizione di sistema EFI (ESP);
- Nell'utilità bootctl sono stati aggiunti nuovi comandi ‘bootctl random-seed’ per generare un file seed nell'ESP e ‘bootctl is-installed’ per verificare l'installazione del bootloader systemd-boot. Inoltre, bootctl ora fornisce avvisi su configurazioni errate delle voci di avvio (ad esempio, quando l'immagine del kernel è stata rimossa ma la voce per il suo avvio è rimasta);
- È stata garantita la selezione automatica della partizione di swap quando il sistema entra in modalità sospensione. La partizione viene scelta in base alla priorità configurata, e in caso di priorità identiche, alla dimensione dello spazio libero;
- Nel /etc/crypttab è stata aggiunta l'opzione keyfile-timeout per impostare il tempo di attesa per un dispositivo con la chiave di crittografia prima di mostrare la richiesta della password per accedere alla partizione crittografata;
- Aggiunta l'opzione IOWeight per impostare il peso dell'input/output per lo scheduler BFQ;
- In systemd-resolved è stata aggiunta una modalità rigorosa ('strict') per il DNS-over-TLS e implementata la possibilità di memorizzare nella cache solo risposte DNS positive (‘Cache no-negative’ in resolved.conf);
- Per VXLAN in systemd-networkd è stata aggiunta l'opzione GenericProtocolExtension per attivare le estensioni del protocollo VXLAN. Per VXLAN e GENEVE è stata introdotta l'opzione IPDoNotFragment per impostare il flag di divieto di frammentazione per i pacchetti in uscita;
- In systemd-networkd, nella sezione «[Route]», è disponibile l'opzione FastOpenNoCookie per attivare il meccanismo di apertura rapida delle connessioni TCP (TFO — TCP Fast Open, RFC 7413) per specifici percorsi, insieme all'opzione TTLPropagate per configurare il TTL LSP (Label Switched Path). Nella opzione «Type» è garantito il supporto per le modalità di instradamento local, broadcast, anycast, multicast, any e xresolve;
- In systemd-networkd, nella sezione «[Network]», è offerta l'opzione DefaultRouteOnDevice per la configurazione automatica della route predefinita per un dispositivo di rete specificato;
- In systemd-networkd per i ponti di rete sono state aggiunte le opzioni ProxyARP e
ProxyARPWifi per configurare il comportamento del proxy ARP, MulticastRouter per impostare le opzioni di instradamento in modalità multicast, MulticastIGMPVersion per modificare la versione IGMP (Internet Group Management Protocol) per multicast; - In systemd-networkd, options Local, Peer, and PeerPort have been added for FooOverUDP tunnels to configure the IP addresses of the local and remote sides, as well as the network port number. For TUN tunnels, the VnetHeader option has been introduced to manage GSO (Generic Segment Offload) support.
- In systemd-networkd, the Property option has been added in the [Match] section of .network and .link files, allowing devices to be identified by their specific properties in udev.
- In systemd-networkd, the AssignToLoopback option has been added for tunnels, which controls the binding of the tunnel end to the loopback device 'lo'.
- In systemd-networkd, the activation of the IPv6 stack has been automated if it is blocked via sysctl disable_ipv6 — IPv6 is activated if IPv6 settings (static or DHCPv6) are defined for the network interface; otherwise, the already set sysctl value remains unchanged.
- In .network files, the CriticalConnection setting has been replaced with the KeepConfiguration option, offering more means to define situations ('yes', 'static', 'dhcp-on-stop', 'dhcp') in which systemd-networkd should not disturb existing connections upon startup.
- Risolta la vulnerabilità , causata dalla mancanza di controllo degli accessi all'interfaccia D-Bus di systemd-resolved. Il problema consente a un utente non privilegiato di effettuare operazioni riservate solo agli amministratori, come ad esempio modificare le impostazioni DNS e reindirizzare le richieste DNS a un server di spoofing;
- Risolta la vulnerabilità , relativa alla non attivazione di pam_systemd per sessioni non interattive, che consente di organizzare uno spoofing di sessione attiva.
Fonte: opennet.ru
