Torna al blog

Instradamento del traffico web senza una VPN tramite tunnel SOCKS

Instradamento del traffico web senza una VPN tramite tunnel SOCKS

Quando si tratta di proteggere la propria impronta sul web, potresti aver sentito parlare di VPN, giusto? Una VPN funge da intermediario tra il tuo computer e Internet. Tutto il traffico passa attraverso il server VPN, mascherando efficacemente il tuo indirizzo IP e la tua posizione.

Tuttavia, la VPN non è l'unica forma di server proxy. SOCKS (Socket Secure) è un protocollo di rete simile che consente di comunicare con i server attraverso un firewall instradando il traffico di rete per conto di un client. Rispetto alla VPN, SOCKS offre maggiore flessibilità e controllo sulla configurazione di rete. È utile quando non è possibile installare il client VPN o non ci si fida di un provider VPN.

Questa guida mostrerà come stabilire un tunnel proxy SSH SOCKS 5 e instradare il traffico web attraverso il tunnel.

Prerequisiti

Per la dimostrazione, abbiamo utilizzato una macchina locale con Ubuntu desktop e una macchina remota con Ubuntu server. È necessario avere SSH configurato prima di farlo funzionare correttamente. Poiché stiamo utilizzando un proxy SOCKS, per testare la connessione abbiamo bisogno di un'app che possa utilizzarlo. Firefox è un esempio perfetto. È un browser web moderno che supporta il tunnel proxy SOCKS 5.

Se sei su Windows, puoi utilizzare WSL (Windows Subsystem for Linux) per configurare un ambiente Linux locale oppure utilizzare PuTTY, un'app open-source in grado di implementare vari protocolli di rete come Telnet, rlogin, ecc.

Configurazione del tunnel SOCKS

  • Configurazione del tunnel SOCKS (macOS/Linux)

Sul computer locale, dobbiamo configurare una chiave SSH per garantire una connessione sicura. La chiave SSH deve anche essere registrata sul sistema remoto. Questa guida sulla configurazione dell'autenticazione basata su chiave SSH mostra il processo in dettaglio.

Il seguente comando SSH stabilirà un tunnel SOCKS verso il server remoto:

Analizziamo il comando:

  • -i: Indica a SSH quale chiave SSH utilizzare per la connessione.

  • -D: Indica a SSH che vogliamo stabilire un tunnel SOCKS. Per quanto riguarda la porta, stiamo utilizzando la porta 1024. Non è un valore fisso. Puoi scegliere qualsiasi porta tra 1024 e 65536.

  • -f: Il processo SSH verrà eseguito in background (forked).

  • -C: SSH comprimerà i dati prima di inviarli al server remoto. Ciò può ridurre il consumo di dati e aumentare la larghezza di banda effettiva.

  • -q: Esegue lo strumento in modalità silenziosa (quiet).

  • -N: Indica a SSH che dopo aver stabilito il tunnel non verrà inviato alcun comando.

Once run, we can verify if the process started properly. The following command will print info about all the running SSH processes:

Routing grep ssh

Ora puoi chiudere in sicurezza la finestra del terminale. Il processo SSH funzionerà come previsto in background.

  • Configurazione del tunnel SOCKS (Windows)

Per gli utenti Windows, l'uso di PuTTY è una soluzione più semplice. Per prima cosa, devi scaricare PuTTY:

Routing download putty

Una volta installato, avvia PuTTY:

Routing putty screen1

Dalla scheda Session nel pannello di sinistra, inserisci il Host Name (or IP address) del tuo server. Per quanto riguarda il Connection type, seleziona SSH. Successivamente, vai su Connection >> SSH >> Tunnels. Qui, sotto il campo Destination seleziona le opzioni mostrate nello screenshot:

Routing putty screen2

Successivamente, fai clic su Open. Si aprirà una finestra di terminale per connettersi al server remoto tramite SSH. Accedi al server remoto:

Routing putty screen 3

Implementazione del tunnel SOCKS

Il tunnel è ora configurato. Qualsiasi app che supporti SOCKS può utilizzare il tunnel. Per la dimostrazione, Firefox è un ottimo esempio.

Per prima cosa, apri Firefox. Nell'angolo in alto a destra, fai clic sull'icona del menu. Vai su Settings:

ubuntu screen1

Successivamente, cerca proxyFai clic su Settings in Configure how Firefox connects to the internet:

firefox preferences

Dopodiché, seleziona Manual proxy configuration. Per quanto riguarda l' SOCKS Host, utilizza localhost o 127.0.0.1. Quindi, per la porta, inserisci la porta che abbiamo dedicato al tunnel SOCKS. Non dimenticare di selezionare SOCKS_v5:

firefox proxy conf

Infine, spunta l'opzione Proxy DNS quando si utilizza SOCKS_v5. Fai clic su OK per continuare.

Successivamente, apri una nuova scheda e prova ad accedere a qualsiasi pagina web. Ad esempio, puoi verificare il tuo indirizzo IP da CheckMyIP.

Ripristino del proxy

Quando non hai più bisogno della connessione proxy al tunnel SSH, puoi disabilitarla in sicurezza dalle impostazioni proxy di Firefox:

Routing firefox reverting proxy conf

Dalla finestra, seleziona Utilizza le impostazioni proxy di sistema e clicca su OK.

Chiusura del tunnel SOCKS

  • Chiusura del tunnel su macOS/Linux

Per chiudere il tunnel, dobbiamo terminare manualmente il processo SSH. Abbiamo bisogno del PID (ID del processo) del processo SSH. Il comando seguente mostrerà i PID di tutti i processi SSH in esecuzione:

Prendi nota del processo SSH in esecuzione con il comando per creare il tunnel. Termina il processo:

Se non viene definita alcuna opzione, il comando kill invierà un segnale generico SIGTERM al processo di destinazione. Puoi scoprire di più sulla gestione dei processi Linux da questo tutorial.

  • Chiusura del tunnel su Windows

La chiusura della finestra di PuTTY dovrebbe chiudere la connessione del tunnel.

Risoluzione dei problemi

Ecco alcuni problemi comuni che potresti riscontrare quando cerchi di utilizzare SOCKS per instradare il traffico.

  • Firewall

Se non riesci a stabilire una connessione a causa di una restrizione del firewall, è probabile che il firewall sia configurato per bloccare la connessione alla porta 22. Questa è la porta predefinita utilizzata da SSH per connettersi ai sistemi remoti. Alcune porte rimangono aperte per impostazione predefinita, ad esempio la porta 80 (traffico web generale) e la porta 443 (TLS, traffico web sicuro).

Se il server SSH non distribuisce contenuti web, possiamo utilizzare una delle porte predefinite ( 80 o 443 ) invece della porta 22. Si consiglia di utilizzare la porta 443 poiché si aspetta traffico crittografato per impostazione predefinita. Crittograferà anche il traffico in uscita. Per apportare la modifica, dobbiamo modificare il file di configurazione di SSH. Apri il file in un editor di testo:

SSH può utilizzare più porte per il suo scopo. Scorri verso il basso il file di configurazione e trova la sezione relativa alla porta:

Routing sshd config

Una volta apportate le modifiche, salva il file e chiudi l'editor. Riavvia il servizio SSH per applicare la modifica:

Per verificare se la nuova porta funziona, prova a connetterti al server remoto utilizzando la nuova porta:

Se la connessione è andata a buon fine, possiamo utilizzare in sicurezza la porta 443 per il tunneling SSH. Ecco il comando modificato per stabilire il tunnel SOCKS:

Qui, il flag -p indica a SSH di utilizzare la porta 443.

Considerazioni finali

Al giorno d'oggi, la privacy e la sicurezza sono tra le preoccupazioni principali. Esistono molti modi per navigare in sicurezza quando ci si trova su una rete ostile. Nella maggior parte dei casi, l'uso di una VPN offrirà una sicurezza sufficiente per il traffico di rete. D'altra parte, un tunnel SOCKS ti offrirà la sicurezza necessaria se non puoi o non vuoi fidarti di una VPN. Avere un tunnel SOCKS ti offre anche il pieno controllo sulla configurazione.

Buon divertimento con l'informatica!

author

Pranay Kapgate

Autore · CloudSigma

Preslav Dobrev è un designer creativo presso CloudSigma, con un focus su un'identità aziendale coerente attraverso l'uso di canali di marketing tradizionali e innovativi. È abile nel fondere la visione artistica con il marketing strategico per creare narrazioni di brand di grande impatto.

Commenti

Ancora nessun commento. Scrivi il primo.