Microsoft ha pubblicato l'aggiornamento della distribuzione Azure Linux 3.0.20241203. La distribuzione viene sviluppata come una piattaforma di base universale per ambienti Linux utilizzati nell'infrastruttura cloud, nei sistemi edge e in vari servizi Microsoft. Le realizzazioni proprietarie del progetto sono distribuite con licenza MIT. Le build dei pacchetti sono create per le architetture aarch64 e x86_64. La dimensione dell'immagine di installazione è di 750 MB.
Tra le modifiche nella nuova versione:
- Il filtro pacchetti iptables è stato adattato per elaborare i comandi attraverso la traduzione delle regole in bytecode nftables (di default, invece di iptables-legacy, viene utilizzato il pacchetto iptables-nft).
- Per i sistemi Aarch64 è stato proposto un pacchetto aggiuntivo con il kernel kernel-64k, che utilizza grandi pagine di memoria, di dimensioni 64KB (il kernel è stato compilato con l'opzione CONFIG_ARM64_64K_PAGES).
- Nel gestore di pacchetti tdnf (analogo di dnf basato su C libs), è stata aggiunta la supporto per la configurazione 'installonlypkgs', che è utilizzata per organizzare l'installazione del kernel kernel-64k.
- Con l'uso di systemd-networkd è stata attivata l'elaborazione livenet rootfs da Dracut.
- È stato aggiunto un driver per gli adattatori di rete Intel Ethernet Connection E800.
- Nel gestore di log fluent-bit è stata aggiunta la supporto per il linguaggio Lua.
- È stata abilitata la verifica tramite firma digitale dei kernel caricati attraverso il meccanismo kexec.
- Per identificare le build dei container, invece di controllare il file '/.dockerenv', viene utilizzato l'utility systemd-detect-virt.
- Sono state aggiornate le versioni dei pacchetti, tra cui il kernel Linux 6.6.57, shim 15.8, SymCrypt 103.6.0, Valkey (fork di Redis) 8.0.1, Go 1.23.3, MariaDB 10.11.10, PostgreSQL 16.5.
La distribuzione Azure Linux offre un set di base di pacchetti fondamentali che fungono da base universale per creare contenitori, ambienti host e servizi eseguiti in infrastrutture cloud e su dispositivi edge. Soluzioni più complesse e specializzate possono essere create tramite l'aggiunta di pacchetti aggiuntivi sopra Azure Linux, ma la base per tutti questi sistemi rimane invariata, semplificando la manutenzione e la preparazione degli aggiornamenti.
Azure Linux è utilizzato come base per il mini-distro WSLg, che fornisce componenti del stack grafico per eseguire applicazioni GUI Linux negli ambienti basati sul sottosistema WSL2 (Windows Subsystem for Linux). Una funzionalità avanzata in WSLg viene realizzata tramite l'inclusione di pacchetti aggiuntivi con compositi. server Weston, XWayland, PulseAudio e FreeRDP.
Per la gestione dei servizi e del carico, viene utilizzato il gestore di sistema systemd. Per la gestione dei pacchetti sono forniti i gestori di pacchetti RPM e DNF. Il server SSH non è abilitato di default. Per l'installazione della distribuzione è fornito un installer che può operare sia in modalità testuale che grafica. Nell'installer è disponibile la possibilità di installare con un set completo o base di pacchetti, un'interfaccia per selezionare la partizione del disco, scegliere il nome dell'host e creare utenti.
Il sistema di build di Azure Linux consente di generare sia pacchetti RPM separati basati su file SPEC e sorgenti, sia immagini di sistema monolitiche create utilizzando lo strumento rpm-ostree e aggiornate in modo atomico senza suddivisione in pacchetti separati. Pertanto, sono supportati due modelli di consegna degli aggiornamenti: tramite l'aggiornamento di pacchetti singoli e tramite la ricostruzione e l'aggiornamento dell'intera immagine di sistema. È disponibile un repository che include circa 3000 pacchetti RPM già compilati, utilizzabile per assemblare le proprie immagini basate su un file di configurazione.
La piattaforma di base include solo i componenti essenziali ed è ottimizzata per un consumo minimo di memoria e spazio su disco, oltre a garantire elevate velocità di caricamento. Nel progetto si applica un approccio di "massima sicurezza per impostazione predefinita", che prevede l'inclusione di vari meccanismi aggiuntivi per aumentare la protezione:
- Filtraggio delle chiamate di sistema tramite il meccanismo seccomp.
- Crittografia delle partizioni disco.
- Verifica dei pacchetti tramite firma digitale.
- Randomizzazione dello spazio degli indirizzi.
- Protezione contro attacchi legati a collegamenti simbolici, mmap, /dev/mem e /dev/kmem.
- Modalità sola lettura e divieto di esecuzione di codice in aree di memoria in cui sono allocati segmenti contenenti dati del kernel e dei moduli.
- Opzione per vietare il caricamento dei moduli del kernel dopo l'inizializzazione del sistema.
- Utilizzo di iptables per la filtrazione dei pacchetti di rete.
- Abilitazione nella compilazione delle modalità di protezione contro il buffer overflow, le vulnerabilità di overflow dello stack e problemi di formattazione delle stringhe (_FORTIFY_SOURCE, -fstack-protector, -Wformat-security, relro).
Fonte: opennet.ru
