- WSL 2 consente l'esecuzione di distribuzioni Linux reale su Windows con buone prestazioni e profonda integrazione tra i file system e comandi.
- La sicurezza dell'ambiente si basa su una buona gestione degli utenti, degli aggiornamenti, del firewall, della rete avanzata e dell'interoperabilità tra Windows e Linux.
- Nelle aziende, Intune, Defender for Endpoint e le immagini WSL personalizzate semplificano la standardizzazione e il controllo dell'utilizzo di WSL su numerosi dispositivi.
- Applicando le migliori pratiche in materia di networking, storage e manutenzione, WSL diventa un ambiente affidabile per lo sviluppo e i test prossimi alla produzione.
Se lavori con Windows ma hai bisogno Tutta la potenza di Linux per lo sviluppo o la gestione dei sistemiWSL diventa un compagno quasi obbligatorio. Il problema è che molti lo installano frettolosamente, senza considerare la sicurezza, le prestazioni o come integrarlo correttamente con gli strumenti aziendali. In un ambiente aziendale o con dati sensibili, questo equivale a giocare col fuoco.
Nelle righe seguenti vedrai come creare un ambiente WSL 2 veramente sicuro, ben configurato e confortevoleChe tu sia uno sviluppatore locale o che gestisca decine di computer in un'organizzazione con Intune, Microsoft Defender e controlli di rete avanzati, l'obiettivo è ottenere un WSL robusto, gestibile e facile da gestire, non solo "un altro Linux" di cui nessuno sa veramente cosa sta facendo.
Cos'è il WSL e perché è così interessante... ma non innocuo?
WSL (Windows Subsystem for Linux) è una funzionalità di Windows 10 e Windows 11 permettendo Esegui distribuzioni Linux complete direttamente su Windowssenza dover configurare una macchina virtuale tradizionale in VirtualBox o VMware. In pratica, si installa Ubuntu, Debian, Kali o AlmaLinux dal Microsoft Store e si utilizzano come qualsiasi altra applicazione.
Con WSL 2, Microsoft ha fatto un grande passo avanti: ora funziona un vero kernel Linux su un macchina virtuale leggera basata su Hyper-VCiò migliora notevolmente le prestazioni, la compatibilità con le chiamate di sistema e rende possibile l'utilizzo di strumenti che non erano possibili in WSL1, come Docker. database ambienti di apprendimento automatico pesanti o accelerati da GPU.
Il grande vantaggio è quello Non è necessario gestire manualmente la macchina virtuale o la rete complessaWindows è responsabile della configurazione dell'ambiente, del montaggio dei file system, dell'esposizione dei percorsi \wsl$ e della possibilità per Linux e Windows di "vedersi" a vicenda, sia a livello di file che di comando, con un'integrazione piuttosto trasparente.
Per gli sviluppatori e gli amministratori che utilizzano Windows ma distribuiscono su Linux, questo significa che ora possono lavorare in un ambiente praticamente identico alla produzione senza abbandonare il tuo desktop abituale, riutilizzando le stesse librerie, gestori di database, code di messaggi, server Web, ecc. E tutto questo senza rinunciare alla possibilità di continuare a utilizzare Visual Studio, Office o i tuoi consueti strumenti aziendali.
Installazione di base sicura di WSL 2
Il primo passo per avere un ambiente WSL sicuro è installarlo correttamente e su un sistema Windows aggiornatoA partire da Windows 10 22H2 e Windows 11 22H2, WSL è molto ben integrato nel sistema e con il comando semplificato wsl --install Puoi farlo funzionare in pochi minuti.
Innanzitutto è consigliabile Controlla la versione e la build di Windows.Premere il tasto Windows + R, digitare winver E verifica di avere una build recente. In caso contrario, aggiorna da Impostazioni o tramite l'Assistente Windows Update. Non si tratta di un capriccio: molti miglioramenti di rete, sicurezza e integrazione sono disponibili solo nelle versioni più recenti.
Quindi apri PowerShell o Simbolo del sistema come amministratore ed eseguire il comando di installazione di base:
wsl --install
Questo comando è responsabile di Abilita i componenti opzionali di WSL e della Virtual Machine PlatformScarica l'ultimo kernel Linux, imposta WSL 2 come versione predefinita e installa automaticamente una distribuzione Ubuntu (anche se puoi aggiungerne altre in seguito). Potrebbe essere necessario un riavvio durante il processo; non saltarlo, perché senza di esso, la virtualizzazione e il kernel non saranno configurati correttamente.
Se preferisci scegliere una distribuzione diversa da Ubuntu, come Debian, Kali, AlmaLinux o simili, puoi usare i comandi per elencare le immagini disponibili e installarle manualmente. wsl --install -d <NombreDistro>o scaricarli da Microsoft Store. Negli ambienti aziendali, puoi anche usa immagini personalizzate con wsl --import y wsl --export per garantire che tutti lavorino sulla stessa base approvata.
Creazione e gestione sicura di utenti e password in WSL
Una volta installata la distribuzione, la prima esecuzione dal menu Start avvierà una piccola procedura guidata che ti chiederà crea il tuo nome utente e password LinuxQueste credenziali non hanno alcuna relazione con l'account Windows; sono indipendenti per ogni distribuzione.
Quel primo utente diventa il utente predefinito con privilegi sudoCioè, sarà quello che potrà svolgere compiti amministrativi attraverso sudoDal punto di vista della sicurezza, è importante trattarlo per quello che è: un account potente. Scegline uno password sicuraNon riutilizzare quello di Windows ed evita di condividerlo "per comodità" con il resto del team.
Si noti che Ogni distribuzione installata in WSL ha il proprio set di nomi utente e passwordSe reinstalli, reimposti o importi una nuova distribuzione, dovrai ripetere il processo di creazione degli utenti. Se gestito correttamente, questo è un vantaggio: puoi isolare gli ambienti di sviluppo o di test con account separati.
Per cambiare la password Da un account, esegui semplicemente il comando all'interno della distribuzione passwdInserisci la tua password attuale e poi quella nuova. Se hai completamente dimenticato la tua password Linux, puoi entra come radice da PowerShell in esecuzione:
wsl -u root
Se la distribuzione non è quella predefinita, logorante:
wsl -d <NombreDistro> -u root
Una volta dentro, potrai aggiornare la password dell'utente interessato con passwd <usuario>Quando hai finito, scrivi exit per chiudere la sessione di root. Questa possibilità di elevare i privilegi da Windows è molto pratica, ma è consigliabile Proteggere efficacemente l'accesso al team PowerShellPerché se qualcuno si siede al tuo computer sbloccato, potrebbe usare questo metodo per modificare gli account Linux.
Manutenzione sicura: aggiornamenti di pacchetti e kernel
Windows non gestisce Aggiorna automaticamente lo spazio utente Linux all'interno di WSLCiò significa che, proprio come su un classico server Linux, sei tu (o il tuo team IT) a dover applicare regolarmente le patch di sicurezza per prevenire vulnerabilità in librerie, database, interpreti, ecc.
Nelle distribuzioni basate su Debian o Ubuntu, il ciclo di manutenzione minimo verrebbe eseguito periodicamente:
sudo apt update && sudo apt upgrade
In questo modo è possibile ottenere l'elenco più aggiornato dei pacchetti e applicare gli aggiornamenti disponibili. Può essere utile in ambienti aziendali. integrare strumenti specifici di gestione della configurazione (Puppet, Ansible, Chef, ecc.) che consentono di orchestrare questi aggiornamenti su più macchine contemporaneamente. Microsoft, ad esempio, illustra come eseguire Puppet su WSL 2 a questo scopo.
D'altra parte, anche il kernel WSL viene aggiornato in modo indipendente. Se, quando si tenta di utilizzare WSL 2, si ricevono messaggi come "WSL 2 richiede un aggiornamento del componente kernel", sarà necessario Scarica il pacchetto kernel aggiornato Scarica il kernel da Microsoft e installalo manualmente. È un semplice eseguibile: avvialo, riavvia e il gioco è fatto. Mantenere aggiornato il kernel è essenziale per beneficiare di miglioramenti delle prestazioni, della compatibilità e delle patch di sicurezza.
WSL, WSL 2 e altre tecnologie: scegliere lo scenario giusto
Prima di immergerci a capofitto nella protezione di un ambiente WSL, è opportuno chiarire quanto segue: In quali casi è lo strumento adatto e in quali no?In definitiva, hai altre opzioni: una macchina virtuale completa, Boot contenitori Docker doppi e puri, ecc.
WSL 1 era un livello di compatibilità che traduceva le chiamate Linux in Windows; utile per attività di base, ma limitato, senza il supporto completo del kernel e con problemi per strumenti come Docker. WSL 2, d'altra parte, esegue un vero kernel Linux in una VM leggera, con un hypervisor nativo, che offre miglioramenti delle prestazioni fino al 500% su determinati carichi di lavoro e supporta servizi che in precedenza erano impossibili.
Rispetto ad un macchina virtuale classicaWSL 2 è molto più leggero nel consumo di RAM e CPUSi avvia in pochi secondi e si integra completamente con il file system di Windows. Tuttavia, una VM tradizionale offre comunque dei vantaggi quando è necessario un controllo hardware molto granulare, scenari di produzione intensiva o configurazioni di rete molto specifiche.
Rispetto al dual boot, WSL evita di dover Riavviare il computer per passare da Windows a Linux e viceversa.Linux può leggere le partizioni senza problemi NTFS Windows, e grazie a WSL, può accedere ai file system ext4. Questo riduce notevolmente la necessità di cambiare sistema operativo solo per visualizzare o copiare file.
Infine, Docker e WSL sono una buona combinazione: Docker Desktop su Windows si basa su WSL 2 per distribuire in modo efficiente i container basati su Linux. Docker isola i servizi in container minimi, mentre WSL offre un ambiente Linux completo in cui sviluppare, testare e orchestrare tali contenitoriSono pezzi complementari, non rivali.
Accesso allo storage e al file system: sicurezza e prestazioni
Uno dei punti chiave per proteggere e ottimizzare il tuo ambiente è decidere dove archiviare i file del progettoSebbene Windows e Linux possano accedere ai rispettivi file system, non tutti gli scenari offrono le stesse prestazioni o lo stesso livello di controllo.
La raccomandazione generale per i progetti che utilizzano principalmente strumenti Linux è memorizzare il codice nel file system della distribuzioneVale a dire, su percorsi del tipo:
\\wsl$\<NombreDistro>\home\<Usuario>\Proyecto
L'accesso a questi percorsi da Linux è molto velocePer farlo da Windows, ad esempio con Explorer, è necessario il percorso di rete \\wsl$che è perfettamente supportato.
Ciò che bisognerebbe evitare è lavorare al contrario: lasciare i progetti in C:\Users\<Usuario>\Proyecto e manipolarli da Linux tramite /mnt/cFunziona, ma penalizza le prestazioni e, in caso di carichi di I/O elevati, l'impatto può essere evidente. Inoltre, combinare permessi e ACL di Windows con permessi POSIX di Linux può creare confusione se non si ha familiarità con questi sistemi.
Avviare Esplora risorse nella directory corrente da terminale WSL si realizza semplicemente con:
explorer.exe .
e da Linux accedere a Windows utilizzando i percorsi impostati in /mnt/c, /mnt/decc. Il trucco è usare questa interoperabilità come un jolly temporaneo e non come base principale del lavorosoprattutto se sei preoccupato per le prestazioni o la tracciabilità dei permessi.
Configurazione di editor e strumenti di sviluppo su WSL
Per rendere il tuo ambiente veramente produttivo, hai bisogno di un editor o IDE che si integra nativamente con WSL. Qui Visual Studio Code Visual Studio svolge un ruolo di primo piano, con un supporto specifico per lavorare "all'interno" della distribuzione come se fosse un server remoto.
Visual Studio Code, con il “Remote Development Pack”, ti consente di Apri una cartella WSL ed esegui estensioni, terminale e debugger direttamente in Linux. mentre l'interfaccia funziona su Windows. Una volta installate le estensioni appropriate, dal terminale WSL è sufficiente eseguire:
code .
Per aprire la directory corrente in VS Code mentre si è connessi alla distribuzione. Ciò consente di cambiare ambiente (host, WSL, ecc.). SSH, contenitore) praticamente al volo e senza "ingombrare" Windows con dipendenze specifiche del progetto.
Visual Studio 2022 ha migliorato anche la sua integrazione: ora puoi Compilare e eseguire il debug di progetti CMake destinati a WSLa macchine remote tramite SSH o a Windows stesso, il tutto dalla stessa istanza IDE. Per lo sviluppo C++ multipiattaforma, questa opzione è particolarmente potente, in quanto consente di verificare il comportamento in un ambiente Linux reale dalla comodità dell'ambiente Windows.
Configura la tua shell Per semplificare le attività quotidiane, ma con un approccio sensato, è consigliabile. Un esempio tipico è la modifica del file .bashrc o .zshrc per includere alias che facilitano l'accesso ai percorsi di Windows, come:
alias cnn="cd /mnt/c/Users/tu_usuario"
Tuttavia, è necessario prestare attenzione quando si lavora con questi file: un errore in .bashrc può lasciare il guscio in uno stato stranoPertanto, il modo ideale per aprirli è da WSL con VS Code (code .bashrc) e apportare modifiche incrementali, testando ogni modifica.
Controllo delle versioni e contenitori: Git e Docker in WSL
WSL è concepito per essere un elemento centrale del flusso di sviluppo moderno, e lì Git e Docker diventano compagni inseparabiliIntegrarli bene è essenziale sia per la produttività che per la sicurezza.
Con Git, la raccomandazione è di installarlo e utilizzarlo direttamente all'interno della distribuzione Linux. In questo modo, il terminazioni di riga, permessi dei file eseguibili e percorsi Gestiscono le stesse funzioni di qualsiasi normale ambiente Linux, riducendo le sorprese durante la distribuzione sui server. È possibile combinarlo con Windows Credential Manager per gestire l'autenticazione con GitHub, Azure DevOps o GitLab senza esporre token in chiaro all'interno del WSL.
Per quanto riguarda Docker, l'arrivo di WSL 2 ha segnato una svolta: Docker Desktop può ora sfruttare Macchina virtuale leggera WSL come motore di runtime del contenitore LinuxSi integra perfettamente con le distribuzioni Linux e offre prestazioni molto buone. Con la configurazione di rete appropriata e percorsi condivisi, è possibile avviare i container dal terminale WSL come se ci si trovasse su un server Linux puro.
Per scenari più avanzati, puoi anche Avvio di container direttamente da WSL senza Docker DesktopUtilizzando dockerd all'interno della distribuzione, sebbene in un ambiente aziendale sia solitamente più comodo standardizzare la soluzione Docker Desktop ufficiale e le sue policy di aggiornamento e telemetria.
Configurazioni avanzate di rete e firewall per un WSL sicuro
Quando parliamo di vera sicurezza, dobbiamo dare un'occhiata più da vicino a Comportamento della rete WSL e sua integrazione con il firewall di WindowsA partire da Windows 11 22H2 e WSL 2.0.9, le regole del firewall host vengono applicate automaticamente alle distribuzioni WSL, semplificando notevolmente il controllo.
Ciò significa che qualsiasi policy firewall aziendale configurata in Windows Defender firewall (o gestito da Intune o GPO) viene replicato efficacemente nell'ambiente WSL. In casi particolari, è possibile personalizzare ulteriormente il comportamento modificando il firewall Hyper-V, su cui WSL si basa internamente.
Inoltre, Microsoft ha introdotto opzioni avanzate nel file .wslconfig sezione bassa , come:
networkingMode=mirrored: Abilita una modalità di rete speculare che migliora la compatibilità con VPN, IPv6 e ambienti di rete complessi, evitando molti dei grattacapi della modalità NAT classica.dnsTunneling=true: cambia il modo in cui WSL risoluzione DNSUtilizzo di funzionalità di virtualizzazione anziché affidarsi a pacchetti di rete diretti. Molto utile in presenza di regole firewall aggressive, proxy o VPN che interrompono la risoluzione dei nomi.autoProxy=true: obbliga WSL a riutilizzare la configurazione del proxy HTTP di Windows, il che è fondamentale nelle aziende in cui tutto il traffico deve passare attraverso un proxy aziendale o sistemi di ispezione.
Se tutto questo è accompagnato da un buon controllo degli aggiornamenti, policy di accesso e segmentazione della rete, è possibile avere un ambiente WSL che non creare un "buco laterale" nella tua architettura di sicurezzama un componente più integrato e monitorabile.
Gestione aziendale: Intune, Defender for Endpoint e immagini personalizzate
Nelle organizzazioni in cui ci sono decine o centinaia di Portátiles Con WSL abilitato, non è più sufficiente che ogni sviluppatore "si arrangi". È necessario un approccio centralizzato alla configurazione, al monitoraggio e alla limitazione dell'utilizzo di WSL in linea con le politiche della casa.
Microsoft Intune, da parte sua, può essere utilizzato per gestire l'accesso a WSL, ai suoi componenti e ai parametri di sicurezza chiaveDa Intune è possibile applicare criteri per abilitare o disabilitare WSL come componente di Windows, definire configurazioni consigliate e distribuire file. .wslconfig con valori di rete specifici e garantire l'allineamento con il resto degli strumenti aziendali.
Un modello molto interessante per le aziende è il creazione di immagini WSL personalizzateL'idea è semplice: si installa WSL su una macchina di riferimento, Download Scegli la distribuzione Linux di cui hai bisogno (ad esempio, Ubuntu "aziendale" o AlmaLinux su misura per il tuo stack), installa pacchetti, strumenti, agenti e configurazioni standard e, quando hai tutto come lo desideri, esportare la distribuzione con:
wsl --export <NombreDistro> <RutaArchivo.tar>
Tale immagine in formato tar può essere distribuita internamente (condivisioni di rete, sistemi di gestione software, ecc.) e quindi a ciascun utente o dispositivo importarlo localmente con:
wsl --import <NombreDistro> <RutaInstalacion> <RutaArchivo.tar>
In questo modo tutti gli sviluppatori partono da un ambiente controllato e approvato per la sicurezzacon le stesse versioni di interpreti, database, agenti di monitoraggio e regole di protezione avanzata. Questa strategia è particolarmente utile quando si lavora con distribuzioni non disponibili nello Store (CentOS, varianti enterprise di Red Hat, ecc.) o quando si desidera una baseline molto specifica.
Interoperabilità dei comandi e accesso al file system di Windows
Una delle funzionalità più potenti (e allo stesso tempo delicate) di WSL è la interoperabilità tra i comandi Linux e WindowsDa PowerShell puoi eseguire strumenti Linux con wsl <comando>E da WSL puoi richiamare gli eseguibili di Windows che terminano in .exe.
Da PowerShell è possibile elencare il contenuto di una directory utilizzando ls -la tipico di Linux con:
wsl ls -la
o combinare ls con findstr (wsl ls -la | findstr "git") per filtrare i risultati, o viceversa, utilizzare dir | wsl grep gitDal terminale Linux puoi aprire Blocco note di Windows per modificare .bashrc con notepad.exe .bashrco sfruttare strumenti come ipconfig.exe ed elaborarne l'output con grep y cut.
Per quanto riguarda l'accesso ai file, quando un binario Linux all'interno di WSL apre un file in C:\, lo fa con i permessi dell'utente Windows che ha eseguito wsl.exeCiò significa che, anche se si dispone dell'accesso root all'interno della distribuzione, non sarà possibile eseguire operazioni amministrative su Windows se il proprio account Windows non lo consente. La sicurezza di Windows rimane il "livello rigido" sottostante.
Al contrario, questa interoperabilità richiede ordine. Non è una buona idea, ad esempio, Lasciare script che mescolano intensamente percorsi Windows e Linux senza una comprensione completa delle autorizzazioni e dell'impattoNegli ambienti sensibili, è consigliabile limitare gli strumenti Windows esposti tramite WSL e viceversa e insegnare agli utenti cosa è effettivamente in esecuzione su ciascun lato.
Applicazioni di montaggio GUI, GPU e unità in WSL
WSL è stato originariamente progettato per l'uso terminale, ma a poco a poco sono arrivate altre cose Funzionalità più avanzate: applicazioni grafiche Linux, accelerazione GPU e montaggio di dischi esterni con i tipici file system dei server.
Ora è possibile configurare WSL per l'esecuzione Applicazioni GUI Linux Questi si integrano con il desktop Windows, riducendo al minimo la necessità di macchine virtuali complete. Per chi ha bisogno di utilizzare IDE Linux nativi, strumenti con interfacce proprie o ambienti di amministrazione guidata, questo apre una gamma di possibilità molto interessante. In alcuni casi, vengono ancora utilizzate soluzioni esterne come Win-KeX (in Kali) che, tramite VNC, forniscono un desktop completo integrato con Windows.
Nell'ambito dell'apprendimento automatico e dei carichi di lavoro pesanti, WSL supporta anche Formazione accelerata dalla GPUImpostarlo correttamente autisti In questo ambiente, è possibile sfruttare la grafica del computer direttamente da Linux per attività ad alte prestazioni senza uscire dall'ecosistema Windows. Questo è particolarmente utile per data scientist e sviluppatori di intelligenza artificiale che desiderano un'unica workstation all-in-one.
Infine, WSL 2 consente Montare unità o dischi esterni con file system LinuxFile system come ext4, che in genere non sono visibili in modo nativo in Windows, possono essere montati da WSL se è necessario accedere a un disco dati su un server Linux o un sistema precedente. Ciò consente di lavorare dalla riga di comando senza ricorrere a strumenti di terze parti o a una macchina virtuale autonoma.
Tuttavia, la raccomandazione è di trattare queste configurazioni con lo stesso livello di cautela che si riserva a un server reale: Rivedere le autorizzazioni, evitare di eseguire script sconosciuti e controllare chi ha accesso alle apparecchiature fisiche e all'ambiente WSL.perché i dati raccolti possono essere molto sensibili.
Risoluzione dei problemi e migliori pratiche di sicurezza
WSL è robusto, ma non è privo di difetti. Errori di installazione tipici, problemi di compatibilità e conflitti di virtualizzazioneConoscere i problemi più comuni aiuta sia a risolverli rapidamente sia a evitare configurazioni malfunzionanti che in seguito possono avere conseguenze negative.
Gli errori comuni includono i codici 0x80070003 y 0x80370102 durante l'installazione, che di solito indicano problemi con la virtualizzazione nel BIOS/UEFI o con la posizione delle distribuzioni (WSL funziona correttamente solo sull'unità in cui è installato Windows, solitamente C:). Un altro errore comune è che il componente WSL opzionale non è abilitato; questo può essere corretto abilitando "Sottosistema Windows per Linux" da Funzionalità Windows o con i comandi DISM/PowerShell appropriati.
Un altro errore comune è il messaggio "Il sottosistema Windows per Linux non ha alcuna distribuzione installata", che può apparire anche se è già stata scaricata una distribuzione. In questi casi, di solito è sufficiente Eseguire la distribuzione almeno una volta dal menu Start. in modo che la configurazione iniziale venga completata prima di richiamarlo dalla riga di comando.
A livello di prestazioni, Verifica di essere in WSL 2 (Con wsl -l -v), che disponi di risorse hardware sufficienti, che non stai lavorando su percorsi lenti (/mnt/c per progetti di grandi dimensioni) e che la virtualizzazione non venga ostacolata da altre soluzioni (ad esempio, altre VM di terze parti o strumenti di sicurezza non configurati correttamente).
Da un punto di vista puramente di sicurezza, alcune buone pratiche di base sarebbero limitare il numero di distribuzioni installate (evitare raccolte di distribuzioni senza un reale utilizzo), utilizzare solo immagini approvate o note, mantenere aggiornati sia Windows che WSL, disabilitare WSL sui computer che non ne hanno bisogno e, nelle aziende, affidarsi a Intune e Defender for Endpoint per una visibilità e un controllo centralizzati.
Con tutto quanto sopra applicato, WSL passa dall'essere un semplice "Linux dentro Windows" a un un ambiente di lavoro solido e controllabile allineato alle politiche di sicurezza, che consente agli sviluppatori e agli amministratori di muoversi liberamente tra i mondi senza lasciare nulla in sospeso o backdoor improvvisate.
Scrittore appassionato del mondo dei byte e della tecnologia in generale. Adoro condividere le mie conoscenze attraverso la scrittura, ed è quello che farò in questo blog, mostrarti tutte le cose più interessanti su gadget, software, hardware, tendenze tecnologiche e altro ancora. Il mio obiettivo è aiutarti a navigare nel mondo digitale in modo semplice e divertente.