Veröffentlichung von Bottlerocket 1.3, einer Distribution, die auf isolierten Containern basiert

Das Release der Linux-Distribution Bottlerocket 1.3.0 wurde veröffentlicht, die unter Beteiligung von Amazon für den effizienten und sicheren Start isolierter Container entwickelt wurde. Die Tools und Steuerungskomponenten der Distribution sind in Rust geschrieben und werden unter den MIT- und Apache 2.0-Lizenzen vertrieben. Es unterstützt die Ausführung von Bottlerocket auf Amazon ECS-, VMware- und AWS EKS Kubernetes-Clustern sowie die Erstellung benutzerdefinierter Builds und Editionen, die die Verwendung verschiedener Orchestrierungs- und Laufzeittools für Container ermöglichen.

Die Distribution stellt ein atomar und automatisch aktualisiertes, unteilbares Systemabbild bereit, das den Linux-Kernel und eine minimale Systemumgebung enthält, einschließlich nur der Komponenten, die zum Ausführen von Containern erforderlich sind. Die Umgebung umfasst den systemd-Systemmanager, die Glibc-Bibliothek, das Buildroot-Build-Tool, den GRUB-Bootloader, den Wicked Network Configurator, die Containerd-Laufzeit für isolierte Container, die Kubernetes-Container-Orchestrierungsplattform, den aws-iam-authenticator und Amazon ECS-Agent.

Container-Orchestrierungstools werden in einem separaten Verwaltungscontainer geliefert, der standardmäßig aktiviert ist und über die API und den AWS SSM-Agenten verwaltet wird. Dem Basis-Image fehlen eine Befehlsshell, ein SSH-Server und interpretierte Sprachen (z. B. kein Python oder Perl) – Verwaltungstools und Debugging-Tools werden in einem separaten Service-Container platziert, der standardmäßig deaktiviert ist.

Der Hauptunterschied zu ähnlichen Distributionen wie Fedora CoreOS, CentOS/Red Hat Atomic Host ist der primäre Fokus auf die Bereitstellung maximaler Sicherheit im Zusammenhang mit der Stärkung des Systemschutzes vor möglichen Bedrohungen, der Erschwerung der Ausnutzung von Schwachstellen in Betriebssystemkomponenten und der Erhöhung der Containerisolation . Container werden mit Standard-Linux-Kernel-Mechanismen erstellt – cgroups, Namespaces und seccomp. Für zusätzliche Isolation verwendet die Distribution SELinux im „Enforcing“-Modus.

Die Root-Partition wird schreibgeschützt gemountet, und die /etc-Einstellungspartition wird in tmpfs gemountet und nach einem Neustart in ihren ursprünglichen Zustand zurückversetzt. Die direkte Änderung von Dateien im Verzeichnis /etc, wie z. B. /etc/resolv.conf und /etc/containerd/config.toml, wird nicht unterstützt. Um Einstellungen dauerhaft zu speichern, müssen Sie die API verwenden oder die Funktionalität in separate Container verschieben. Das dm-verity-Modul wird verwendet, um die Integrität der Root-Partition kryptografisch zu überprüfen. Wenn ein Versuch erkannt wird, Daten auf Blockgeräteebene zu ändern, wird das System neu gestartet.

Die meisten Systemkomponenten sind in Rust geschrieben, das speichersichere Funktionen bietet, um Schwachstellen zu vermeiden, die durch After-Free-Speicherzugriffe, Nullzeiger-Dereferenzierungen und Pufferüberläufe verursacht werden. Beim Erstellen werden standardmäßig die Kompilierungsmodi „-enable-default-pie“ und „-enable-default-ssp“ verwendet, um die Randomisierung des ausführbaren Dateiadressraums (PIE) und den Schutz vor Stapelüberläufen durch Canary-Substitution zu ermöglichen. Für in C/C++ geschriebene Pakete gelten zusätzlich die Flags „-Wall“, „-Werror=format-security“, „-Wp,-D_FORTIFY_SOURCE=2“, „-Wp,-D_GLIBCXX_ASSERTIONS“ und „-fstack-clash“. aktiviert -Schutz".

In der neuen Version:

  • Schwachstellen in Docker- und Runtime-Containerd-Tools (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103) im Zusammenhang mit falscher Einstellung von Zugriffsrechten behoben, die es unprivilegierten Benutzern ermöglichten, über die Basis hinauszugehen Verzeichnis öffnen und externe Programme ausführen.
  • Kubelet und Pluto wurden um IPv6-Unterstützung erweitert.
  • Es ist möglich, den Container neu zu starten, nachdem seine Einstellungen geändert wurden.
  • Dem Paket eni-max-pods wurde Unterstützung für Amazon EC2 M6i-Instanzen hinzugefügt.
  • Open-vm-tools hat Unterstützung für Gerätefilter hinzugefügt, die auf dem Cilium-Toolkit basieren.
  • Für die x86_64-Plattform ist ein Hybrid-Boot-Modus implementiert (mit Unterstützung für EFI und BIOS).
  • Aktualisierte Paketversionen und Abhängigkeiten für die Rust-Sprache.
  • Der Support für die Distributionsvariante aws-k8s-1.17 basierend auf Kubernetes 1.17 wurde eingestellt. Es wird empfohlen, die Version aws-k8s-1.21 mit Unterstützung für Kubernetes 1.21 zu verwenden. Die k8s-Varianten verwenden die cgroup-Einstellungen runtime.slice und system.slice.

Source: opennet.ru

Kommentar hinzufügen