Lanzamiento de Bottlerocket 1.7, una distribución basada en contenedores aislados

Se ha publicado el lanzamiento de la distribución Linux Bottlerocket 1.7.0, desarrollada con la participación de Amazon para ejecutar contenedores aislados de forma eficaz y segura. El kit de herramientas y los componentes de control de la distribución están escritos en Rust y distribuidos bajo las licencias MIT y Apache 2.0. Admite 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 diferentes herramientas de orquestación y tiempo de ejecución para contenedores.

La distribución proporciona una imagen indivisible del sistema actualizada de forma atómica y automática que incluye el kernel de Linux y un entorno de sistema mínimo que incluye solo los componentes necesarios para ejecutar contenedores. El entorno incluye el administrador del sistema systemd, la biblioteca Glibc, la herramienta de compilación Buildroot, el cargador de arranque GRUB, el configurador de red malvado, el tiempo de ejecución de contenedor aislado en contenedor, la plataforma de orquestación de contenedores Kubernetes, el autenticador aws-iam y el agente de Amazon ECS. .

Las herramientas de orquestación de contenedores vienen en un contenedor de administración independiente que está habilitado de forma predeterminada y administrado a través de la API y el Agente de AWS SSM. La imagen base carece de un shell de comandos, un servidor SSH y lenguajes interpretados (por ejemplo, no hay Python o Perl); las herramientas administrativas y de depuración se mueven a un contenedor de servicios separado, que está deshabilitado de forma predeterminada.

La diferencia clave con distribuciones similares como Fedora CoreOS, CentOS/Red Hat Atomic Host es el enfoque principal en proporcionar la máxima seguridad en el contexto de fortalecer la protección del sistema contra posibles amenazas, complicando la explotación de vulnerabilidades en los componentes del sistema operativo y aumentando el aislamiento de los contenedores. Los contenedores se crean utilizando los mecanismos habituales del kernel de Linux: cgroups, espacios de nombres y seccomp. Para un aislamiento adicional, la distribución utiliza SELinux en modo "impuesto".

La partición raíz se monta en modo de solo lectura y la partición con la configuración /etc se monta en tmpfs y se restaura a su estado original después de reiniciar. No se admite la modificación directa de archivos en el directorio /etc, como /etc/resolv.conf y /etc/containerd/config.toml; para guardar la configuración de forma permanente, debe usar la API o mover la funcionalidad a contenedores separados. Para la verificación criptográfica de la integridad de la partición raíz, se utiliza el módulo dm-verity y, si se detecta un intento de modificar datos en el nivel del dispositivo de bloque, el sistema se reinicia.

La mayoría de los componentes del sistema están escritos en Rust, que proporciona herramientas seguras para la memoria para evitar vulnerabilidades causadas por direccionar un área de memoria después de haber sido liberada, desreferenciar punteros nulos y desbordamientos del búfer. Al compilar, los modos de compilación "--enable-default-pie" y "--enable-default-ssp" se utilizan de forma predeterminada para habilitar la aleatorización del espacio de direcciones de los archivos ejecutables (PIE) y la protección contra desbordamientos de pila mediante la sustitución de etiquetas canarias. Para paquetes escritos en C/C++, los indicadores "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" y "-fstack-clash" son adicionales incluido -protección.

En el nuevo lanzamiento:

  • Al instalar paquetes RPM, es posible generar una lista de programas en formato JSON y montarla en el contenedor host como el archivo /var/lib/bottlerocket/inventory/application.json para obtener información sobre los paquetes disponibles.
  • Se han actualizado los contenedores “admin” y “control”.
  • Versiones de paquetes actualizadas y dependencias para los lenguajes Go y Rust.
  • Versiones actualizadas de paquetes con programas de terceros.
  • Se resolvieron problemas de configuración de tmpfilesd para kmod-5.10-nvidia.
  • Al instalar tuftool, las versiones de dependencia están vinculadas.

Fuente: opennet.ru

Añadir un comentario