Sortie de Bottlerocket 1.7, une distribution basée sur des conteneurs isolés

La version de la distribution Linux Bottlerocket 1.7.0 a été publiée, développée avec la participation d'Amazon pour exécuter efficacement et en toute sécurité des conteneurs isolés. La boîte à outils et les composants de contrôle de la distribution sont écrits en Rust et distribués sous les licences MIT et Apache 2.0. Il prend en charge l'exécution de Bottlerocket sur les clusters Amazon ECS, VMware et AWS EKS Kubernetes, ainsi que la création de versions et d'éditions personnalisées qui permettent différents outils d'orchestration et d'exécution pour les conteneurs.

La distribution fournit une image système indivisible mise à jour de manière atomique et automatique qui inclut le noyau Linux et un environnement système minimal qui inclut uniquement les composants nécessaires à l'exécution des conteneurs. L'environnement comprend le gestionnaire de système systemd, la bibliothèque Glibc, l'outil de construction Buildroot, le chargeur de démarrage GRUB, le configurateur de réseau méchant, le runtime de conteneur isolé containerd, la plate-forme d'orchestration de conteneur Kubernetes, l'aws-iam-authenticator et l'agent Amazon ECS. .

Les outils d'orchestration de conteneurs sont fournis dans un conteneur de gestion distinct qui est activé par défaut et géré via l'API et l'agent AWS SSM. L'image de base manque d'un shell de commande, d'un serveur SSH et de langages interprétés (par exemple, pas de Python ou de Perl) - les outils d'administration et de débogage sont déplacés vers un conteneur de service séparé, qui est désactivé par défaut.

La principale différence avec des distributions similaires telles que Fedora CoreOS, CentOS/Red Hat Atomic Host est l'objectif principal de fournir une sécurité maximale dans le contexte du renforcement de la protection du système contre d'éventuelles menaces, compliquant l'exploitation des vulnérabilités dans les composants du système d'exploitation et augmentant l'isolation des conteneurs. Les conteneurs sont créés en utilisant les mécanismes habituels du noyau Linux - cgroups, namespaces et seccomp. Pour une isolation supplémentaire, la distribution utilise SELinux en mode "enforcing".

La partition racine est montée en mode lecture seule et la partition avec les paramètres /etc est montée dans tmpfs et restaurée à son état d'origine après un redémarrage. La modification directe des fichiers dans le répertoire /etc, tels que /etc/resolv.conf et /etc/containerd/config.toml, n'est pas prise en charge - pour enregistrer définitivement les paramètres, vous devez utiliser l'API ou déplacer la fonctionnalité vers des conteneurs séparés. Pour la vérification cryptographique de l'intégrité de la partition racine, le module dm-verity est utilisé, et si une tentative de modification des données au niveau du périphérique bloc est détectée, le système redémarre.

La plupart des composants système sont écrits en Rust, qui fournit des outils sécurisés en mémoire pour éviter les vulnérabilités causées par l'adressage d'une zone mémoire après sa libération, le déréférencement des pointeurs nuls et les dépassements de mémoire tampon. Lors de la construction, les modes de compilation "--enable-default-pie" et "--enable-default-ssp" sont utilisés par défaut pour activer la randomisation de l'espace d'adressage des fichiers exécutables (PIE) et la protection contre les débordements de pile via la substitution d'étiquette canary. Pour les packages écrits en C/C++, les drapeaux "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" et "-fstack-clash" sont en plus inclus -protection.

Dans la nouvelle version :

  • Lors de l'installation de packages RPM, il est possible de générer une liste de programmes au format JSON et de la monter dans le conteneur hôte en tant que fichier /var/lib/bottlerocket/inventory/application.json pour obtenir des informations sur les packages disponibles.
  • Les conteneurs « admin » et « control » ont été mis à jour.
  • Versions de package et dépendances mises à jour pour les langages Go et Rust.
  • Versions mises à jour des packages avec des programmes tiers.
  • Problèmes de configuration tmpfilesd résolus pour kmod-5.10-nvidia.
  • Lors de l'installation de tuftool, les versions de dépendances sont liées.

Source: opennet.ru

Ajouter un commentaire