Se ha publicado la versión 1.7.0 del sistema operativo Linux Bottlerocket, desarrollado con la participación de Amazon para el lanzamiento eficiente y seguro de contenedores aislados. Las herramientas y componentes de gestión del sistema han sido escritos en Rust y se distribuyen bajo las licencias MIT y Apache 2.0. Se soporta la ejecución de Bottlerocket en clústeres de Amazon ECS, VMware y AWS EKS Kubernetes, así como la creación de compilaciones y ediciones personalizadas que permiten el uso de diferentes herramientas de orquestación y runtime para contenedores.
La distribución proporciona una imagen del sistema atómica y actualizable automáticamente, que incluye el núcleo de Linux y un entorno de sistema mínimo, conteniendo solo los componentes necesarios para ejecutar contenedores. En el entorno se utilizan el gestor de sistemas systemd, la biblioteca Glibc, la herramienta de construcción Buildroot, el cargador de arranque GRUB, el configurador de red wicked, el runtime para contenedores aislados containerd, la plataforma de orquestación de contenedores Kubernetes, el autenticador aws-iam-authenticator y el agente de Amazon ECS.
Las herramientas para la orquestación de contenedores se suministran en un contenedor de gestión separado, que está habilitado por defecto y se gestiona a través de la API y AWS SSM Agent. La imagen base no incluye un intérprete de comandos. servidor SSH y lenguajes interpretados (por ejemplo, no hay Python o Perl) — las herramientas para administradores y las herramientas de depuración se han trasladado a un contenedor de servicio separado, que está deshabilitado por defecto.
La principal diferencia con otras distribuciones similares, como Fedora CoreOS y CentOS/Red Hat Atomic Host, es la orientación primaria hacia la maximización de la seguridad en el contexto de fortalecer la protección del sistema contra posibles amenazas, complicar la explotación de vulnerabilidades en los componentes del sistema operativo y aumentar la aislamiento de los contenedores. Los contenedores se crean mediante los mecanismos estándar del núcleo de Linux: cgroups, espacios de nombres y seccomp. Para una mayor isolación, la distribución utiliza SELinux en modo "enforcing".
La partición raíz se monta en modo solo lectura, y la partición de configuración /etc se monta en tmpfs y se restablece a su estado original después de un reinicio. No se admite la modificación directa de archivos en el directorio /etc, como /etc/resolv.conf y /etc/containerd/config.toml; para guardar configuraciones de manera persistente, se deben utilizar las API o trasladar la funcionalidad a contenedores separados. Se utiliza el módulo dm-verity para la verificación criptográfica de la integridad de la partición raíz, y si se detecta un intento de modificar datos a nivel de dispositivo de bloque, el sistema se reinicia.
La mayoría de los componentes del sistema están escritos en Rust, que proporciona herramientas para trabajar de manera segura con la memoria, evitando vulnerabilidades causadas por el acceso a áreas de memoria después de haber sido liberadas, la desreferenciación de punteros nulos y sobrepasar los límites del búfer. Al compilar por defecto, se utilizan los modos de compilación "--enable-default-pie" y "--enable-default-ssp" para habilitar la aleatorización del espacio de direcciones de archivos ejecutables (PIE) y protección contra desbordamientos de pila mediante la inserción de marcas canarias. Para paquetes escritos en C/C++, se incluyen además las banderas "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" y "-fstack-clash-protection".
En esta nueva versión:
- Al instalar paquetes RPM, se genera una lista de programas en formato JSON y se monta en el contenedor host como archivo /var/lib/bottlerocket/inventory/application.json para obtener información sobre los paquetes disponibles.
- Se han actualizado los contenedores 'admin' y 'control'.
- Se han actualizado las versiones de paquetes y dependencias para los lenguajes Go y Rust.
- Se han actualizado las versiones de paquetes de software externo.
- Se han resuelto problemas con la configuración de tmpfilesd para kmod-5.10-nvidia.
- Al instalar tuftool, se ha asegurado la vinculación de versiones de dependencias.
Fuente: opennet.ru
