Издадено издание на Linux дистрибуцията Bottlerocket 1.3.0, развивана с участието на компания Amazon за ефективно и сигурно стартиране на изолирани контейнери. Инструментарият и управляващите компоненти на дистрибуцията са написани на Rust и се разпространяват под лицензите MIT и Apache 2.0. Поддържа се стартиране на Bottlerocket в клъстери на Amazon ECS, VMware и AWS EKS Kubernetes, а също така се позволяват произволни сборки и редакции, допускащи използване на различни инструменти за оркестрация и runtime за контейнери.
Дистрибутивът предоставя атомарно и автоматично обновяем неразделим системен образ, включващ ядро на Linux и минимална системна среда, съдържаща само компонентите, необходими за стартиране на контейнери. В средата са ангажирани системният мениджър systemd, библиотеката Glibc, инструментариумът за изграждане Buildroot, товарителят GRUB, конфигураторът на мрежата wicked, runtime за изолирани контейнери containerd, платформата за оркестрация на контейнери Kubernetes, удостоверителят aws-iam-authenticator и агентът Amazon ECS.
Инструментите за оркестрация на контейнери се предоставят в отделен управляващ контейнер, който е активиран по подразбиране и се управлява чрез API и AWS SSM Agent. В основния образ липсва команден интерфейс, сървър SSH и интерпретируеми езици (например, Python или Perl) — средствата за администратора и инструментите за отстраняване на неизправности са изнесени в отделен служебен контейнер, който по подразбиране е деактивиран.
Ключовата разлика от подобни дистрибутиви, като Fedora CoreOS, CentOS/Red Hat Atomic Host, е основната ориентация към предоставяне на максимална безопасност в контекста на засилване на защитата на системата от възможни заплахи, усложняване на експлоатацията на уязвимости в компонентите на ОС и повишаване на изолацията на контейнерите. Контейнерите се създават с помощта на стандартните механизми на ядрото на Linux — cgroups, пространства за имена и seccomp. За допълнителна изолация в дистрибутива се използва SELinux в режим «enforcing».
Коренният дял е монтиран в режим само за четене, а дялът с настройките /etc е монтиран в tmpfs и възстановява първоначалното си състояние след рестартиране. Пряка промяна на файлове в директорията /etc, като /etc/resolv.conf и /etc/containerd/config.toml, не се поддържа — за постоянно запазване на настройките следва да се използва API или да се преместят функционалността в отделни контейнери. За криптографска проверка за цялостност на коренния дял е задействан модулът dm-verity, а при откриване на опити за модификация на данните на ниво блочно устройство системата се рестартира.
Повечето системни компоненти са написани на езика Rust, предоставящ средства за безопасна работа с паметта, което позволява да се избегнат уязвимости, причинени от достъп до паметта след нейното освобождаване, разразглеждане на нулеви указатели и излизане извън границите на буфера. При компилация по подразбиране се прилагат режимите за компилация "—enable-default-pie" и "—enable-default-ssp" за включване на рандомизация на адресното пространство на изпълнимите файлове (PIE) и защита от преливане на стека чрез подмяна на канарените маркери. За пакети, написани на C/C++, допълнително се включват флаговете "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" и "-fstack-clash-protection".
В новото издание:
- Отстранени са уязвимости в инструментария docker и runtime containerd (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103), свързани с неправилно задаване на права за достъп, което позволява на непривилегировани потребители да излязат извън основната директория и да изпълняват външни програми.
- Добавена е възможност за перезапуск на контейнера след промяна на неговите настройки. поддръжка на IPv6.
- В пакетa eni-max-pods е добавена поддръжка за инстанции Amazon EC2 M6i.
- В open-vm-tools е добавена поддръжка на филтри за устройства, реализирана на базата на инструментария Cilium.
- За платформата x86_64 е реализиран хибриден режим на зареждане (с поддръжка на EFI и BIOS).
- Поддръжката на варианта на дистрибуцията aws-k8s-1.17 на база Kubernetes 1.17 е прекратена. Препоръчва се да се използва вариантът aws-k8s-1.21 с поддръжка на Kubernetes 1.21. В вариантите k8s са задействани настройките cgroup runtime.slice и system.slice.
- Актуализирани са версиите на пакетите и зависимостите за езика Rust.
- Издадено е издание на Linux дистрибуцията Bottlerocket 1.3.0, развивана с участието на компания Amazon за ефективно и сигурно стартиране на изолирани контейнери.
Източник: opennet.ru
