Release van Bottlerocket 1.3, een distributie gebaseerd op geïsoleerde containers

De release van de Bottlerocket 1.3.0 Linux-distributie is gepubliceerd, ontwikkeld met de medewerking van Amazon om geïsoleerde containers effectief en veilig te laten werken. De toolkit en besturingscomponenten van de distributie zijn geschreven in Rust en gedistribueerd onder de MIT- en Apache 2.0-licenties. Het ondersteunt het uitvoeren van Bottlerocket op Amazon ECS-, VMware- en AWS EKS Kubernetes-clusters, evenals het maken van aangepaste builds en edities die verschillende orkestratie- en runtime-tools voor containers mogelijk maken.

De distributie biedt een atomisch en automatisch bijgewerkt ondeelbaar systeemimage dat de Linux-kernel bevat en een minimale systeemomgeving die alleen de componenten bevat die nodig zijn om containers te laten draaien. De omgeving omvat de systemd-systeembeheerder, de Glibc-bibliotheek, de Buildroot-buildtool, de GRUB-bootloader, de slechte netwerkconfigurator, de geïsoleerde containerruntime van de container, het Kubernetes-containerorkestratieplatform, de aws-iam-authenticator en de Amazon ECS-agent .

De containerorkestratietools worden geleverd in een afzonderlijke beheercontainer die standaard is ingeschakeld en wordt beheerd via de API en AWS SSM Agent. De basisafbeelding mist een opdrachtshell, een SSH-server en geïnterpreteerde talen (bijvoorbeeld geen Python of Perl) - administratieve en foutopsporingstools worden verplaatst naar een aparte servicecontainer, die standaard is uitgeschakeld.

Het belangrijkste verschil met vergelijkbare distributies zoals Fedora CoreOS, CentOS/Red Hat Atomic Host is de primaire focus op het bieden van maximale beveiliging in de context van het versterken van de systeembescherming tegen mogelijke bedreigingen, het compliceren van de exploitatie van kwetsbaarheden in OS-componenten en het vergroten van containerisolatie. Containers worden gemaakt met behulp van de reguliere mechanismen van de Linux-kernel - cgroups, namespaces en seccomp. Voor extra isolatie gebruikt de distributie SELinux in "afdwingende" modus.

De rootpartitie wordt in alleen-lezen-modus aangekoppeld en de partitie met /etc-instellingen wordt in tmpfs aangekoppeld en na een herstart in de oorspronkelijke staat hersteld. Directe wijziging van bestanden in de map /etc, zoals /etc/resolv.conf en /etc/containerd/config.toml, wordt niet ondersteund - om instellingen permanent op te slaan, moet u de API gebruiken of de functionaliteit verplaatsen naar afzonderlijke containers. Voor cryptografische verificatie van de integriteit van de rootpartitie wordt de dm-verity-module gebruikt en als een poging wordt gedetecteerd om gegevens op blokapparaatniveau te wijzigen, wordt het systeem opnieuw opgestart.

De meeste systeemcomponenten zijn geschreven in Rust, dat geheugenveilige tools biedt om kwetsbaarheden te voorkomen die worden veroorzaakt door het adresseren van een geheugengebied nadat het is vrijgegeven, het verwijderen van verwijzingen naar null-pointers en bufferoverschrijdingen. Bij het bouwen worden standaard de compilatiemodi "--enable-default-pie" en "--enable-default-ssp" gebruikt om uitvoerbare adresruimte-randomisatie (PIE) en bescherming tegen stack-overflows door middel van canary-labelvervanging mogelijk te maken. Voor pakketten geschreven in C/C++ zijn de vlaggen "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" en "-fstack-clash" extra inbegrepen -bescherming.

In de nieuwe uitgave:

  • Kwetsbaarheden opgelost in docker- en runtime-containertools (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103) met betrekking tot onjuiste instelling van toegangsrechten, waardoor gebruikers zonder rechten verder konden gaan dan de basis directory en voer externe programma's uit.
  • IPv6-ondersteuning is toegevoegd aan kubelet en pluto.
  • Het is mogelijk om de container opnieuw te starten nadat de instellingen zijn gewijzigd.
  • Ondersteuning voor Amazon EC2 M6i-instanties is toegevoegd aan het eni-max-pods-pakket.
  • Open-vm-tools heeft ondersteuning toegevoegd voor apparaatfilters, gebaseerd op de Cilium-toolkit.
  • Voor het x86_64-platform is een hybride opstartmodus geïmplementeerd (met ondersteuning voor EFI en BIOS).
  • Bijgewerkte pakketversies en afhankelijkheden voor de Rust-taal.
  • Ondersteuning voor de distributievariant aws-k8s-1.17 op basis van Kubernetes 1.17 is stopgezet. Het wordt aanbevolen om de aws-k8s-1.21-versie te gebruiken met ondersteuning voor Kubernetes 1.21. De k8s-varianten gebruiken de instellingen cgroup runtime.slice en system.slice.

Bron: opennet.ru

Voeg een reactie