Издание на Bottlerocket 1.1, дистрибуция на базата на изолирани контейнери

Достъпен е изходният Linux дистрибутив Bottlerocket 1.1.0, разработван с участието на компанията Amazon за ефективно и безопасно стартиране на изолирани контейнери. Инструментите и управляващите компоненти на дистрибутива са написани на Rust и се разпространяват под лицензите MIT и Apache 2.0. Поддържа се стартиране на Bottlerocket в кластерите Amazon ECS и 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".

В новото издание:

  • Предложени са два нови варианта на дистрибутива aws-k8s-1.20 и vmware-k8s-1.20 с поддръжка за Kubernetes 1.20. В тези варианти, както и в обновения вариант aws-ecs-1, е внедрен нов изходен код на Linux ядрото 5.10. Режимът lockdown по подразбиране е преминал в стойност „integrity“ (блокират се възможностите за извършване на промени в работещото ядро от потребителското пространство). Подкрепата за варианта aws-k8s-1.15 на база Kubernetes 1.15 е прекратена.
  • За Amazon ECS е реализирана поддръжка за мрежов режим awsvpc, което позволява отделяне на независими мрежови интерфейси и вътрешни IP адреси за всяка задача.
  • Добавени са настройки за управление на различни параметри на Kubernetes, включително QPS, лимити на пуловете и възможността за свързване с облачни доставчици, различни от AWS.
  • В bootstrap контейнера е осигурено ограничаване на достъпа до потребителските данни с помощта на SELinux.
  • Добавена е утилита resize2fs.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster