Tor è una rete che permette di anonimizzare le attività di navigazione in Internet, per beneficiare di una connessione privata e più sicura, proteggendo l’identità e la posizione dell’utente. Come abbiamo spiegato nella guida su Tor, il sistema poggia su una rete di nodi che mascherano il traffico Web, rendendo difficile tracciare l’origine delle connessioni. Grazie a Tor, è possibile navigare in sicurezza, muoversi nell’anonimato e accedere a contenuti Web oscurati o sottoposti a censura, evitando qualsiasi attività di sorveglianza. Grazie a WSL 2 (Windows Subsystem for Linux versione 2), si può configurare una macchina Ubuntu Linux e anonimizzare la connessione reindirizzando il traffico sulla rete Tor.
Configurare Ubuntu su WSL 2 in Windows 10 e Windows 11
WSL 2 è una funzionalità di Windows che consente di eseguire una distribuzione Linux completa all’interno del sistema operativo Microsoft, il tutto utilizzando un kernel Linux nativo. A differenza della prima versione (WSL), WSL 2 impiega una macchina virtuale leggera per eseguire Linux, migliorando notevolmente le prestazioni e la compatibilità con le applicazioni sviluppate per il pinguino. In pratica, WSL 2 permette agli utenti di eseguire Linux su Windows, anche le applicazioni con interfaccia grafica, senza la necessità di una macchina virtuale pesante o di attivare configurazioni dual boot.
Come abbiamo visto nell’articolo dedicato a come portare Linux in Windows, dopo aver digitato cmd
nella casella di ricerca di Windows 10 o di Windows 11, bastano un solo comando per installare Ubuntu e accedervi tramite finestra del terminale:
wsl --install -d Ubuntu-24.04
Il comando proposto non solo installa WSL nel caso in cui non fosse presente, ma carica anche Ubuntu 24.04 LTS. In una finestra separata, è richiesto di definire le credenziali dell’utente root (username e password).
Dalla finestra di WSL, si può impartire il comando che segue per aggiornare l’installazione di Ubuntu appena caricata all’interno di WSL:
sudo apt update && sudo apt upgrade -y
Installare Tor su Ubuntu con WSL 2
Completata l’installazione della macchina Ubuntu in WSL 2, si può richiedere l’installazione di Tor:
sudo apt install tor -y
Concluso questo passaggio, si può accedere al file di configurazione di Tor:
sudo nano /etc/tor/torrc
Poiché tale file risulta integralmente commentato (#) per impostazione predefinita, si può incollare ciò che segue in cima a quanto visualizzato nell’editor di testo nano, quindi premere prima CTRL+O
e poi CTRL+X
per salvare le modifiche e chiudere l’applicazione:
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 9040
DNSPort 53
Le impostazioni appena introdotte nel file di configurazione di Tor, abilitano la gestione del traffico tramite un gateway trasparente. In altre parole, Tor diventa un proxy locale che si occupa della gestione del traffico di rete, senza bisogno di intervenire sulle impostazioni di ogni singola applicazione installata.
La direttiva VirtualAddrNetworkIPv4 10.192.0.0/10
definisce una rete virtuale IP che Tor utilizza per la comunicazione interna. Tor crea un spazio di indirizzi IP privati usati per la risoluzione dei domini DNS all’interno della rete Tor. Quando un’applicazione tenta di connettersi a un dominio tramite Tor, il traffico è prima reindirizzato a uno degli indirizzi di questa rete virtuale (in questo caso, 10.192.0.0/10), per poi essere effettivamente instradato attraverso Tor. Anche le richieste DNS (risoluzione dei nomi di dominio) transitano sempre attraverso Tor.
Affinché la configurazione sia presa in carico, si deve provvedere a riavviare Tor sulla macchina Ubuntu:
sudo systemctl restart tor
Configurare iptables per reindirizzare il traffico
iptables
è un’utilità che consente di configurare e gestire le regole per il controllo del traffico di rete che entra e esce da un sistema. Funziona a livello di rete (livello 4 del modello OSI) e permette di definire regole per filtrare pacchetti di dati in base a diversi criteri. Poiché iptables
non è presente di default nelle macchine Ubuntu su WSL, basta digitare quanto segue:
sudo apt install iptables -y
I comandi seguenti permettono quindi di pulire tutte le regole presenti nella tabella dei filtri di iptables
, la tabella predefinita per il filtraggio dei pacchetti. Successivamente, puliamo tutte le regole presenti nella tabella NAT (Network Address Translation).
Specifichiamo quindi che se il traffico è destinato all’indirizzo 127.0.0.1 (localhost), il pacchetto deve essere restituito senza alterazioni; se il traffico è generato dall’utente debian-tor
, è restituito senza modifiche; intercettiamo il traffico UDP destinato alla porta 53 (tipicamente utilizzata per le richieste DNS) e lo reindirizziamo alla stessa porta 53; rileviamo il traffico TCP con il flag SYN (indicando l’inizio di una nuova connessione) e lo inviamo automaticamente sulla porta 9040, la porta configurata per il proxy Tor.
sudo iptables -F
sudo iptables -t nat -F
sudo iptables -t nat -A OUTPUT -d 127.0.0.1 -j RETURN
sudo iptables -t nat -A OUTPUT -m owner --uid-owner debian-tor -j RETURN
sudo iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports 53
sudo iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports 9040
Per rendere permanenti le regole impostate digitiamo infine ciò che segue:
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
Provare la connessione con Tor, Ubuntu e WSL 2
Per verificare che tutto il traffico transiti adesso attraverso la rete Tor, è sufficiente incollare quanto segue nella finestra del terminale di Ubuntu/WSL:
curl --silent https://check.torproject.org/ | grep -m 1 "Congratulations"
Se il comando restituisce il messaggio Congratulations, this browser is configured to use Tor, significa che avete configurato con successo il gateway trasparente con Tor e che il traffico è effettivamente fatto transitare attraverso la rete Tor.
Proviamo adesso a creare uno script Python di test:
nano testip.py
Incolliamo quindi quanto segue al suo interno:
import requests # Fai una richiesta per ottenere l'IP pubblico response = requests.get('https://api.ipify.org/') print("L'IP pubblico:", response.text)
Salviamo al solito con CTRL+O
e poi usiamo CTRL+X
per chiudere l’editor di testo nano.
Lo script non fa altro che stabilire una connessione HTTPS con un’applicazione Web remota in grado di restituire l’indirizzo IP pubblico utilizzato dal client. Provate quindi a digitare:
python3 testip.py
L’indirizzo IP restituito corrisponde all’exit node dalla rete Tor. Questo a conferma che tutto il traffico sta viaggiando sulla rete in grado di anonimizzare ciascuna richiesta. Confrontate infatti l’indirizzo IP fornito dallo script Python con quello pubblico rilevabile, ad esempio, da un qualunque browser Web installato sulla macchina host. Potete seguire i consigli dell’articolo su come trovare il mio IP o, semplicemente, visitare questa pagina di Ipify.
Installare Chrome per Linux
A ulteriore conferma della bontà dell’intervento effettuato, provate a scaricare e installare Chrome per Linux, come riportato da Microsoft nella pagina di supporto Eseguire app Linux con GUI nel Sottosistema Windows per Linux:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install --fix-missing ./google-chrome-stable_current_amd64.deb
Avviando Chrome per Linux con interfaccia grafica da WSL 2 (digitare semplicemente google-chrome
), vedrete che visitando la pagina Check Tor, il browser Google mostra il messaggio: “Congratulations, this browser is configured to use Tor“. Ciò avviene proprio perché tutto il traffico passa effettivamente attraverso al rete Tor, grazie alle specifiche regole impostate in precedenza.
Come visibile nell’immagine, Chrome si apre in ambiente Windows all’interno di una finestra ma è la versione Linux installata nella macchina WSL 2 ad essere eseguita. E l’indirizzo IP mostrato corrisponde all’exit node della rete Tor.