Die neue Version des Linux-Distribution Bottlerocket 1.3.0 wurde veröffentlicht. Diese wird in Zusammenarbeit mit Amazon entwickelt und dient dem effektiven und sicheren Betrieb isolierter Container. Die Werkzeuge und Verwaltungskomponenten der Distribution sind in Rust geschrieben und stehen unter den Lizenzen MIT und Apache 2.0 zur VerfĂŒgung. Bottlerocket unterstĂŒtzt EinsĂ€tze in Amazon ECS-Clustern, VMware sowie AWS EKS Kubernetes und ermöglicht die Erstellung individueller Builds und Editierungen, die den Einsatz verschiedener Orchestrierungswerkzeuge und Runtime-Umgebungen fĂŒr Container zulassen.
Die Distribution bietet ein atomar und automatisch aktualisierbares, unteilbares System-Image, das den Linux-Kernel und eine minimale Systemumgebung umfasst, die nur die erforderlichen Komponenten zum Starten von Containern enthĂ€lt. In der Umgebung kommen der Systemmanager systemd, die Glibc-Bibliothek, das Buildroot-Bausystem, der Bootloader GRUB, der Netzwerk-Configurator wicked, die Runtime fĂŒr isolierte Container containerd, die Container-Orchestrierungsplattform Kubernetes, der Authenticator aws-iam-authenticator und der Agent von Amazon ECS zum Einsatz.
Container-Orchestrierungswerkzeuge werden in einem separaten Management-Container bereitgestellt, der standardmĂ€Ăig aktiviert ist und ĂŒber die API und AWS SSM Agent verwaltet wird. Im Basis-Image fehlt eine Kommandozeilen-Schnittstelle. der Server SSH und interpretierte Sprachen (z. B. kein Python oder Perl) â Administrations- und Debugging-Tools sind in einen separaten Dienstcontainer ausgelagert, der standardmĂ€Ăig deaktiviert ist.
Ein wesentliches Unterscheidungsmerkmal zu Ă€hnlichen Distributionen wie Fedora CoreOS, CentOS/Red Hat Atomic Host ist der primĂ€re Fokus auf die Bereitstellung maximaler Sicherheit im Hinblick auf die VerstĂ€rkung des Schutzes des Systems gegen potenzielle Bedrohungen, die Erschwernis der Ausnutzung von Schwachstellen in Betriebssystemkomponenten sowie die Erhöhung der Isolation von Containern. Container werden mithilfe der integrierten Mechanismen des Linux-Kernels â cgroups, Namespaces und seccomp â erstellt. FĂŒr zusĂ€tzliche Isolation wird in der Distribution SELinux im Modus 'enforcing' eingesetzt.
Das Root-Verzeichnis wird im Nur-Lese-Modus gemountet, wĂ€hrend das Verzeichnis mit den Einstellungen "/etc" in tmpfs gemountet wird und nach einem Neustart den ursprĂŒnglichen Zustand wiederherstellt. Direkte Ănderungen an Dateien im Verzeichnis "/etc", wie z.B. "/etc/resolv.conf" und "/etc/containerd/config.toml", werden nicht unterstĂŒtzt â fĂŒr die dauerhafte Speicherung von Einstellungen sollte die API verwendet oder die FunktionalitĂ€t in separate Container ausgelagert werden. FĂŒr die kryptographische Verifizierung der IntegritĂ€t des Root-Verzeichnisses wird das dm-verity-Modul eingesetzt, und im Falle eines versuchten Datenmodifikationen auf BlockgerĂ€tebene wird das System neu gestartet.
Die meisten Systemkomponenten sind in der Programmiersprache Rust geschrieben, die sicherere Speicherverwaltungsfunktionen bietet, um Schwachstellen wie den Zugriff auf den freigegebenen Speicher, das Dereferenzieren von Nullzeigern und BufferĂŒberlĂ€ufe zu vermeiden. StandardmĂ€Ăig werden die Kompilierungsparameter ââenable-default-pieâ und ââenable-default-sspâ verwendet, um die Adressraumrandomisierung fĂŒr ausfĂŒhrbare Dateien (PIE) und den Schutz vor StackĂŒberlĂ€ufen durch das Platzieren von Canary-Tags zu aktivieren. FĂŒr in C/C++ geschriebene Pakete werden zusĂ€tzlich die Flags â-Wallâ, â-Werror=format-securityâ, â-Wp,-D_FORTIFY_SOURCE=2â, â-Wp,-D_GLIBCXX_ASSERTIONSâ und â-fstack-clash-protectionâ aktiviert.
In der neuen Version:
- SicherheitsanfĂ€lligkeiten im docker-Toolkit und im runtime containerd (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103) wurden behoben. Diese hingen mit einer fehlerhaften Berechtigungszuweisung zusammen, die es unprivilegierten Benutzern ermöglichte, ĂŒber das Basisverzeichnis hinauszugehen und externe Programme auszufĂŒhren.
- In kubelet und pluto wurde eine neue Funktion hinzugefĂŒgt. IPv6-UnterstĂŒtzung.
- Es besteht die Möglichkeit, den Container nach einer Ănderung seiner Einstellungen neu zu starten.
- Das Paket eni-max-pods unterstĂŒtzt jetzt Amazon EC2 M6i-Instanzen.
- In open-vm-tools wurde die UnterstĂŒtzung fĂŒr GerĂ€tefilter hinzugefĂŒgt, die auf dem Cilium-Toolkit basiert.
- Ein hybrider Bootmodus fĂŒr die x86_64-Plattform wurde implementiert, der sowohl EFI- als auch BIOS-UnterstĂŒtzung bietet.
- Die Versionen der Pakete und AbhĂ€ngigkeiten fĂŒr die Sprache Rust wurden aktualisiert.
- Die UnterstĂŒtzung fĂŒr die Distribution aws-k8s-1.17 auf der Basis von Kubernetes 1.17 wurde eingestellt. Es wird empfohlen, die Version aws-k8s-1.21 mit UnterstĂŒtzung fĂŒr Kubernetes 1.21 zu verwenden. In den k8s-Versionen werden die Einstellungen cgroup runtime.slice und system.slice verwendet.
Quelle: opennet.ru
