Megjelent a Bottlerocket 1.3.0 Linux disztribúció, amelyet az Amazon közreműködésével fejlesztenek a izolált konténerek hatékony és biztonságos indítása érdekében. A disztribúció eszközei és vezérlőelemei Rust nyelven íródtak, és MIT, valamint Apache 2.0 licenc alatt terjesztik. A Bottlerocket az Amazon ECS, VMware és AWS EKS Kubernetes klaszterekben támogatott, emellett lehetővé teszi tetszőleges összeállítások és kiadások létrehozását, amelyek különböző konténerorkesztráló és runtime eszközök alkalmazását teszik lehetővé.
A disztribúció atomikus és automatikusan frissíthető, oszthatatlan rendszerképet biztosít, amely tartalmazza a Linux magot és a minimális rendszerkörnyezetet, amely csak a konténerek indításához szükséges összetevőket tartalmazza. A környezetben aktív a systemd rendszerkezelő, a Glibc könyvtár, a Buildroot építési eszközkészlet, a GRUB indítóprogram, a wicked hálózati konfiguráló, az izolált konténerek runtime-ja, a containerd, a Kubernetes konténerorkésztráló platform, az aws-iam-authenticator hitelesítő és az Amazon ECS ügynök.
A konténerorkesztráló eszközök külön vezérlőkonténerben találhatók, amely alapértelmezetten be van kapcsolva és az API-n, valamint az AWS SSM Agent-en keresztül kezelhető. Az alapképből hiányzik a parancssor. szerver SSH és értelmezett nyelvek (például nincs Python vagy Perl) — az adminisztrátor és hibakereső eszközök egy külön szolgáltató konténerbe kerülnek, amely alapértelmezetten ki van kapcsolva.
A hasonló disztribúcióktól, mint a Fedora CoreOS, CentOS/Red Hat Atomic Host, eltérően a legfőbb különbség a maximális biztonság biztosítása felé irányul, figyelembe véve a rendszer védelmét a lehetséges fenyegetésekkel szemben, a sérülékenységek kihasználásának megnehezítését az operációs rendszer elemeiben, és a konténerek szigetelésének fokozását. A konténerek a Linux mag beépített mechanizmusainak — cgroups, névtér és seccomp — segítségével készülnek. További szigetelés érdekében a disztribúcióban SELinux „enforcing” üzemmódba van állítva.
A gyökérpartíció csak olvasásra van csatolva, az /etc beállításait tartalmazó partíció tmpfs formátumban van csatolva, és újraállítja az eredeti állapotát újraindítás után. Az /etc könyvtárban lévő fájlok, mint például az /etc/resolv.conf és az /etc/containerd/config.toml közvetlen módosítása nem támogatott – a beállítások tartós megőrzéséhez az API-t kell használni, vagy a funkciókat külön konténerekbe kell kihelyezni. A gyökérpartíció integritásának kriptográfiai ellenőrzésére a dm-verity modul kerül felhasználásra, és ha bármilyen adatmódosítási kísérletet észlel a blokkszintű eszközökön, a rendszer újraindul.
A legtöbb rendszerkomponens Rust nyelven íródott, amely biztonságos memóriakezelési eszközöket biztosít, lehetővé téve az olyan sebezhetőségek elkerülését, mint a memória területére való hivatkozás felszabadítás után, a null-pontra való dereferálás és a puffer túllépés. Az alapértelmezett fordítási módok között alkalmazzák a „—enable-default-pie” és a „—enable-default-ssp” beállításokat, a végrehajtható állományok (PIE) címének véletlenszerűsítésére és a verem túlcsordulás elleni védelmet olyan kanárlapok helyettesítésével. C/C++ nyelven írt csomagok esetén további kapcsolók, mint a „-Wall”, „-Werror=format-security”, „-Wp,-D_FORTIFY_SOURCE=2”, „-Wp,-D_GLIBCXX_ASSERTIONS” és „-fstack-clash-protection” is be vannak kapcsolva.
Az új kiadásban:
- Kihasználási lehetőségek kerültek megszüntetésre a docker eszközkészletében és a runtime containerd-ben (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103), amelyek helytelen jogosultságbeállítással voltak összefüggésben, lehetővé téve, hogy a nem privilegizált felhasználók a gyökérkönyvtáron kívül hajtsanak végre külső programokat.
- A kubelet és a pluto bővült. IPv6 támogatás.
- Lehetővé tették a konténer újraindítását a beállításainak megváltoztatása után.
- Az eni-max-pods csomaghoz hozzáadva a támogatás az Amazon EC2 M6i instance-hoz.
- Az open-vm-tools-hoz eszközszűrők támogatása került bevezetésre a Cilium eszközkészletének alkalmazásával.
- x86_64 platformon megvalósult a hibrid indítási mód (EFI és BIOS támogatással).
- Frissítették a Rust nyelvhez tartozó csomagok és függőségek verzióit.
- Leállították az aws-k8s-1.17 distró támogatását, amely a Kubernetes 1.17 alapjaira épült. Ajánlott az aws-k8s-1.21 verzió használata, amely a Kubernetes 1.21 támogatását nyújtja. A k8s verziókban a cgroup runtime.slice és a system.slice beállításai aktívak.
Forrás: opennet.ru
