systemd gestore di sistema versione 243

Dopo cinque mesi di sviluppo presentata rilascio del gestore di sistema systemd 243. Tra le innovazioni possiamo notare l'integrazione nel PID 1 di un gestore per la memoria insufficiente nel sistema, il supporto per allegare i propri programmi BPF per filtrare il traffico unitario, numerose nuove opzioni per systemd-networkd, una modalità per monitorare la larghezza di banda della rete interfacce, abilitazione per impostazione predefinita su sistemi a 64 bit numeri PID a 22 bit invece di 16 bit, transizione a una gerarchia di cgroup unificata, inclusione in systemd-network-generator.

Principali modifiche:

  • Il riconoscimento dei segnali generati dal kernel relativi alla memoria esaurita (Out-Of-Memory, OOM) è stato aggiunto al gestore PID 1 per trasferire le unità che hanno raggiunto il limite di consumo di memoria in uno stato speciale con la possibilità opzionale di forzarne la terminazione o fermarsi;
  • Per i file unit, nuovi parametri IPIngressFilterPath e
    IPEgressFilterPath, che consente di connettere programmi BPF con gestori arbitrari per filtrare i pacchetti IP in entrata e in uscita generati dai processi associati a questa unità. Le funzionalità proposte consentono di creare una sorta di firewall per i servizi systemd. Esempio di scrittura un semplice filtro di rete basato su BPF;

  • All'utility systemctl è stato aggiunto il comando “clean” per eliminare la cache, i file runtime, le informazioni sullo stato e le directory dei log;
  • systemd-networkd aggiunge il supporto per le interfacce di rete MACsec, nlmon, IPVTAP e Xfrm;
  • systemd-networkd implementa la configurazione separata degli stack DHCPv4 e DHCPv6 tramite le sezioni "[DHCPv4]" e "[DHCPv6]" nel file di configurazione. Aggiunta l'opzione RoutesToDNS per aggiungere un percorso separato al server DNS specificato nei parametri ricevuti dal server DHCP (in modo che il traffico al DNS venga inviato attraverso lo stesso collegamento del percorso principale ricevuto dal DHCP). Sono state aggiunte nuove opzioni per DHCPv4: MaxAttempts - numero massimo di richieste per ottenere un indirizzo, BlackList - lista nera di server DHCP, SendRelease - abilita l'invio di messaggi DHCP RELEASE al termine della sessione;
  • Sono stati aggiunti nuovi comandi all'utilità systemd-analyze:
    • "systemd-analyze timestamp" - analisi e conversione del tempo;
    • “systemd-analyze timespan” - analisi e conversione di periodi 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" - Elenca tutti i percorsi dei file per le unità e gli alias delle unità.
  • Opzioni SuccessExitStatus, RestartPreventExitStatus e
    RestartForceExitStatus ora supporta non solo i codici restituiti numerici, ma anche i relativi identificatori di testo (ad esempio, "DATAERR"). È possibile visualizzare l'elenco dei codici assegnati agli identificatori utilizzando il comando “sytemd-analyze exit-status”;

  • All'utility networkctl è stato aggiunto il comando “delete” per eliminare i dispositivi di rete virtuale, nonché l'opzione “—stats” per visualizzare le statistiche dei dispositivi;
  • Le impostazioni SpeedMeter e SpeedMeterIntervalSec sono state aggiunte a networkd.conf per misurare periodicamente il throughput delle interfacce di rete. Le statistiche ottenute dai risultati della misurazione possono essere visualizzate nell'output del comando 'networkctl status';
  • Aggiunta una nuova utility systemd-network-generator per la generazione di file
    .network, .netdev e .link basati sulle impostazioni IP passate quando avviate 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 per impostazione predefinita su 4194304 (PID a 22 bit anziché a 16 bit), che riduce la probabilità di collisioni durante l'assegnazione dei PID, aumenta il limite sul numero di simultanei processi in esecuzione e ha un impatto positivo sulla sicurezza. La modifica potrebbe potenzialmente portare a problemi di compatibilità, ma tali problemi non sono ancora stati segnalati nella pratica;
  • Per impostazione predefinita, la fase di creazione passa alla gerarchia unificata cgroups-v2 (“-Ddefault-hierarchy=unified”). In precedenza, l'impostazione predefinita era la modalità ibrida (“-Ddefault-hierarchy=hybrid”);
  • È stato modificato il comportamento del filtro delle chiamate di sistema (SystemCallFilter) che, in caso di chiamata di sistema vietata, ora termina l'intero processo e non i singoli thread, poiché la chiusura di singoli thread potrebbe portare a problemi imprevedibili. Le modifiche si applicano solo se hai il kernel Linux 4.14+ e libseccomp 2.4.0+;
  • Ai programmi non privilegiati viene data la possibilità di inviare pacchetti ICMP Echo (ping) impostando il sysctl "net.ipv4.ping_group_range" per l'intera gamma di gruppi (per tutti i processi);
  • Per velocizzare il processo di compilazione, la generazione dei manuali man è stata interrotta per impostazione predefinita (per creare la documentazione completa, è necessario utilizzare l'opzione “-Dman=true” o “-Dhtml=true” per i manuali in formato html). Per facilitare la visualizzazione della documentazione, sono inclusi due script: build/man/man e build/man/html per generare e visualizzare in anteprima i manuali di interesse;
  • Per elaborare i nomi a dominio con caratteri degli alfabeti nazionali viene utilizzata di default la libreria libidn2 (per restituire libidn utilizzare l'opzione “-Dlibidn=true”);
  • Il supporto per il file eseguibile /usr/sbin/halt.local, che forniva funzionalità che non erano ampiamente distribuite nelle distribuzioni, è stato interrotto. Per organizzare l'avvio dei comandi allo spegnimento, si consiglia di utilizzare gli script in /usr/lib/systemd/system-shutdown/ o definire una nuova unità che dipenda da final.target;
  • All'ultima fase dello spegnimento, systemd ora aumenta automaticamente il livello di registro nel sysctl "kernel.printk", che risolve il problema con la visualizzazione nel registro degli eventi che si sono verificati nelle fasi successive dello spegnimento, quando i normali demoni di registrazione hanno già completato ;
  • In journalctl e altre utilità che visualizzano i registri, gli avvisi sono evidenziati in giallo e i record di audit sono evidenziati in blu per evidenziarli visivamente dalla massa;
  • Nella variabile d'ambiente $PATH, il percorso di bin/ ora viene prima del percorso di sbin/, cioè se ci sono nomi identici di file eseguibili in entrambe le directory, verrà eseguito il file da bin/;
  • systemd-logind fornisce una chiamata SetBrightness() per modificare in modo sicuro la luminosità dello schermo in base alla sessione;
  • Al comando “udevadm info” è stato aggiunto il flag “--wait-for-initialization” per attendere l'inizializzazione del dispositivo;
  • Durante l'avvio del sistema, il gestore PID 1 ora visualizza i nomi delle unità invece di una riga con la loro descrizione. Per ripristinare il comportamento precedente, è possibile utilizzare l'opzione StatusUnitFormat in /etc/systemd/system.conf o l'opzione del kernel systemd.status_unit_format;
  • Aggiunta l'opzione KExecWatchdogSec a /etc/systemd/system.conf per il watchdog PID 1, che specifica il timeout per il riavvio utilizzando kexec. Vecchia ambientazione
    ShutdownWatchdogSec è stato rinominato RebootWatchdogSec e definisce un timeout per i processi durante l'arresto o il normale riavvio;

  • È stata aggiunta una nuova opzione per i servizi ExecCondition, che consente di specificare i comandi che verranno eseguiti prima di ExecStartPre. In base al codice di errore restituito dal comando, viene presa la decisione sull'ulteriore esecuzione dell'unità: se viene restituito il codice 0, l'avvio dell'unità continua, se da 1 a 254 termina silenziosamente senza flag di fallimento, se 255 termina con un flag di fallimento;
  • Aggiunto un nuovo servizio systemd-pstore.service per estrarre i dati da sys/fs/pstore/ e salvarli su /var/lib/pstore per ulteriori analisi;
  • Sono stati aggiunti nuovi comandi all'utility timedatectl per la configurazione dei parametri NTP per systemd-timesyncd in relazione alle interfacce di rete;
  • Il comando "localectl list-locales" non visualizza più versioni locali diverse da UTF-8;
  • Garantisce che gli errori di assegnazione delle variabili nei file sysctl.d/ vengano ignorati se il nome della variabile inizia con il carattere "-";
  • Servizio systemd-random-seed.service è ora interamente responsabile dell'inizializzazione del pool di entropia del generatore di numeri pseudocasuali del kernel Linux. I servizi che richiedono un /dev/urandom inizializzato correttamente dovrebbero essere avviati dopo systemd-random-seed.service;
  • Il boot loader systemd-boot fornisce la capacità opzionale di supportare file seme con sequenza casuale nella partizione di sistema EFI (ESP);
  • Sono stati aggiunti nuovi comandi all'utilità bootctl: “bootctl random-seed” per generare un file seed nell'ESP e “bootctl is-installed” per verificare l'installazione del boot loader systemd-boot. bootctl è stato inoltre modificato per visualizzare avvisi sulla configurazione errata delle voci di avvio (ad esempio, quando l'immagine del kernel viene eliminata, ma viene lasciata la voce per caricarla);
  • Fornisce la selezione automatica della partizione di swap quando il sistema entra in modalità di sospensione. La partizione viene selezionata in base alla priorità configurata per essa e, in caso di priorità identiche, alla quantità di spazio libero;
  • Aggiunta l'opzione keyfile-timeout a /etc/crypttab per impostare quanto tempo attenderà il dispositivo con la chiave di crittografia prima di richiedere una password per accedere alla partizione crittografata;
  • Aggiunta l'opzione IOWeight per impostare il peso I/O per lo scheduler BFQ;
  • systemd-resolved ha aggiunto la modalità 'rigorosa' per DNS-over-TLS e ha implementato la possibilità di memorizzare nella cache solo le risposte DNS positive ("Cache no-negative" in risolto.conf);
  • Per VXLAN, systemd-networkd ha aggiunto un'opzione GenericProtocolExtension per abilitare le estensioni del protocollo VXLAN. Per VXLAN e GENEVE è stata aggiunta l'opzione IPDoNotFragment per impostare il flag di divieto di frammentazione per i pacchetti in uscita;
  • In systemd-networkd, nella sezione “[Route]”, è apparsa l'opzione FastOpenNoCookie che abilita il meccanismo di apertura rapida delle connessioni TCP (TFO - TCP Fast Open, RFC 7413) rispetto alle singole rotte, nonché l'opzione TTLPropagate per configurare TTL LSP (Label Switched Path). L'opzione "Tipo" fornisce il supporto per le modalità di routing locale, broadcast, anycast, multicast, any e xresolve;
  • Systemd-networkd offre un'opzione DefaultRouteOnDevice nella sezione "[Rete]" per configurare automaticamente un percorso predefinito per un determinato dispositivo di rete;
  • Systemd-networkd ha aggiunto ProxyARP e
    ProxyARPWifi per impostare il comportamento ARP del proxy, MulticastRouter per impostare i parametri di routing in modalità multicast, MulticastIGMPVersion per modificare la versione IGMP (Internet Group Management Protocol) per multicast;

  • Systemd-networkd ha aggiunto le opzioni Locale, Peer e PeerPort per i tunnel FooOverUDP per configurare gli indirizzi IP locali e remoti, nonché il numero di porta di rete. Per i tunnel TUN è stata aggiunta l'opzione VnetHeader per configurare il supporto GSO (Generic Segment Offload);
  • In systemd-networkd, nei file .network e .link nella sezione [Match], è apparsa un'opzione Proprietà, che consente di identificare i dispositivi in ​​base alle loro proprietà specifiche in udev;
  • In systemd-networkd è stata aggiunta un'opzione AssignToLoopback per i tunnel, che controlla se la fine del tunnel è assegnata al dispositivo di loopback “lo”;
  • systemd-networkd attiva automaticamente lo stack IPv6 se è bloccato tramite sysctl aware_ipv6 - IPv6 viene attivato se le impostazioni IPv6 (statiche o DHCPv6) sono definite per l'interfaccia di rete, altrimenti il ​​valore sysctl già impostato non cambia;
  • Nei file .network, l'impostazione CriticalConnection è stata sostituita dall'opzione KeepConfiguration, che fornisce più mezzi per definire le situazioni (“sì”, “statico”, “dhcp-on-stop”, “dhcp”) in cui systemd-networkd dovrebbe non toccare le connessioni esistenti all'avvio;
  • Vulnerabilità risolta CVE-2019-15718, causato dalla mancanza di controllo dell'accesso all'interfaccia D-Bus risolto dal sistema. Il problema consente a un utente non privilegiato di eseguire operazioni disponibili solo agli amministratori, come modificare le impostazioni DNS e indirizzare le query DNS a un server non autorizzato;
  • Vulnerabilità risolta CVE-2019-9619relativo alla non abilitazione di pam_systemd per sessioni non interattive, che consente lo spoofing della sessione attiva.

Fonte: opennet.ru

Aggiungi un commento