gestionnaire de système systemd version 243

Après cinq mois de développement soumis version du gestionnaire de système systemd 243. Parmi les innovations, on peut noter l'intégration dans PID 1 d'un gestionnaire de mémoire faible dans le système, la prise en charge de l'attachement de vos propres programmes BPF pour filtrer le trafic unitaire, de nombreuses nouvelles options pour systemd-networkd, un mode de surveillance de la bande passante du réseau interfaces, permettant par défaut sur les systèmes 64 bits des numéros PID 22 bits au lieu de 16 bits, transition vers une hiérarchie de groupes de contrôle unifiée, inclusion dans systemd-network-generator.

Les principaux changements:

  • La reconnaissance des signaux générés par le noyau concernant le manque de mémoire (Out-Of-Memory, MOO) a été ajoutée au gestionnaire PID 1 pour transférer les unités qui ont atteint la limite de consommation de mémoire dans un état spécial avec la possibilité facultative de les forcer à se terminer. ou arrêter;
  • Pour les fichiers unitaires, nouveaux paramètres IPIngressFilterPath et
    IPEgressFilterPath, qui vous permet de connecter des programmes BPF avec des gestionnaires arbitraires pour filtrer les paquets IP entrants et sortants générés par les processus associés à cette unité. Les fonctionnalités proposées permettent de créer une sorte de pare-feu pour les services systemd. Exemple d'écriture un simple filtre réseau basé sur BPF ;

  • La commande « clean » a été ajoutée à l'utilitaire systemctl pour supprimer le cache, les fichiers d'exécution, les informations d'état et les répertoires de journaux ;
  • systemd-networkd ajoute la prise en charge des interfaces réseau MACsec, nlmon, IPVTAP et Xfrm ;
  • systemd-networkd implémente une configuration séparée des piles DHCPv4 et DHCPv6 via les sections « [DHCPv4] » et « [DHCPv6] » dans le fichier de configuration. Ajout de l'option RoutesToDNS pour ajouter une route distincte vers le serveur DNS spécifié dans les paramètres reçus du serveur DHCP (afin que le trafic vers le DNS soit envoyé via le même lien que la route principale reçue du DHCP). De nouvelles options ont été ajoutées pour DHCPv4 : MaxAttempts - nombre maximum de requêtes pour obtenir une adresse, BlackList - liste noire des serveurs DHCP, SendRelease - permet d'envoyer des messages DHCP RELEASE à la fin de la session ;
  • De nouvelles commandes ont été ajoutées à l'utilitaire systemd-analyze :
    • « systemd-analyze timestamp » - analyse et conversion du temps ;
    • « systemd-analyze timespan » - analyse et conversion des périodes ;
    • «condition systemd-analyze» - analyse et test des expressions ConditionXYZ ;
    • « systemd-analyze exit-status » - analyse et conversion des codes de sortie des nombres en noms et vice versa ;
    • "systemd-analyze unit-files" - Répertorie tous les chemins de fichiers pour les unités et les alias d'unité.
  • Options SuccessExitStatus, RestartPreventExitStatus et
    RestartForceExitStatus prend désormais en charge non seulement les codes de retour numériques, mais également leurs identifiants textuels (par exemple, « DATAERR »). Vous pouvez consulter la liste des codes attribués aux identifiants à l'aide de la commande « systemd-analyze exit-status » ;

  • La commande « delete » a été ajoutée à l'utilitaire networkctl pour supprimer les périphériques réseau virtuels, ainsi que l'option « —stats » pour afficher les statistiques des périphériques ;
  • Les paramètres SpeedMeter et SpeedMeterIntervalSec ont été ajoutés à networkd.conf pour mesurer périodiquement le débit des interfaces réseau. Les statistiques obtenues à partir des résultats de mesure peuvent être visualisées dans la sortie de la commande « networkctl status » ;
  • Ajout d'un nouvel utilitaire systemd-network-generator pour générer des fichiers
    .network, .netdev et .link basés sur les paramètres IP transmis lors du lancement via la ligne de commande du noyau Linux au format de paramètres Dracut ;

  • La valeur sysctl "kernel.pid_max" sur les systèmes 64 bits est désormais définie par défaut sur 4194304 (PID 22 bits au lieu de 16 bits), ce qui réduit le risque de collisions lors de l'attribution de PID et augmente la limite du nombre de PID simultanés. processus en cours d’exécution et a un impact positif sur la sécurité. Le changement pourrait potentiellement entraîner des problèmes de compatibilité, mais de tels problèmes n'ont pas encore été signalés dans la pratique ;
  • Par défaut, l'étape de construction passe à la hiérarchie unifiée cgroups-v2 (« -Ddefault-hierarchy=unified »). Auparavant, la valeur par défaut était le mode hybride (« -Ddefault-hierarchy=hybrid ») ;
  • Le comportement du filtre d'appel système (SystemCallFilter) a été modifié, ce qui, dans le cas d'un appel système interdit, met désormais fin à l'ensemble du processus, plutôt qu'à des threads individuels, car la terminaison de threads individuels pourrait entraîner des problèmes imprévisibles. Les modifications ne s'appliquent que si vous disposez du noyau Linux 4.14+ et de libseccomp 2.4.0+ ;
  • Les programmes non privilégiés ont la possibilité d'envoyer des paquets ICMP Echo (ping) en définissant le sysctl "net.ipv4.ping_group_range" pour toute la gamme de groupes (pour tous les processus) ;
  • Pour accélérer le processus de construction, la génération des manuels man a été arrêtée par défaut (pour construire une documentation complète, vous devez utiliser l'option « -Dman=true » ou « -Dhtml=true » pour les manuels au format html). Pour faciliter la visualisation de la documentation, deux scripts sont inclus : build/man/man et build/man/html pour générer et prévisualiser les manuels d'intérêt ;
  • Pour traiter les noms de domaine avec des caractères des alphabets nationaux, la bibliothèque libidn2 est utilisée par défaut (pour renvoyer libidn, utilisez l'option « -Dlibidn=true ») ;
  • La prise en charge du fichier exécutable /usr/sbin/halt.local, qui fournissait des fonctionnalités qui n'étaient pas largement distribuées dans les distributions, a été interrompue. Pour organiser le lancement des commandes lors de l'arrêt, il est recommandé d'utiliser des scripts dans /usr/lib/systemd/system-shutdown/ ou de définir une nouvelle unité qui dépend de final.target ;
  • Lors de la dernière étape de l'arrêt, systemd augmente désormais automatiquement le niveau de journalisation dans le sysctl « kernel.printk », ce qui résout le problème d'affichage dans le journal des événements survenus dans les étapes ultérieures de l'arrêt, lorsque les démons de journalisation réguliers sont déjà terminés. ;
  • Dans journalctl et d'autres utilitaires affichant des journaux, les avertissements sont surlignés en jaune et les enregistrements d'audit sont surlignés en bleu pour les distinguer visuellement de la foule ;
  • Dans la variable d'environnement $PATH, le chemin vers bin/ vient désormais avant le chemin vers sbin/, c'est-à-dire s'il y a des noms identiques de fichiers exécutables dans les deux répertoires, le fichier de bin/ sera exécuté ;
  • systemd-logind fournit un appel SetBrightness() pour modifier en toute sécurité la luminosité de l'écran session par session ;
  • L'indicateur « --wait-for-initialization » a été ajouté à la commande « udevadm info » pour attendre l'initialisation du périphérique ;
  • Lors du démarrage du système, le gestionnaire PID 1 affiche désormais les noms des unités au lieu d'une ligne avec leur description. Pour revenir au comportement passé, vous pouvez utiliser l'option StatusUnitFormat dans /etc/systemd/system.conf ou l'option du noyau systemd.status_unit_format ;
  • Ajout de l'option KExecWatchdogSec à /etc/systemd/system.conf pour le watchdog PID 1, qui spécifie le délai d'attente pour le redémarrage à l'aide de kexec. Cadre ancien
    ShutdownWatchdogSec a été renommé RebootWatchdogSec et définit un délai d'attente pour les tâches lors de l'arrêt ou du redémarrage normal ;

  • Une nouvelle option a été ajoutée pour les services Condition d'exécution, qui vous permet de spécifier les commandes qui seront exécutées avant ExecStartPre. Sur la base du code d'erreur renvoyé par la commande, une décision est prise quant à la poursuite de l'exécution de l'unité - si le code 0 est renvoyé, le lancement de l'unité continue, si de 1 à 254 il se termine silencieusement sans indicateur d'échec, si 255 il se termine par un indicateur d'échec ;
  • Ajout d'un nouveau service systemd-pstore.service pour extraire les données de sys/fs/pstore/ et les enregistrer dans /var/lib/pstore pour une analyse plus approfondie ;
  • De nouvelles commandes ont été ajoutées à l'utilitaire timedatectl pour configurer les paramètres NTP pour systemd-timesyncd par rapport aux interfaces réseau ;
  • La commande « localectl list-locales » n'affiche plus les locales autres que UTF-8 ;
  • Garantit que les erreurs d'affectation de variable dans les fichiers sysctl.d/ sont ignorées si le nom de la variable commence par le caractère « - » ;
  • Service systemd-random-seed.service est désormais entièrement responsable de l'initialisation du pool d'entropie du générateur de nombres pseudo-aléatoires du noyau Linux. Les services qui nécessitent un /dev/urandom correctement initialisé doivent être démarrés après systemd-random-seed.service ;
  • Le chargeur de démarrage systemd-boot offre la possibilité facultative de prendre en charge fichier de départ avec séquence aléatoire dans la partition système EFI (ESP) ;
  • De nouvelles commandes ont été ajoutées à l'utilitaire bootctl : « bootctl random-seed » pour générer un fichier seed dans l'ESP et « bootctl is-installed » pour vérifier l'installation du chargeur de démarrage systemd-boot. bootctl a également été ajusté pour afficher des avertissements concernant une configuration incorrecte des entrées de démarrage (par exemple, lorsque l'image du noyau est supprimée, mais que l'entrée pour la charger est laissée) ;
  • Fournit une sélection automatique de la partition d'échange lorsque le système passe en mode veille. La partition est sélectionnée en fonction de la priorité configurée pour elle, et en cas de priorités identiques, de la quantité d'espace libre ;
  • Ajout de l'option keyfile-timeout à /etc/crypttab pour définir combien de temps le périphérique avec la clé de cryptage attendra avant de demander un mot de passe pour accéder à la partition cryptée ;
  • Ajout de l'option IOWeight pour définir le poids des E/S pour le planificateur BFQ ;
  • systemd-resolved a ajouté le mode « strict » pour DNS-over-TLS et implémenté la possibilité de mettre en cache uniquement les réponses DNS positives (« Cache no-negative » dans wanted.conf) ;
  • Pour VXLAN, systemd-networkd a ajouté une option GenericProtocolExtension pour activer les extensions de protocole VXLAN. Pour VXLAN et GENEVE, l'option IPDoNotFragment a été ajoutée pour définir l'indicateur d'interdiction de fragmentation pour les paquets sortants ;
  • Dans systemd-networkd, dans la section « [Route] », l'option FastOpenNoCookie est apparue pour activer le mécanisme d'ouverture rapide des connexions TCP (TFO - TCP Fast Open, RFC 7413) par rapport aux routes individuelles, ainsi que l'option TTLPropagate pour configurer TTL LSP (Label Switched Path). L'option « Type » prend en charge les modes de routage local, diffusion, anycast, multicast, any et xresolve ;
  • Systemd-networkd propose une option DefaultRouteOnDevice dans la section « [Réseau] » pour configurer automatiquement une route par défaut pour un périphérique réseau donné ;
  • Systemd-networkd a ajouté ProxyARP et
    ProxyARPWifi pour définir le comportement du proxy ARP, MulticastRouter pour définir les paramètres de routage en mode multicast, MulticastIGMPVersion pour changer la version IGMP (Internet Group Management Protocol) pour le multicast ;

  • Systemd-networkd a ajouté les options Local, Peer et PeerPort pour les tunnels FooOverUDP afin de configurer les adresses IP locales et distantes, ainsi que le numéro de port réseau. Pour les tunnels TUN, l'option VnetHeader a été ajoutée pour configurer la prise en charge GSO (Generic Segment Offload) ;
  • Dans systemd-networkd, dans les fichiers .network et .link de la section [Match], une option Property est apparue, qui permet d'identifier les périphériques par leurs propriétés spécifiques dans udev ;
  • Dans systemd-networkd, une option AssignToLoopback a été ajoutée pour les tunnels, qui contrôle si la fin du tunnel est attribuée au périphérique de bouclage « lo » ;
  • systemd-networkd active automatiquement la pile IPv6 si elle est bloquée via sysctl Disable_ipv6 - IPv6 est activé si les paramètres IPv6 (statiques ou DHCPv6) sont définis pour l'interface réseau, sinon la valeur sysctl déjà définie ne change pas ;
  • Dans les fichiers .network, le paramètre CriticalConnection a été remplacé par l'option KeepConfiguration, qui fournit davantage de moyens pour définir les situations (« oui », « statique », « DHCP-on-stop », « DHCP ») dans lesquelles systemd-networkd doit ne touchez pas les connexions existantes au démarrage ;
  • Vulnérabilité corrigée CVE-2019-15718, causé par le manque de contrôle d'accès à l'interface D-Bus résolu par le système. Le problème permet à un utilisateur non privilégié d'effectuer des opérations qui ne sont disponibles que pour les administrateurs, telles que la modification des paramètres DNS et l'envoi de requêtes DNS vers un serveur malveillant ;
  • Vulnérabilité corrigée CVE-2019-9619lié à la non-activation de pam_systemd pour les sessions non interactives, ce qui permet l'usurpation d'identité de la session active.

Source: opennet.ru

Ajouter un commentaire