Drag

Chiama adesso!
800 93 1196

13 ottobre 2022

Tunneling HTTP e SSH: cosa sono, come crearli e rischi cybersecurity

Alex Baldarelli

Scritto daAlex Baldarelli

Tempo stimato per la lettura7 minuti

Spesso trovare il giusto equilibrio tra protezione, performance e utilizzo dei servizi non è mai semplice: si creano, infatti, delle vulnerabilità che contrastano con la necessità di svolgere appieno la propria attività in rete. Per questo motivo, per garantire la sicurezza dei dati e ridurre la superficie d’attacco sfruttata dagli hacker, si chiudono tutte le porte del firewall, a esclusione di quella dedicata al traffico web, la porta 80 HTTP. Certe volte però si ha l’esigenza di utilizzare determinati servizi e accedere a determinati spazi web che richiedono di comunicare sulle altre porte, solitamente “chiuse”. Esistono diversi metodi, ma oggi parleremo del tunneling HTTP e SSH. Vediamo di seguito di cosa si tratta e come funziona.

Tunneling HTTP: tutti sulle porta aperte!
Solitamente, la comunicazione sul web si basa su dei protocolli che splittano il messaggio in due parti (alcune volte anche di più): una che contiene i dati, l’altra le informazioni di trasmissione. Il mittente e il ricevente devono quindi utilizzare lo stesso protocollo, per poter comunicare in maniera efficace. Il protocollo di tunneling, comprende al suo interno un altro pacchetto, che sfrutta un protocollo comunicativo totalmente diverso. Viene realizzato quindi una sorta di tunnel dove possono circolare dati di qualsiasi tipologia.
Il tunneling http, nello specifico, non è altro che una tecnica che crea un collegamento tra due computer in una condizione di connettività di rete ridotta, come nel caso delle limitazioni imposte dal firewall. Pensa a questo tunnel come un telefono a corde sfruttato da due persone vicine per comunicare in modo segreto.

Questa metodologia si avvale di un “intermediario”, un server proxy per la connessione su server esterni e soprattutto per il traffico su qualsiasi porta: in questo modo si riuscirà ad eseguire applicazioni che viaggiano su porte diverse dalle consuete HTTP. Il server proxy può essere “allocato” in locale, nel computer dell’utente, oppure in qualsiasi punto di comunicazione tra l’utente e un server di destinazione sul web. Il server proxy, infatti, permette di creare un collegamento diretto tra due device, che altrimenti non sarebbero in grado di comunicare, utilizzando il protocollo HTTP e dando vita a un vero e proprio tunnel.

Si tratta, ad ogni modo, di una tecnica utilizzata soprattutto negli ambienti di rete LAN per “dirottare” le comunicazioni verso l’unica porta aperta, usualmente quelle utilizzata per il traffico web, la porta 80, ma anche la 443 (HTTPS). Molti firewall, infatti, non controllano il payload di un pacchetto http, di conseguenza non sanno se è un traffico HTTP “sano” o malevolo. I pacchetti HTTP, infatti, vengono inviati attraverso il firewall come traffico Internet.

Il tunneling, in sostanza, trasmette i dati della rete privata - comprensivi delle informazioni base del protocollo - mediante la rete pubblica, “incapsulando” i dati e sfruttando un protocollo di livello superiore, quale l’HTTP, per “trasportare” un protocollo di livello inferiore come il TCP.
I tunnel http stanno alla base di molti software open source, come TOR Browser, per instradare il traffico Internet attraverso più proxy per navigare nel più totale anonimato.

CONNECT to HTTP
Il metodo più utilizzato per realizzare questo tipo di tunnel è il CONNECT del protocollo HTTP, implementato dai proxy http. Questo metodo permette di accedere a siti web che utilizzano HTTPS, semplificando il passaggio di dati cifrati SSL e consentendo a un client di instaurare una connessione in cui il proxy non potrà registrare alcuna informazione non cifrata. Si tratta di un metodo valido anche se è un proxy che non “legge” il TLS, poiché il CONNECT può essere inviato anche all’interno di un semplice HTTP.
Il client sfrutta il metodo CONNECT per comunicare con un proxy o catene di proxy con l’URI finale che inizia con https://. L’URI (Uniform Resource Identifier) non è altro che l’identificativo dello spazio in cui è collocata la risorsa.

Nello specifico, con il metodo CONNECT il client chiede a un server proxy di effettuare il tunneling della connessione TCP a un server remoto. Sarà il server a effettuare la connessione per conto del client, pertanto le richieste vengono nascoste sotto il protocollo HTTP.
Tutto il traffico sulla connessione HTTP è gestito tra il client e il server remoto: il proxy diventa un tunnel TCP/IP da e verso il client. Solo la richiesta iniziale è di tipo http, poi il server invia un proxy alla connessione TCP già stabilita. E’ bene ribadire che è possibile trasmettere qualsiasi protocollo TCP attraverso un proxy HTTP.
Questa la sintassi generica.
CONNECT www.prova.com:443 http/1.1

In alcuni casi, il server proxy richiede l’autorizzazione per creare un nuovo tunnel, pertanto è necessario utilizzare il comando Proxy-Authorization.
Esempio:
CONNECT server.prova.com:80 HTTP/1.1
Host: server.prova.com:80
Proxy-Authorization: basic aRTcnG89d21ybHM=

Per dovere di cronaca, ricordiamo che è possibile creare un tunnel anche senza il metodo CONNECT, avvalendosi esclusivamente dei soliti metodi HTTP come POST, GET, PUT e DELETE.
Solitamente, il metodo CONNECT è abilitato solo sulla porta HTTPS. Tuttavia, è possibile pubblicare un servizio sulla porta 443 di un server SSH.

Oltre il tunneling HTTP: il protocollo SSH
Il protocollo SSH ha il vantaggio di includere nativamente la possibilità di creare un tunnel verso un servizio “bloccato” dal firewall. Questo protocollo viene purtroppo usato spesso dagli hacker, che una volta ottenuto l’accesso ssh sfrutta la connessione per accedere a servizi interni al server.
Spesso viene usato per ottenere una connessione FTP crittografata: il protocollo FTP non supporta di per sé la crittografia dei dati, pertanto utilizzare un tunnel ssh renderebbe le informazioni crittografate. Il tunneling SSH, infatti, permette di crittografare applicazioni che altrimenti non la supporterebbero.

Esistono tre tipologie di tunnel ssh.
  • Tunnel locale dal cliente ssh a un server ssh. Permette di accedere, attraverso una connessione al client, a servizi altrimenti “nascosti” al server. Nello specifico, il client ssh si mette in ascolto su una porta e nel momento in cui riceve una connessione la instrada verso il server ssh, attraverso il tunnel; sarà il server a instradare la connessione verso una specifica porta di destinazione.
  • Tunnel remoto dal server ssh al client ssh. Consente di raggiungere servizi del client attraverso una connessione al server. In sostanza, è il processo inverso al tunnel locale.
  • Dynamic Forwarding: consente di realizzare sul client un server proxy SOCKS, aprendo un insieme di porte.
Solitamente il tunnel SSH viene utilizzato su Linux o Mac, ma è attivabile anche su Windows, che tuttavia non dispone di una shell ssh già installato. Tuttavia, è possibile creare i tre tipi di tunnel con un software esterno denominato Putty SSH. Tuttavia, non approfondiremo in questa sede la sua configurazione e utilizzo.

È possibile addirittura creare un tunnel SSH su HTTPS, per superare i limiti imposti da un firewall, che blocca le connessioni SSH a livello di applicazione, superando anche il proxy web, in quanto quest’ultimo vedrà il traffico come HTTPS legittimo. E’ sufficiente un server Apache che riceverà le richieste HTTPS e le invierà alla porta 22. Il tunnel proxy, lato client, consentirà di convertire il traffico SSH in HTTPS, instradandoli sulla porta 443.



Tunneling e cybersecurity: rispetta al massimo le regole del firewall

Come abbiamo accennato, i protocolli di tunneling contengono al loro interno un pacchetto di dati completo che può essere sfruttato dai malintenzionati della rete. Se è vero che il tunneling http viene usato per accedere a dei servizi altrimenti inaccessibili, tanto da essere una tecnica valida e usata per aggirare la censura in Paesi dove l’informazione è controllata, al contempo è uno strumento da usare con assoluta parsimonia. Il consiglio è di privilegiare sempre la sicurezza alle performance e non superare e bypassare le regole del firewall.

E’ importantissimo ricordare che le aziende impostano delle regole rigide del firewall, affinché i dipendenti possano svolgere appieno le proprie attività, senza mettere a repentaglio la sicurezza dell’infrastruttura di rete. Aggirare il firewall sfruttando il tunneling http può costituire un pericolo per i dati aziendali e personali.
Innanzitutto, il tunneling complica attività come il controllo puntuale e dettagliato dei pacchetti oggetto della comunicazione, così come le opportune verifiche di integrità degli indirizzi di destinazione dei dati, aspetto fondamentale per ridurre il più possibile la probabilità di un attacco.

Abbiamo detto che con il metodo CONNECT, di fatto, si richiede al server di muoversi come proxy e di funzionare da tunnel. Il server dovrebbe effettuare dei controlli approfonditi per l’autenticazione e disporre di una strutturata policy di logging delle richieste. Uno dei rischi maggiori, infatti, è quello che una catena di proxy venga sfruttata per lanciare attacchi, restando al contempo completamente anonimi.
Per questo motivo, quanto descritto è da intendere puramente a titolo informativo e di conoscenza personale, pertanto consigliamo di limitare le tecniche di tunneling solo a esperti e professionisti IT che possono valutare nel migliore dei modi i rischi della procedura e garantire un equilibrio tra sicurezza e accesso ai servizi. E’ importante, infatti, dare sempre la priorità la capacità del sistema di bloccare tunnel creati dagli hacker, senza mettere eccessivamente in difficoltà i controlli di cybersecurity.

Realizziamo siti Internet sicuri e protetti con certificato di sicurezza SSL: contattaci per informazioni!
Cookie

Questo sito web utilizza cookie di terze parti

Questo sito utilizza cookie tecnici anonimi per garantire la navigazione e cookie di terze parti per monitorare il traffico e per offrire servizi aggiuntivi come ad esempio la visualizzazione di video o di sistemi di messaggistica. Senza i cookie di terze parti alcune pagine potrebbero non funzionare correttamente. I cookie di terze parti possono tracciare la tua attività e verranno installati solamente cliccando sul pulsante "Accetta tutti i cookie". Puoi cambiare idea in ogni momento cliccando sul link "Cookie" presente in ogni pagina in basso a sinistra. Cliccando su uno dei due pulsanti dichiari di aver preso visione dell'informativa sulla privacy e di accettarne le condizioni.
MAGGIORI INFORMAZIONI