giovedì 29 agosto 2019

Aggirare il firewall aziendale con una VPN, for dummies

Problema: per ragioni sicurezza i firewall di molte aziende bloccano la maggior parte delle porte e ne consentono solo alcune, come la 80 o la 443. In questi casi, per poter utilizzare una VPN, non abbiamo scelta se non usare una porta che raramente viene bloccata: la 443. Ma come fare se è notoriamente già riservata a HTTPS?


Vedremo come utilizzare OpenVPN, nonostante la porta 1194 di default sia bloccata.
Il problema evidenziato in questo articolo presuppone che, sullo stesso server in cui è hostata la VPN, ci sia un webserver che deve fornire pagine su HTTPS, altrimenti basterebbe impostare direttamente la VPN per utilizzare la porta 443.

Nota: per questa guida è richiesta una buona conoscenza di base della shell di Linux.

La VPN da me utilizzata è OpenVPN, il webserver nginx e la piattaforma hardware un Raspberry Pi.

Step 1: la VPN
Nello specifico, è stato utilizzato il progetto PiVPN per velocizzare le operazioni di setup.
Seguite il wizard di PiVPN e installate OpenVPN con protocollo TCP scegliendo come porta quella di default (1194) o un'altra a vostro piacimento. Io ho scelto la 1195.
Generate un certificato con il comando pivpn -a e modificatelo a mano cambiando la porta da 1195 a 443 (il wizard di PiVPN genera certificati in base alla configurazione della VPN che avete specificato).


Step 2: il webserver
Assunto che il web server, correttamente installato e configurato, risponda sulle porte 80 e 443, sarà necessario modificare la porta HTTPS di default su cui è in ascolto.
Usando Certbot per usufruire del certificato Let’s Encrypt, è necessario editare la configurazione in questione in /etc/nginx/sites-available cambiando porta HTTPS 443. Nel mio caso ho aggiunto un 4, ottenendo la porta 4443.
Bisogna inoltre specificare a nginx di rimanere in ascolto solo sull'interfaccia localhost e non su tutte le interfacce di rete.
Modificare quindi listen 443 ssl; in listen 127.0.0.1:4443 ssl;.

Prima
Dopo

Dopo di che riavviate il servizio con il comando service nginx restart.
La stessa configurazione per Apache è pressoché identica.

Step 3: il protocol multiplexer
sslh è una fantastica applicazione open source che funziona da multiplexer applicativo per i protocolli. In poche parole analizza il primo pacchetto ricevuto e smista la richiesta a chi di dovere, in base alla configurazione.
Installiamola con sudo apt intall sslh selezionando le opzioni preferite e successivamente modifichiamo il file di configurazione /etc/default/sslh come segue:

RUN=yes
DAEMON_OPTS="--user sslh --transparent --listen 0.0.0.0:443 --ssl 127.0.0.1:4443 --openvpn 127.0.0.1:1195 --pidfile /var/run/sslh/sslh.pid" 

In pratica, con questa configurazione, stiamo dicendo a sslh di ascoltare la porta 443 su tutte le interfacce di rete e di indirizzare il traffico OpenVPN alla 1195 in localhost, mentre il traffico HTTPS/SSL alla 4443 in localhost.

Riavviate il servizio con il comando service sslh restart et voià.

Fonti: 1 e 2

Nessun commento:

Posta un commento