Veröffentlichung von Bottlerocket 1.1, einer Distribution basierend auf isolierten Containern

Die Version 1.1.0 der Linux-Distribution Bottlerocket ist verfĂŒgbar, die mit UnterstĂŒtzung von Amazon entwickelt wurde, um isolierte Container effizient und sicher zu betreiben. Die Werkzeuge und Verwaltungs Komponenten der Distribution sind in Rust geschrieben und stehen unter den Lizenzen MIT und Apache 2.0 zur VerfĂŒgung. Bottlerocket wird in Amazon ECS- und AWS EKS Kubernetes-Clustern unterstĂŒtzt und ermöglicht die Erstellung beliebiger Builds und Editionen, die die Nutzung verschiedener Orchestrierungswerkzeuge und Laufzeiten fĂŒr Container zulassen.

Die Distribution bietet ein atomar und automatisch aktualisiertes, unteilbares Systemabbild, das einen Linux-Kernel und eine minimale Systemumgebung umfasst, die nur die fĂŒr den Betrieb von Containern erforderlichen Komponenten enthĂ€lt. In der Umgebung sind der Systemmanager systemd, die Bibliothek Glibc, das Build-Werkzeug Buildroot, der Bootloader GRUB, der Netzwerk-Konfigurator wicked, das Runtime fĂŒr isolierte Container containerd, die Container-Orchestrierungsplattform Kubernetes, der Authenticator aws-iam-authenticator und der Amazon ECS-Agent integriert.

Die Werkzeuge zur Orchestrierung von Containern werden in einem separaten Verwaltungs-Container bereitgestellt, der standardmĂ€ĂŸig aktiviert ist und ĂŒber die API und den AWS SSM Agent verwaltet wird. In dem Basisabbild fehlt eine Kommandozeile. Server SSH und interpretierte Sprachen (zum Beispiel, kein Python oder Perl) – Werkzeuge fĂŒr Administratoren und Debugging-Tools sind in einen separaten Dienstcontainer ausgegliedert, der standardmĂ€ĂŸig deaktiviert ist.

Das Hauptmerkmal im Vergleich zu Ă€hnlichen Distributionen wie Fedora CoreOS, CentOS/Red Hat Atomic Host ist die primĂ€re Ausrichtung auf maximale Sicherheit im Kontext der VerstĂ€rkung des Schutzes des Systems gegen mögliche Bedrohungen, der Erschwernis der Ausnutzung von Schwachstellen in Betriebssystemkomponenten und der Erhöhung der Isolation von Containern. Container werden mithilfe der Standardmechanismen des Linux-Kernels – cgroups, NamensrĂ€ume und seccomp – erstellt. FĂŒr zusĂ€tzliche Isolation wird im Distribution SELinux im Modus „enforcing“ eingesetzt.

Die Wurzelpartition wird im Nur-Lese-Modus eingehĂ€ngt, wĂ€hrend die Konfigurationspartition /etc in tmpfs eingebunden wird und ihren Ursprungszustand nach einem Neustart wiederherstellt. Direkte Änderungen an Dateien im Verzeichnis /etc, wie /etc/resolv.conf und /etc/containerd/config.toml, werden nicht unterstĂŒtzt – fĂŒr das dauerhafte Speichern von Einstellungen sollten die API oder separate Container verwendet werden. FĂŒr die kryptografische Verifizierung der IntegritĂ€t der Wurzelpartition wird das Modul dm-verity verwendet, und im Falle eines Versuchs, Daten auf BlockgerĂ€tebene zu verĂ€ndern, wird das System neu gestartet.

Die meisten Systemkomponenten sind in der Programmiersprache Rust geschrieben, die sichere Speicheroperationen ermöglicht und Schwachstellen vermeidet, die durch Zugriffe auf den Speicher nach dessen Freigabe, Dereferenzierung von Nullzeigern und Buffer-Overflow verursacht werden können. Bei der Standardkompilierung werden die Kompilierungsmodi „—enable-default-pie“ und „—enable-default-ssp“ verwendet, um die ZufĂ€lligkeit des Adressraums von ausfĂŒhrbaren Dateien (PIE) sowie den Schutz vor Stack-Overflow durch das EinfĂŒhren von Canary-Werten zu aktivieren. FĂŒr Pakete, die in C/C++ geschrieben sind, werden zusĂ€tzlich die Flags „-Wall“, „-Werror=format-security“, „-Wp,-D_FORTIFY_SOURCE=2“, „-Wp,-D_GLIBCXX_ASSERTIONS“ und „-fstack-clash-protection“ hinzugefĂŒgt.

In der neuen Version:

  • Zwei neue Varianten der Distribution aws-k8s-1.20 und vmware-k8s-1.20 mit UnterstĂŒtzung fĂŒr Kubernetes 1.20 wurden vorgeschlagen. In diesen Varianten sowie in der aktualisierten Version aws-ecs-1 wird ein neues Release des Linux-Kernels 5.10 verwendet. Der Lockdown-Modus wird standardmĂ€ĂŸig auf „integrity“ gesetzt (Funktionen, die Änderungen am laufenden Kernel aus dem Benutzermodus zulassen, werden blockiert). Die UnterstĂŒtzung fĂŒr die Variante aws-k8s-1.15 auf Basis von Kubernetes 1.15 wurde eingestellt.
  • FĂŒr Amazon ECS wurde die UnterstĂŒtzung des Netzwerkmodus awsvpc implementiert, der die Zuteilung separater Netzwerkinterfaces und interne IP-Adressen fĂŒr jede Aufgabe ermöglicht.
  • Es wurden Einstellungen hinzugefĂŒgt, um verschiedene Kubernetes-Parameter zu steuern, einschließlich QPS, Limits fĂŒr Pools und die Möglichkeit, sich mit Cloud-Anbietern, die nicht AWS sind, zu verbinden.
  • Im Bootstrap-Container wurde der Zugriff auf Benutzerdaten durch SELinux eingeschrĂ€nkt.
  • Das Dienstprogramm resize2fs wurde hinzugefĂŒgt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4