Connettere una macchina virtuale attraverso un proxy

Vediamo oggi come configurare una VM, ospitata all’interno di un sistema operativo host Windows, in modo da poterla collegare ad Internet passando attraverso un proxy. Ad esempio questo è necessario in alcuni ambienti dove la navigazione su Internet è possibile solo attraverso un proxy, per motivi di policy interne di sicurezza (aziendale per esempio…). […]

Difficoltà articolo (0->10): 5

Requisiti: conoscenze minime di software di virtualizzazione lato desktop.

Vediamo oggi come configurare una VM, ospitata all’interno di un sistema operativo host Windows, in modo da poterla collegare ad Internet passando attraverso un proxy. Ad esempio questo è necessario in alcuni ambienti dove la navigazione su Internet è possibile solo attraverso un proxy, per motivi di policy interne di sicurezza (aziendale per esempio…). Ecco un’immagine della nostra semplice infrastruttura:

Test infrastructure
Infrastruttura

Innanzitutto il nostro test è stato eseguito facendo uso di VMware Player, anche se può essere applicato bene anche nel caso di altri software di virtualizzazione lato desktop (Oracle VirtualBox …). Importante è anche bene conoscere come funziona la parte della connettività con un ambiente virtuale, e questo è un requisito fondamentale per poter poi andare a configurare i parametri corretti. E’ un argomento lungo, e necessiterebbe di un articolo a parte, ma in rete si trovano decine di post dettagliati come questo:

http://www.carbonwind.net/Virtualization/VMware-Player-Networking-Options/VMware-Player-Networking-Options.htm

Dunque, dobbiamo identificare qual’è la scheda di rete connessa ad Internet, se già non lo sappiamo, e per far ciò possiamo utilizzare il comando ipconfig come in figura.

Comando ipconfig
Comando ipconfig

In questo caso ci sono 3 schede di rete, e quella connessa ad Internet è quella con label “Local Area Connection”. Da notare che l’installazione di VMware Player\Workstation comporta la creazione di almeno due nuove schede di rete virtuali, come visibile sempre in figura. La creazione di questi 2 adapter virtuali è necessaria per il corretto funzionamento delle connessioni virtuali della VM, come è spiegato in dettaglio al link sopra indicato. In breve, la scheda di rete VMnet1 è usata dalla VM nel caso in cui sia selezionata l’opzione “Bridged” (vedere più sotto), mentre la VMnet8 nel caso venga usata l’opzione “NAT”.

Dunque, andiamo alla sezione di configurazione delle connessioni di rete di Windows, come in figura.

Network connections
Network connections di Windows

Selezioniamo le proprietà della schede di rete connessa ad Internet (“Local Area Connection”).

All’interno della finestra delle proprietà spostiamoci nel tab “Sharing“, e mettiamo una spunta alla proprietà “Allow other network users to connect through this computer’s Internet connection” controllando che sotto “Home networking connection” sia specificata la scheda di rete VMnet8 (la scheda di rete usata dalla VM). In questo modo i pacchetti inviati dalla VM potranno essere inoltrati verso il proxy e la rete esterna passando dalla scheda di rete specificata (qui appunto la “Local Area Connection”).

Internet Connection Sharing
Internet Connection Sharing

Adesso dobbiamo configurare la scheda di rete della VM. Apriamo VMware Player e la configurazione della nostra VM, e posizioniamoci all’interno delle proprietà alla voce “Network Adapter“. Qui selezioniamo le voci come nella figura sottostante, abilitando “Connect at power on” (praticamente è l’analogo del collegamento del cavo di rete alla scheda di rete, virtuale in questo caso) e scegliendo “NAT“.
VMware networking configuration

L’ultimo step è quello di avviare la VM e di configurare il sistema operativo della VM (Windows, XP, 7, 8, Linux, …) per l’utilizzo del proxy (ovviamente dobbiamo conoscere indirizzo IP e porta del proxy da usare):

oppure possiamo configurare le singole applicazioni all’interno della VM (browser, chat, …) per l’accesso tramite proxy.

roghan

[Articolo] Nella tua rete Tor è bloccato? Bypassiamo il blocco!

Vediamo oggi come usare Tor in presenza di sistemi/reti/ISP che ne bloccano il suo funzionamento.

Difficoltà articolo (0->10): 5

Vediamo oggi come usare Tor in presenza di sistemi/reti/ISP che ne bloccano il suo funzionamento. Innanzitutto Tor è un software appartenente alla categoria PET (Privacy Enhaced Technology), che permette di navigare in modo anonimo sul web e di “anonimizzare” una grande quantità di servizi distribuiti (chat, torrent, …).
Il suo utilizzo principale è quello di permettere la consultazione di pagine web e la fruizione di Internet senza vincoli in quei luoghi in cui sono in vigore restrizioni politiche o censure di vario genere. Tuttavia, Tor viene usato piuttosto comunemente anche per bypassare le restrizioni aziendali e poter così navigare su siti “proibiti” perché bloccati dal proxy e/o firewall aziendale. Non è raro, purtroppo, che venga usato esclusivamente per navigare su Facebook o su altri social network durante l’orario di lavoro. Per carità, Tor può essere usato anche per navigare su Facebook, ma i suoi intenti sono ben più nobili!

In ogni caso molte aziende, enti, e organizzazioni, stanno cercando da tempo meccanismi per intercettare e bloccare l’utilizzo di Tor, configurando ACL sui firewall e filtri sui proxy. Inoltre, in alcuni casi ad essere bloccato è anche l’accesso al sito di Tor, in modo da impedire il download del software e la ricerca di documentazione. Bloccare la connessione alla rete Tor non è impossibile, perché viene resa pubblica una lista dei nodi della rete Tor, aggiornata costantemente. La lista è reperibile a questi link:

Tale lista potrebbe essere usata per configurare un proxy (squid ad esempio) in modo da bloccare tutte le connessioni uscenti dirette ad uno degli IP delle lista. Il risultato di un tale blocco (vedere lo screenshot sotto) è che l’utente con il client Tor sarà impossibilitato a collegarsi alla rete Tor, e pertanto al resto della Rete.

tor_blocked
Tor bloccato dalla rete/ISP

Veniamo adesso al reale argomento del post :-): come possiamo fare se la nostra rete/ISP blocca la connessione a Tor? Quello che possiamo fare è ricorrere ad alcune contromisure in grado di bypassare il blocco imposto, garantendo anonimato e privacy, e accesso a tutte le funzionalità di Tor. Può capitare anche che venga bloccata la visualizzazione del sito del progetto Tor, ma in questo caso è possibile facilmente usare un proxy web gratuito per poter visitare il sito (esempi di proxy gratuiti sono www.hidemyass.com e zendproxy.com).

Dunque, se non ci è possibile usare Tor poiché la connessione si blocca dopo aver avviato il software, è possibile agire in 2 modi:

  1. usare obfsproxy;
  2. agire sulla configurazione di Tor.

OPZIONE 1 

Per la prima opzione, è necessario scaricare il software obfsproxy al seguente link:

obfsproxy è un software basato su Tor (è praticamente Tor a tutti gli effetti), ma in via sperimentale e con i bundle al momento non più aggiornati. Il software permette di mascherare i pacchetti inviati alla rete Tor, facendoli sembrare pacchetti “innocenti” (ad esempio semplice pacchetti HTTP) come è visibile in figura.

obfsproxy_diagram
Diagramma di funzionamento di obfsproxy

L’interfaccia e l’utilizzo di obfsproxy sono gli stessi di Tor, mentre a cambiare è la configurazione del software, come si vede in figura.

tor_obfsproxy
obfsproxy

OPZIONE 2 

In questo caso non sono necessari software aggiuntivi ma dobbiamo agire su alcuni parametri di Tor per poter aggirare i blocchi imposti da rete/ISP. I parametri da configurare sono modificabili direttamente dall’interfaccia Vidalia, e si trovano in Settings->Network come visibile in figura.

tor_settings_network
Parametri configurabili di Tor per aggirare i blocchi

Fra questi, il metodo più efficace e affidabile è quello di usare un bridge Tor, ossia la terza possibilità “My ISP blocks connections to the Tor network”. Vediamo comunque in dettaglio le 3 possibilità.

Opzione – “My ISP blocks connections to the Tor network”

Con questa opzione possono essere configurati i bridge Tor. Un bridge Tor è fondamentalmente un nodo della rete Tor che agisce da ponte (similmente a un proxy) per il collegamento tra client/utente e rete Tor. I bridge hanno la particolarità di non essere elencati nelle liste pubbliche di nodi Tor (come visto precedentemente), e pertanto difficilmente saranno rilevati e bloccati dagli amministratori di rete. Per conoscere i bridge disponibili in ogni momento, dobbiamo visitare il seguente link:

Dopo aver trovato i bridge Tor disponibili, è necessario configurarli in Setting->Network, come visibile nella figura seguente.

Add_bridge_to_Tor
Aggiunta di un bridge Tor.

In alternativa, è possibile creare un proprio bridge privato, se abbiamo a disposizione un server o un pc con connessione flat (ad esempio nella propria abitazione), e collegarsi ad esso quando siamo fuori e in una rete in cui Tor è bloccato. Per creare un bridge privato è sufficiente avviare Tor sulla macchina che fungerà da bridge, e selezionare in Settings->Sharing la voce “Help censored users reach the Tor network“, come visibile in figura.

Tor_setting_bridge
Configurazione di un bridge Tor privato.

Opzione – “I use a proxy to access the Internet”

Nel caso in cui la propria rete o il proprio ISP blocchi anche i bridge Tor, è possibile ricorrere all’uso di un proxy. Tramite un proxy i pacchetti uscenti dal proprio sistema, e quindi dal client Tor, sono indirizzati al proxy stesso e non alla rete Tor, e in questo modo viene oltrepassato il blocco imposto dalla rete/ISP. Nella figura sottostante è mostrato il collegamento attraverso un proxy.

tor.e.proxy.visio
Connessione a Tor attraverso un proxy.

Per questa soluzione il punto cruciale è la scelta di un proxy adeguato, che dovrà essere sicuro e affidabile, e supportare inoltre sia il protocollo HTTP che il quello HTTPS. Per ricercare un proxy possiamo usare questa lista (oppure cercare altre liste di proxy semplicemente con google), controllando che il proxy supporti HTTPS, sia di tipo anonymous, e abbia una buona affidabilità. Dopo aver scelto un proxy, dobbiamo controllare che sia attivo e supporti realmente sia HTTP che HTTPS. Quindi configuriamo Tor con le impostazioni del proxy, come visibile nella figura sotto.

Tor_setting_proxy
Configurazione di un proxy in Tor.

Per configurare il proxy sono necessari:

  1. indirizzo IP o hostname del proxy;
  2. porta utilizzata dal proxy;
  3. eventuali username/password se il proxy richiede l’autenticazione.

Questa soluzione è più tediosa rispetto all’utilizzo di un bridge, poiché i proxy open non offrono solitamente grandi garanzie e spesso le performance non sono eccelse. Difatti un proxy potrebbe non essere più attivo nel giro di poche ore o giorni, costringendoci a cercarne e configurarne un altro.

Opzione – “My firewall only lets me connect to certain ports”

L’ultima opzione configurabile deve essere utilizzata solo quando abbiamo la certezza che il firewall della nostra rete blocchi verso l’esterno alcune porte (in genere ad essere bloccate solo le porte esterno per connessioni verso l’interno). In questo caso è possibile selezionare la voce e specificare le porte che sono aperte sul firewall. La connessione alla rete Tor passerà dunque per le porte specificate.

Riepilogando, in questa piccola guida abbiamo visto come sia possibile usare Tor praticamente in ogni situazione, anche quando sono stati creati filtri ad hoc dagli amministratori/provider nel vano tentativo di limitare la libertà e la privacy personale.

“Per ogni blocco esiste sempre una contromisura, basta trovarla o idearla!”

roghan

JaXy, un proxy HTTP in Java

Rendo disponibile per il download un proxy HTTP che ho scritto in Java.

Il proxy effettua le operazioni base di un proxy, supportando il protocollo HTTP 1.1 e rispettando l’RFC 2616:

1. il client (browser) richiede una risorsa (URL);
2. il proxy intercetta la richiesta;
3. il proxy controlla la propria memoria cache per vedere se può rispondere al client direttamente oppure se deve richiedere la risorsa (URL) al server finale;
4. il server finale risponde al proxy;
5. il proxy aggiorna la propria memoria cache con la risposta del server;
6. il proxy crea un nuovo pacchetto ed invia la risposta al client. […]

Rendo disponibile per il download un proxy HTTP che ho scritto in Java.

Il proxy effettua le operazioni base di un proxy, supportando il protocollo HTTP 1.1 e rispettando l’RFC 2616:

  1. il client (browser) richiede una risorsa (URL);
  2. il proxy intercetta la richiesta;
  3. il proxy controlla la propria memoria cache per vedere se può rispondere al client direttamente oppure se deve richiedere la risorsa (URL) al server finale;
  4. il server finale risponde al proxy;
  5. il proxy aggiorna la propria memoria cache con la risposta del server;
  6. il proxy crea un nuovo pacchetto ed invia la risposta al client.

Nella figura seguente è mostrata la logica del funzionamento di un proxy HTTP.

HTTP_Proxy_architecture
Funzionamento di un proxy HTTP

Da Wikipedia: “In computer networks, a proxy server is a server (a computer system or an application) that acts as an intermediary for requests from clients seeking resources from other servers. A client connects to the proxy server, requesting some service, such as a file, connection, web page, or other resource available from a different server. The proxy server evaluates the request as a way to simplify and control their complexity.

L’applicazione non è una servlet ma è un server stand-alone, dunque non necessita di servlet engine o container (come Tomcat).

L’applicazione si chiama JaXy, abbreviazione di Java Proxy, ed è scaricabile e utilizzabile secondo la licenza GPLv3 al seguente link:

JaXy-v0.1.tar.gz – Initial release (2012-06-20):

  • supporto per HTTP 1.1, secondo le specifiche dell’RFC 2616
  • interfaccia semplice a linea di comando
  • supporto per IPv4

Matteo

Configurare un proxy da shell in Linux

Oggi vedremo come configurare il sistema per permettere alle applicazioni da linea di comando di utilizzare un proxy. Le applicazioni da linea di comando molto spesso non hanno infatti nativamente l’opzione per veicolare le trasmissioni verso un proxy, diversamente dalle applicazioni grafiche (ad esempio i browser hanno sempre le opzioni per la configurazione di eventuali proxy). Dunque, la soluzione per la linea di comando è quella di configurare i parametri del proxy come variabile d’ambiente, e costringere in questo modo l’applicazione a passare dal proxy. Tramite la shell sono supportati i proxy con protocollo HTTP, HTTPS, e FTP. Vediamo adesso in dettaglio come fare. […]

Oggi vedremo come configurare il sistema per permettere alle applicazioni da linea di comando di utilizzare un proxy. Le applicazioni da linea di comando molto spesso non hanno infatti nativamente l’opzione per veicolare le trasmissioni verso un proxy, diversamente dalle applicazioni grafiche (ad esempio i browser hanno sempre le opzioni per la configurazione di eventuali proxy). Dunque, la soluzione per la linea di comando è quella di configurare i parametri del proxy come variabile d’ambiente, e costringere in questo modo l’applicazione a passare dal proxy. Tramite la shell sono supportati i proxy con protocollo HTTP, HTTPS, e FTP. Vediamo adesso in dettaglio come fare.

Prima di tutto controlliamo tra le variabili d’ambiente che non siano già impostati proxy:

# ENV | grep -i proxy

Se non viene ritornato niente possiamo procedere a configurare il/i proxy:

# export http_proxy=http://<proxy-server-ip>:<port>
# export https_proxy=http://<proxy-server-ip>:<port>
# export ftp_proxy=http://<proxy-server-ip>:<port>

Nel caso in cui ci siano già state definite variabili proxy, è possibile eliminarle e definirle nuovamente:

# unset http_proxy
# export http_proxy=”http://<proxy-server-ip>:<port>”

Ricordo che le variabili d’ambiente definite con i comandi precedenti risultano temporanee, mentre per renderle permanenti è necessario modificare i file .bash_profile o .bashrc, come ho scritto dettagliatamente in questo post:

[GNU/Linux] Come configurare le variabili d’ambiente

Nel caso in cui il proxy richieda l’autenticazione è necessario invece configurare le variabili d’ambiente in questo modo:

# export http_proxy=<username>:<password>@http://<proxy-server-ip>:<port>/

Infine controlliamo di aver correttamente definito le variabili, osservando l’output dei comandi:

# echo $http_proxy
# echo $https_proxy
# echo $ftp_proxy

Ulteriori risorse sui proxy in Linux:

roghan

1000 download per il mio manuale sull’anonimato!!!

Anonimato

E’ stata appena superata la soglia dei 1000 download per il mio manuale sull’anonimato in rete, “Come nascondere l’identità in Rete”! Grazie davvero a tutti!!!!!! Anche se rispetto ai numeri che si trovano solitamente sul web è un valore minimale, è per me una grande soddisfazione :-)!! Per chi fosse interessato, lo può liberamente scaricare da questo link:

Download manuale

Matteo