Creare un server VPN open source con OpenVPN

Nell’articolo Installare e configurare OpenVPN su Kali Linux di qualche tempo fa, ho descritto brevemente come installare OpenVPN e configurarlo per l’utilizzo lato client.

Ho anche spiegato gli enormi vantaggi nell’uso di una VPN, ma se vi siete interessati un minimo alla questione e avete guardato qualcuno dei siti di provider che offrono questo tipo di servizio, avrete notato all’istante il suo principale svantaggio: il costo.

Ci sono provider che offrono servizi VPN gratuiti, ma generalmente tendono a limitare la banda, il traffico giornaliero o il numero di dispositivi con possibilità di connessione.

Niente paura, se avete voglia di sporcarvi un po’ le mani o più semplicemente siete curiosi di come possa funzionare una VPN, vi introduco a quella che potrebbe essere una soluzione a questo problema, descrivendo una guida per la creazione di un server VPN completamente autonomo e indipendente.

 

Prerequisiti

Ovviamente per creare un server VPN sarà necessario avere a disposizione un server. Può essere una macchina server fisica, una macchina virtuale, un VPS o un Cloud Server: non importa la sua natura, l’importante è che ci dia la possibilità di installare un sistema operativo server.

Per realizzare questo tutorial ho optato per Ubuntu Server date le sue doti di affidabilità e semplicità nell’utilizzo, ma la procedura che andrò a descrivere non dovrebbe variare molto anche per altre distribuzioni Linux.

 

Installazione del software necessario

Per realizzare il server VPN avremo bisogno di:

  • OpenVPN, il programma principale che si occuperà della connessione;
  • Easy-RSA, un pacchetto per la gestioni delle chiavi basato su OpenSSL;
  • UFW, uno strumento che semplifica la gestione di Iptables e configura un firewall per il nostro server;

Installiamo il software indicato sopra, lanciando il seguente comando da una shell di root

apt-get install openvpn easy-rsa ufw

 

Configurazione di OpenVPN

Copiamo il file di configurazione di esempio di OpenVPN nella cartella di installazione del software e lo apriamo con un editor testuale

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf nano /etc/openvpn/server.conf

e lo modifichiamo, cambiando la riga dh1024.pem in dh2048.pem (ciò garantirà una maggiore sicurezza modificando la chiave di cifratura da 1024 a 2048 bit) e decommentiamo le seguenti righe:

  • push "redirect-gateway def1 bypass-dhcp"
  • user nobody
  • group nogroup

Salviamo e chiudiamo il file.

Abilitiamo il forwarding dei pacchetti con il comando echo 1 > /proc/sys/net/ipv4/ip_forward

e lo rendiamo effettivo all’avvio del sistema aprendo il file /etc/sysctl.conf e decommentando la riga net.ipv4.ip_forward=1

 

Configurazione di UFW

Apriamo le porte necessarie per la comunicazione con il server da remoto e di default di OpenVPN digitando da terminale

ufw allow ssh ufw allow 1194/udp

Apriamo il file di configurazione di UFW /etc/default/ufw e cambiamo la riga DEFAULT_FORWARD_POLICY="DROP" in DEFAULT_FORWARD_POLICY="ACCEPT", salviamo e chiudiamo il file.

Apriamo il file /etc/ufw/before.rules e aggiungiamo le seguenti regole subito dopo il primo blocco di commento ammettendo che eth0 sia la nostra interfaccia di rete

*nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT

Salviamo e chiudiamo il file e abilitiamo UFW digitando da shell ufw enable

 

Configurazione e creazione di una Certification Authority

Copiamo gli script di generazione dei certificati Easy-RSA nella cartella di installazione di OpenVPN e creiamo la cartella che conterrà chiavi e certificati

cp -r /usr/share/easy-rsa/ /etc/openvpn mkdir /etc/openvpn/easy-rsa/keys

Apriamo il file /etc/openvpn/easy-rsa/vars attribuiamo valori che si addicano al nostro ambiente alle seguenti variabili

export KEY_COUNTRY export KEY_PROVINCE export KEY_CITY export KEY_ORG export KEY_EMAIL export KEY_OU

e diamo un nome alla chiave del server

export KEY_NAME="server"

Salviamo e chiudiamo il file.

Sempre attraverso una shell, generiamo il file dei parametri Diffie-Hellman, ci spostiamo nella cartella di generazione delle chiavi, inizializziamo PKI (Public Key Infrastructure), puliamo la cartella delle chiavi e infine creiamo la Certification Authority

openssl dhparam -out /etc/openvpn/dh2048.pem 2048 cd /etc/openvpn/easy-rsa . ./vars ./clean-all ./build ca

 

Generare certificato e chiave per il server

Supponendo di trovarci ancora nella cartella di generazione dei certificati, lanciamo da terminale il comando ./build-key-server server dove server è il valore attribuito alla variabile KEY_NAME nel file di configurazione delle variabili della Certification Authority, e diamo conferma con y ad entrambe le domande che ci verranno poste durante la generazione del certificato.

Copiamo chiave e certificati generati in /etc/openvpn digitando cp /etc/openvpn/easy-rsa/keys/{server.crt,server.key,ca.crt} /etc/openvpn e finalmente avviamo il server con service openvpn start

 

Generare certificato e chiave per i client

Possiamo generare una chiave non protetta digitando ./build-key newclient oppure protetta da password con ./build-key-pass newclient

Se il client per il quale stiamo creando il certificato è Linux abbiamo concluso, basterà scaricare i file ca.crt, newclient.crt e newclient.key ed inserirli nella configurazione di OpenVPN per utilizzare la rete.

Per gli altri client sarà necessario qualche passo in più, in quanto essi si aspettano di ricevere un file con estensione ovpn.

Copiamo il file di configurazione di esempio nella cartella di generazione dei certificati di Easy-RSA modificandone l’estensione

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/easy-rsa/keys/client.ovpn

Apriamo il file /etc/openvpn/easy-rsa/keys/client.ovpn e lo modifichiamo come segue

remote [indirizzo-ip-pubblico-del-server] 1194

Con il simbolo # davanti ad ognuna di esse commentiamo le righe

# ca ca.crt # cert client.crt # key client.key

Aggiungiamo in fondo al file con una sintassi simile all’xml

<ca> [contenuto-file-ca.crt] </ca> <cert> [contenuto-file-newclient.crt] </cert> <key> [contenuto-file-newclient.key] </key>

 

A questo punto possiamo scaricare il file /etc/openvpn/easy-rsa/keys/client.ovpn sul nostro dispositivo e iniziare ad utilizzare la VPN.

Baty’s Base


Stai cercando prodotti per l’hacking, la sicurezza informatica e il penetration testing? Hai bisogno di bonificare il tuo smartphone, il tuo pc o il tuo sito da virus e malware? Devi rintracciare una persona o recuperare delle informazioni urgenti? Devi riprendere possesso di un account, una mail o di una password che ti hanno sottratto? Vuoi acquistare device già configurati per sperimentare tutte le tecniche di hacking in modo facile e veloce? Hai esigenze particolari in ambito software o hardware? Possiamo aiutarti!

Contattaci subito per avere un aiuto immediato : dettagliaci tramite mail o Whatsapp che tipo di supporto ti occorre e ti invieremo un riscontro immediato!

Compila e invia il modulo qui sotto per inviarci subito una richiesta di supporto

Scrivi il tuo indirizzo email qui

Scrivi qui come possiamo aiutarti - ti supportiamo immediatamente per ogni tua esigenza!

chevron_left
chevron_right