Lançamento do Bottlerocket 1.3, uma distribuição baseada em containers isolados

Foi publicado o lançamento da distribuição Linux Bottlerocket 1.3.0, desenvolvida com a participação da Amazon para executar contêineres isolados de forma eficaz e segura. O kit de ferramentas e os componentes de controle da distribuição são escritos em Rust e distribuídos sob as licenças MIT e Apache 2.0. Ele suporta a execução do Bottlerocket nos clusters Amazon ECS, VMware e AWS EKS Kubernetes, bem como a criação de compilações e edições personalizadas que permitem diferentes orquestrações e ferramentas de tempo de execução para contêineres.

A distribuição fornece uma imagem de sistema indivisível atualizada de forma atômica e automática que inclui o kernel do Linux e um ambiente de sistema mínimo que inclui apenas os componentes necessários para executar contêineres. O ambiente inclui o gerenciador de sistema systemd, a biblioteca Glibc, a ferramenta de compilação Buildroot, o carregador de inicialização GRUB, o configurador de rede perverso, o tempo de execução de contêiner isolado containerd, a plataforma de orquestração de contêineres Kubernetes, o aws-iam-authenticator e o agente Amazon ECS .

As ferramentas de orquestração de contêiner vêm em um contêiner de gerenciamento separado que é habilitado por padrão e gerenciado por meio da API e do AWS SSM Agent. A imagem base carece de um shell de comando, um servidor SSH e linguagens interpretadas (por exemplo, sem Python ou Perl) - as ferramentas administrativas e de depuração são movidas para um contêiner de serviço separado, que está desabilitado por padrão.

A principal diferença de distribuições semelhantes, como Fedora CoreOS, CentOS/Red Hat Atomic Host, é o foco principal em fornecer segurança máxima no contexto de fortalecer a proteção do sistema contra possíveis ameaças, complicando a exploração de vulnerabilidades em componentes do sistema operacional e aumentando o isolamento do contêiner. Os contêineres são criados usando os mecanismos regulares do kernel do Linux - cgroups, namespaces e seccomp. Para isolamento adicional, a distribuição usa o SELinux no modo "imposição".

A partição raiz é montada no modo somente leitura e a partição com configurações /etc é montada em tmpfs e restaurada ao seu estado original após uma reinicialização. A modificação direta de arquivos no diretório /etc, como /etc/resolv.conf e /etc/containerd/config.toml, não é suportada - para salvar permanentemente as configurações, você deve usar a API ou mover a funcionalidade para contêineres separados. Para verificação criptográfica da integridade da partição raiz, o módulo dm-verity é usado e, se for detectada uma tentativa de modificar os dados no nível do dispositivo de bloco, o sistema é reinicializado.

A maioria dos componentes do sistema é escrita em Rust, que fornece ferramentas seguras de memória para evitar vulnerabilidades causadas pelo endereçamento de uma área de memória após ela ter sido liberada, desreferenciando ponteiros nulos e saturações de buffer. Ao compilar, os modos de compilação "--enable-default-pie" e "--enable-default-ssp" são usados ​​por padrão para habilitar a randomização do espaço de endereço de arquivos executáveis ​​(PIE) e proteção contra estouros de pilha por meio da substituição de rótulo canário. Para pacotes escritos em C/C++, os sinalizadores "-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" e "-fstack-clash" são adicionais incluído -proteção.

Na nova versão:

  • Corrigidas vulnerabilidades em ferramentas docker e runtime containerd (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103) relacionadas à configuração incorreta de direitos de acesso, que permitiam que usuários sem privilégios fossem além da base diretório e executar programas externos.
  • O suporte IPv6 foi adicionado ao kubelet e ao plutão.
  • É possível reiniciar o container após alterar suas configurações.
  • O suporte para instâncias M2i do Amazon EC6 foi adicionado ao pacote eni-max-pods.
  • Open-vm-tools adicionou suporte para filtros de dispositivos, com base no kit de ferramentas Cilium.
  • Para a plataforma x86_64, um modo de inicialização híbrido é implementado (com suporte para EFI e BIOS).
  • Versões de pacotes e dependências atualizadas para a linguagem Rust.
  • O suporte para a variante de distribuição aws-k8s-1.17 baseada no Kubernetes 1.17 foi descontinuado. Recomenda-se usar a versão aws-k8s-1.21 com suporte para Kubernetes 1.21. As variantes k8s usam as configurações cgroup runtime.slice e system.slice.

Fonte: opennet.ru

Adicionar um comentário