Die Veröffentlichung des Linux-Distribution Bottlerocket 1.2.0 ist verfĂŒgbar, das in Zusammenarbeit mit Amazon entwickelt wurde, um isolierte Container effizient und sicher zu starten. Die Tools und Verwaltungskomponenten der Distribution sind in Rust geschrieben und unter den Lizenzen MIT und Apache 2.0 verfĂŒgbar. Bottlerocket kann in Amazon ECS-, VMware- und AWS EKS-Kubernetes-Clustern ausgefĂŒhrt werden und ermöglicht die Erstellung beliebiger Builds und Editionen, die verschiedene Orchestrierungstools und Laufzeitumgebungen fĂŒr Container implementieren.
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:
- UnterstĂŒtzung fĂŒr das Spiegeln von Container-Image-Registern hinzugefĂŒgt.
- UnterstĂŒtzung fĂŒr selbstsignierte Zertifikate hinzugefĂŒgt.
- Ein Parameter zur Konfiguration des Hostnamens hinzugefĂŒgt.
- Die Version des standardmĂ€Ăig angebotenen Verwaltungscontainers wurde aktualisiert.
- Die Einstellungen topologyManagerPolicy und topologyManagerScope fĂŒr kubelet wurden hinzugefĂŒgt.
- UnterstĂŒtzung fĂŒr die Komprimierung des Kernels mit dem Algorithmus zstd hinzugefĂŒgt.
- Die Möglichkeit, in VMware zu booten, wurde bereitgestellt. virtuellen Maschinen im OVA-Format (Open Virtualization Format).
- Die Variante aws-k8s-1.21 wurde aktualisiert, um Kubernetes 1.21 zu unterstĂŒtzen. Die UnterstĂŒtzung fĂŒr aws-k8s-1.16 wurde eingestellt.
- Die Versionen der Pakete und AbhĂ€ngigkeiten fĂŒr die Sprache Rust wurden aktualisiert.
Quelle: opennet.ru
