Este disponibilă lansarea distribuției Linux Bottlerocket 1.1.0, dezvoltată cu ajutorul companiei Amazon pentru a permite rularea eficientă și sigură a containerelor izolate. Instrumentele și componentele de gestionare ale distribuției sunt scrise în Rust și sunt distribuite sub licențele MIT și Apache 2.0. Bottlerocket este compatibil cu clusterele Amazon ECS și AWS EKS Kubernetes, precum și cu crearea de build-uri și variante personalizate care permit utilizarea diferitelor instrumente de orchestrare și runtime pentru containere.
Distribuția oferă o imagine de sistem atomică și actualizabilă automat, indisolubilă, care include kernelul Linux și un mediu de sistem minim, incluzând doar componentele necesare pentru rularea containerelor. În mediu sunt implicate managerul de sistem systemd, biblioteca Glibc, instrumentele de construcție Buildroot, bootloader-ul GRUB, configuratorul de rețea wicked, runtime-ul pentru containere izolate containerd, platforma de orchestrare a containerelor Kubernetes, autentificatorul aws-iam-authenticator și agentul Amazon ECS.
Instrumentele pentru orchestrarea containerelor sunt furnizate într-un container de gestionare separat, care este activat în mod implicit și gestionat prin API și AWS SSM Agent. Imaginea de bază nu conține un shell de comandă, serverul SSH și limbajele interpretate (de exemplu, nu există Python sau Perl) — instrumentele pentru administratori și uneltele de depanare sunt plasate într-un container de serviciu separat, care este dezactivat în mod implicit.
Principala diferență față de distribuțiile similare, cum ar fi Fedora CoreOS, CentOS/Red Hat Atomic Host, este orientarea primară spre asigurarea unei securități maxime în contextul întăririi protecției sistemului împotriva amenințărilor potențiale, dificultății exploatării vulnerabilităților în componentele OS și creșterii izolării containerelor. Containerele sunt create folosind mecanisme standard ale kernel-ului Linux — cgroups, spații de nume și seccomp. Pentru o izolare suplimentară, în distribuție se aplică SELinux în modul „enforcing”.
Partiția de bază este montată în mod numai pentru citire, iar partiția de configurare /etc este montată în tmpfs și își restabilește starea originală după repornire. Modificarea directă a fișierelor din directorul /etc, cum ar fi /etc/resolv.conf și /etc/containerd/config.toml, nu este suportată – pentru salvarea permanentă a setărilor ar trebui utilizat API-ul sau funcționalitatea ar trebui extinsă în containere separate. Pentru verificarea criptografică a integrității partiției de bază este activat modulul dm-verity, iar în caz de încercare de modificare a datelor la nivel de dispozitiv bloc, sistemul se va reporni.
Cele mai multe componente de sistem sunt scrise în limbajul Rust, care oferă mijloace pentru o utilizare sigură a memoriei, evitând vulnerabilitățile cauzate de accesul la memoria eliberată, dereferențierea pointerilor nuli și depășirea limitelor bufferului. La compilarea implicită se aplică modurile de compilare „--enable-default-pie” și „--enable-default-ssp” pentru a activa randomizarea spațiului de adresare al fișierelor executabile (PIE) și protecția împotriva overflow-ului stivei prin substituția etichetelor de canar. Pentru pachetele scrise în C/C++, sunt adăugate suplimentar flag-urile „-Wall”, „-Werror=format-security”, „-Wp,-D_FORTIFY_SOURCE=2”, „-Wp,-D_GLIBCXX_ASSERTIONS” și „-fstack-clash-protection”.
În noua versiune:
- Au fost propuse două noi variante ale distribuției aws-k8s-1.20 și vmware-k8s-1.20 cu suport pentru Kubernetes 1.20. În aceste variante, precum și în versiunea actualizată aws-ecs-1, este utilizată o nouă versiune a nucleului Linux 5.10. Modul de lockdown este setat implicit pe „integrity” (blochează posibilitățile de a face modificări în nucleul activ din spațiul utilizatorului). Suportul pentru varianta aws-k8s-1.15 bazată pe Kubernetes 1.15 a fost întrerupt.
- Pentru Amazon ECS a fost implementat suportul pentru modul de rețea awsvpc, care permite alocarea de interfețe de rețea distincte și interne adrese IP pentru fiecare sarcină.
- Au fost adăugate setări pentru a gestiona diferite parametri ai Kubernetes, inclusiv QPS, limitări pe pool-uri și posibilitatea de a se conecta la furnizori de cloud diferiți de AWS.
- În containerul de bootstrap a fost asigurat un control de acces la datele utilizatorului prin intermediul SELinux.
- A fost adăugată utilitara resize2fs.
Sursa: opennet.ro
