Lansarea Bottlerocket 1.3, un sistem de operare bazat pe containere izolate

A fost lansată versiunea 1.3.0 a distribuției Linux Bottlerocket, dezvoltată cu participarea companiei Amazon pentru lansarea eficientă și sigură a containerelor izolate. Uneltele și componentele de management ale distribuției sunt scrise în limbajul Rust și sunt disponibile sub licențele MIT și Apache 2.0. Bottlerocket este compatibil cu clusterele Amazon ECS, VMware și AWS EKS Kubernetes, precum și cu crearea de builduri și versiuni personalizate care permit utilizarea diverselor 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 remarcate vulnerabilitățile din uneltele docker și runtime containerd (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103), legate de setarea necorespunzătoare a drepturilor de acces, ceea ce permitea utilizatorilor fără privilegii să depășească directorul de bază și să execute programe externe.
  • A fost adăugată în kubelet și pluto suportul IPv6.
  • A fost oferită posibilitatea de a reporni un container după modificarea setărilor acestuia.
  • Pachetul eni-max-pods a primit suport pentru instanțele Amazon EC2 M6i.
  • În open-vm-tools a fost adăugat suport pentru filtrele de dispozitive, implementat pe baza uneltelor Cilium.
  • Un mod hibrid de boot a fost implementat pentru platforma x86_64 (cu suport pentru EFI și BIOS).
  • Au fost actualizate versiunile pachetelor și dependențele pentru limbajul Rust.
  • Suportul pentru varianta distribuției aws-k8s-1.17 bazată pe Kubernetes 1.17 a fost oprit. Se recomandă utilizarea variantei aws-k8s-1.21 cu suport pentru Kubernetes 1.21. În variantele k8s sunt utilizate setările cgroup runtime.slice și system.slice.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster