Microsoft ha pubblicato il primo aggiornamento stabile della nuova versione del distribuito Azure Linux 3.0, precedentemente noto come CBL-Mariner. Il distributivo si evolve come una piattaforma base universale per ambienti Linux utilizzati nell'infrastruttura cloud, nei sistemi edge e in vari servizi Microsoft. Il progetto mira a unificare le soluzioni Linux utilizzate da Microsoft e semplificare la manutenzione delle sistemi Linux di vario tipo. I progressi del progetto sono distribuiti sotto licenza MIT. Le build dei pacchetti sono formate per le architetture aarch64 e x86_64. La dimensione dell'immagine di installazione è di 740 MB.
Tra le novità nella nuova versione:
- Il kernel Linux è stato aggiornato alla versione 6.6 (precedentemente era in uso il kernel 5.15). È stata aggiunta la supporto per la sovrapposizione dei patch sul kernel in esecuzione (live patching), che consente di risolvere le vulnerabilità del kernel senza riavviare.
- Sono state proposte nuove versioni di pacchetti, tra cui systemd 255, glibc 2.38, GCC 13.2, clang 18.1, OpenSSL 3.3, rpm 4.18.2, ruby 3.3.0, BIND 9.20, containerd 1.7.13, kunc 1.1.12, ostree 2024.5, rust 1.75, Perl 5.38, Python 3.12.3, QEMU 8.2.0.
- Il sistema di controllo degli accessi SELinux è stato impostato di default in modalità «enforcing».
- Di default è attivata la gerarchia unificata cgroups v2. La principale differenza tra cgroups v2 e v1 è l'uso di una gerarchia cgroups comune per tutti i tipi di risorse, anziché gerarchie separate per la distribuzione delle risorse CPU, per la regolazione del consumo di memoria e per le operazioni di input/output.
- Sono stati aggiunti strumenti per la sostituzione di altri distributivi (OSsku In-Place Migration) sui nodi dell'cloud Microsoft Azure, ad esempio, è possibile sostituire Ubuntu installato con Azure Linux.
- È stata aggiunta la supporto per nuove GPU NVIDIA, come NVIDIA A100 e H100, ed è stato fornito NVIDIA GPU Operator per automatizzare la gestione dei driver NVIDIA sui nodi con Azure Linux.
La distribuzione Azure Linux fornisce un piccolo insieme standard di pacchetti di base, che funge da base universale per creare il contenuto dei contenitori, ambienti host e servizi eseguiti in infrastrutture cloud e su dispositivi edge. Soluzioni più complesse e specializzate possono essere create aggiungendo pacchetti aggiuntivi sopra Azure Linux, ma la base per tutti questi sistemi rimane invariata, semplificando la manutenzione e la preparazione degli aggiornamenti.
Ad esempio, Azure Linux è utilizzato come base per il mini-distributivo WSLg, nel quale sono forniti componenti del stack grafico per consentire l'esecuzione di applicazioni GUI Linux in ambienti basati sulla sottosistema WSL2 (Windows Subsystem for Linux). Le funzionalità avanzate in WSLg sono realizzate tramite l'inclusione di pacchetti aggiuntivi con compositing. server Weston, XWayland, PulseAudio e FreeRDP.
Per la gestione dei servizi e del caricamento viene utilizzato il gestore di sistema systemd. Per la gestione dei pacchetti sono disponibili i gestori di pacchetti RPM e DNF. Il server SSH non è abilitato di default. Viene fornito un installatore per l'installazione della distribuzione, che può funzionare sia in modalità testuale che grafica. Nell'installer è possibile scegliere tra un'installazione completa o basica dei pacchetti, viene fornita un'interfaccia per la selezione della partizione del disco, la scelta del nome host e la creazione di utenti.
Il sistema di build di Azure Linux consente di generare sia pacchetti RPM singoli basati su file SPEC e sorgenti di testo, sia immagini di sistema monolitiche, create utilizzando lo strumento rpm-ostree e aggiornate in modo atomico senza suddivisione in pacchetti singoli. Di conseguenza, sono supportati due modelli di distribuzione degli aggiornamenti: tramite l'aggiornamento di singoli pacchetti e tramite la ricostruzione e l'aggiornamento dell'intera immagine di sistema. È disponibile un repository che include circa 3000 pacchetti RPM già costruiti, che possono essere utilizzati per comporre immagini personalizzate basate su un file di configurazione.
La piattaforma di base include solo i componenti più necessari ed è ottimizzata per un minimo consumo di memoria e spazio su disco, oltre che per un'elevata velocità di avvio. Nel progetto si adotta l'approccio 'massima sicurezza di default', che implica l'attivazione di vari meccanismi aggiuntivi per aumentare la protezione:
- Filtraggio delle chiamate di sistema attraverso il meccanismo seccomp.
- Crittografia delle partizioni del disco.
- Verifica dei pacchetti tramite firma digitale.
- Randomizzazione dello spazio degli indirizzi.
- Protezione contro attacchi legati a link simbolici, mmap, /dev/mem e /dev/kmem.
- Modalità di sola lettura e divieto di esecuzione di codice in aree di memoria che ospitano segmenti con dati del kernel e moduli.
- Opzione per vietare il caricamento di moduli del kernel dopo l'inizializzazione del sistema.
- Utilizzo di iptables per il filtraggio dei pacchetti di rete.
- Attivazione durante la compilazione delle modalità di protezione contro lo straripamento dello stack, il bufferoverflow e problemi di formattazione delle stringhe (_FORTIFY_SOURCE, -fstack-protector, -Wformat-security, relro).
Fonte: opennet.ru
