Amazon pubblica Bottlerocket 1.0.0, una distribuzione Linux basata su contenitori isolati

Compagnia Amazon presentato primo rilascio significativo di una distribuzione Linux dedicata Razzo di bottiglia 1.0.0, progettato per gestire contenitori isolati in modo efficiente e sicuro. Gli strumenti e i componenti di controllo della distribuzione sono scritti in Rust e diffusione sotto le licenze MIT e Apache 2.0. Il progetto è in fase di sviluppo su GitHub ed è disponibile per la partecipazione dei membri della comunità. L'immagine di distribuzione del sistema viene generata per le architetture x86_64 e Aarch64. Il sistema operativo è adattato per essere eseguito su cluster Amazon ECS e AWS EKS Kubernetes. Sono forniti strumenti per creare i propri assembly ed edizioni, che possono utilizzare altri strumenti di orchestrazione, kernel e runtime per contenitori.

La distribuzione fornisce il kernel Linux e un ambiente di sistema minimo, inclusi solo i componenti necessari per eseguire i contenitori. Tra i pacchetti coinvolti nel progetto ci sono il gestore di sistema systemd, la libreria Glibc e gli strumenti di assemblaggio
Buildroot, bootloader GRUB, configuratore di rete malvagio, runtime per contenitori isolati contenitore, piattaforma di orchestrazione dei container Kubernetes, aws-iam-authenticator e agente Amazon ECS.

La distribuzione viene aggiornata atomicamente e viene consegnata sotto forma di un'immagine di sistema indivisibile. Per il sistema vengono allocate due partizioni del disco, una delle quali contiene il sistema attivo e l'aggiornamento viene copiato nella seconda. Dopo la distribuzione dell'aggiornamento, la seconda partizione diventa attiva e nella prima, fino all'arrivo dell'aggiornamento successivo, viene salvata la versione precedente del sistema, alla quale è possibile ripristinare in caso di problemi. Gli aggiornamenti vengono installati automaticamente senza l'intervento dell'amministratore.

La differenza fondamentale rispetto a distribuzioni simili come Fedora CoreOS, CentOS/Red Hat Atomic Host è l'obiettivo principale nel fornire massima sicurezza nell’ambito del rafforzamento della protezione del sistema da possibili minacce, rendendo più difficile lo sfruttamento delle 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" e il modulo viene utilizzato per la verifica crittografica dell'integrità della partizione root dm-verità. Se viene rilevato un tentativo di modificare i dati a livello di dispositivo a blocchi, il sistema si riavvia.

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.

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 protezione da overflow dello stack tramite sostituzione canary.
Per i pacchetti scritti in C/C++, sono inclusi flag aggiuntivi
"-Wall", "-Werror=format-security", "-Wp,-D_FORTIFY_SOURCE=2", "-Wp,-D_GLIBCXX_ASSERTIONS" e "-fstack-clash-protection".

Gli strumenti di orchestrazione del contenitore vengono forniti separatamente contenitore di controllo, che è abilitato per impostazione predefinita e controllato tramite 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 si trovano in contenitore di servizio separato, che è disabilitato per impostazione predefinita.

Fonte: opennet.ru

Aggiungi un commento