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

Se ha publicado la versión 1.3.0 de la distribución de Linux Bottlerocket, desarrollada con la participación de Amazon para el lanzamiento eficiente y seguro de contenedores aislados. Las herramientas y componentes de gestión de la distribución están 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 diversas herramientas de orquestación y tiempo de ejecución 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:

  • Se han corregido vulnerabilidades en las herramientas de docker y runtime containerd (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103), relacionadas con la incorrecta configuración de permisos, lo que permitía a usuarios no privilegiados salir del directorio base y ejecutar programas externos.
  • Se ha añadido a kubelet y pluto soporte para IPv6.
  • Se ha proporcionado la capacidad de reiniciar el contenedor tras modificar su configuración.
  • Se ha añadido soporte para instancias Amazon EC2 M6i en el paquete eni-max-pods.
  • Se ha añadido soporte para filtros de dispositivos en open-vm-tools, implementado sobre la base de herramientas Cilium.
  • Se ha implementado un modo de arranque híbrido para la plataforma x86_64 (con soporte para EFI y BIOS).
  • Se han actualizado las versiones de los paquetes y dependencias para el lenguaje Rust.
  • Se ha terminado el soporte para la variante de la distribución aws-k8s-1.17 basada en Kubernetes 1.17. Se recomienda utilizar la variante aws-k8s-1.21 con soporte para Kubernetes 1.21. En las variantes de k8s se utilizan configuraciones cgroup runtime.slice y system.slice.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster