Rilascio di Bottlerocket 1.3, una distribuzione basata su contenitori isolati

È stato pubblicato il rilascio della distribuzione Linux Bottlerocket 1.3.0, sviluppata con la partecipazione di Amazon per il lancio efficiente e sicuro di contenitori isolati. Gli strumenti e i componenti di controllo della distribuzione sono scritti in Rust e distribuiti sotto le licenze MIT e Apache 2.0. Supporta l'esecuzione di Bottlerocket su cluster Amazon ECS, VMware e AWS EKS Kubernetes, oltre alla creazione di build ed edizioni personalizzate che consentono l'uso di vari strumenti di orchestrazione e runtime per i contenitori.

La distribuzione fornisce un'immagine di sistema indivisibile aggiornata atomicamente e automaticamente che include il kernel Linux e un ambiente di sistema minimo, inclusi solo i componenti necessari per eseguire i contenitori. L'ambiente include il gestore di sistema systemd, la libreria Glibc, lo strumento di compilazione Buildroot, il boot loader GRUB, il configuratore di rete Wicked, il runtime containerd per contenitori isolati, la piattaforma di orchestrazione dei contenitori Kubernetes, aws-iam-authenticator e Amazon Agente ECS.

Gli strumenti di orchestrazione dei container sono forniti in un container di gestione separato, abilitato per impostazione predefinita e gestito tramite l'API e l'agente AWS SSM. L'immagine di base è priva di shell dei comandi, server SSH e linguaggi interpretati (ad esempio, niente Python o Perl): gli strumenti di amministrazione e di debug sono collocati in un contenitore di servizi separato, che è disabilitato per impostazione predefinita.

La differenza fondamentale rispetto a distribuzioni simili come Fedora CoreOS, CentOS/Red Hat Atomic Host è l'obiettivo principale di fornire la massima sicurezza nel contesto del rafforzamento della protezione del sistema da possibili minacce, rendendo più difficile sfruttare le vulnerabilità nei componenti del sistema operativo e aumentando l'isolamento dei contenitori . I contenitori vengono creati utilizzando i meccanismi standard del kernel Linux: cgroup, spazi dei nomi e seccomp. Per ulteriore isolamento, la distribuzione utilizza SELinux in modalità “enforcing”.

La partizione root è montata in sola lettura e la partizione delle impostazioni /etc è montata in tmpfs e ripristinata al suo stato originale dopo un riavvio. La modifica diretta dei file nella directory /etc, come /etc/resolv.conf e /etc/containerd/config.toml, non è supportata: per salvare in modo permanente le impostazioni, è necessario utilizzare l'API o spostare la funzionalità in contenitori separati. Il modulo dm-verity viene utilizzato per verificare crittograficamente l'integrità della partizione root e, se viene rilevato un tentativo di modificare i dati a livello del dispositivo a blocchi, il sistema si riavvia.

La maggior parte dei componenti di sistema sono scritti in Rust, che fornisce funzionalità di sicurezza della memoria per evitare vulnerabilità causate da accessi successivi alla memoria libera, dereferenziazioni di puntatori nulli e sovraccarichi del buffer. Durante la compilazione per impostazione predefinita, le modalità di compilazione "-enable-default-pie" e "-enable-default-ssp" vengono utilizzate per abilitare la randomizzazione dello spazio degli indirizzi dei file eseguibili (PIE) e la protezione contro gli overflow dello stack tramite la sostituzione canary. Per i pacchetti scritti in C/C++, i flag “-Wall”, “-Werror=format-security”, “-Wp,-D_FORTIFY_SOURCE=2”, “-Wp,-D_GLIBCXX_ASSERTIONS” e “-fstack-clash” sono inoltre protezione abilitata".

Nella nuova versione:

  • Risolte vulnerabilità negli strumenti docker e runtime containerd (CVE-2021-41089, CVE-2021-41091, CVE-2021-41092, CVE-2021-41103) relative all'errata impostazione dei diritti di accesso, che consentivano agli utenti non privilegiati di andare oltre la base directory ed eseguire programmi esterni.
  • Il supporto IPv6 è stato aggiunto a kubelet e Pluto.
  • È possibile riavviare il contenitore dopo averne modificato le impostazioni.
  • Al pacchetto eni-max-pods è stato aggiunto il supporto per le istanze Amazon EC2 M6i.
  • Open-vm-tools ha aggiunto il supporto per i filtri dei dispositivi, basato sul toolkit Cilium.
  • Per la piattaforma x86_64 è implementata una modalità di avvio ibrida (con supporto per EFI e BIOS).
  • Versioni dei pacchetti e dipendenze aggiornate per il linguaggio Rust.
  • Il supporto per la variante di distribuzione aws-k8s-1.17 basata su Kubernetes 1.17 è stato interrotto. Si consiglia di utilizzare la versione aws-k8s-1.21 con supporto per Kubernetes 1.21. Le varianti k8s utilizzano le impostazioni cgroup runtime.slice e system.slice.

Fonte: opennet.ru

Aggiungi un commento