LINUX

Come configurare OpenVPN su Ubuntu 16.04

Continuando la serie di articoli VPN, ora stiamo installando OpenVPN sul server Ubuntu 16.04. OpenVPN è un noto software VPN dell’omonima società. È un po’ più difficile da configurare rispetto ad altri programmi VPN, quindi ci concentreremo sulla configurazione del server e sulla creazione dei file ovpn in questo articolo. Questa guida è progettata per essere eseguita come utente non root. Se hai effettuato l’accesso come root, iniziamo aggiungendo prima l’utente non root.

adduser newuser

Quindi gli concediamo i diritti sudo e accediamo come utente

usermod -aG sudo newuser

su newuser

Puoi saltare questi passaggi se hai già utenti non root e molto probabilmente lo farai.

Ora che hai effettuato l’accesso come nuovo utente o qualsiasi altro utente non root, installeremo openvpn

sudo apt-get install openvpn easy-rsa

Certificati server e client

Innanzitutto, dobbiamo creare dir per la CA e modificare il file vars

make-cadir ~/openvpn-ca
cd ~/openvpn-ca
nano vars

Trova le righe che contengono export KEY_ e rendile tali

export KEY_COUNTRY="US"
export KEY_PROVINCE="New York State"
export KEY_CITY="New York City"
export KEY_ORG="Linoxide"
export KEY_EMAIL="newuser@example.com"
export KEY_OU="LinuxGeeks"

C’è anche la riga chiamata KEY_NAME nello stesso file, quindi inseriremo il server come nome lì

export KEY_NAME="server"

Dopo aver salvato il file vars, la prossima cosa che digitiamo è:

source vars

che dovrebbe darti la nota sul comando ./clean-all. Quindi scriviamo per assicurarci di eseguire l’ambiente pulito.

./clean-all

Ora passiamo alla parte della creazione del certificato:

./build-ca

Ti farà alcune domande, ma dato che ho modificato le variabili, i nuovi valori predefiniti dovrebbero essere ok, quindi puoi premere invio a tutti gli effetti.

./build-key-server server

Entra di nuovo, ma questa volta non in tutti i modi. Quando ti chiede di inserire la password, non inserirla e infine premi per creare il certificato. Il prossimo è Diffie Hellman:

./build-dh

Ci vorrà del tempo, quindi sii paziente. Successivamente abbiamo bisogno di ta.key per migliorare la sicurezza del server.

openvpn --genkey --secret keys/ta.key

E poi copiamo tutti i file rilevanti nella directory /etc/openvpn perché openvpn legge solo da lì.

cd ~/openvpn-ca/keys
sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn

Abbiamo finito con il certificato del server, quindi ora creiamo un certificato per client100.

cd ~/openvpn-ca

source vars
./build-key client100

I valori predefiniti dalla fonte sono di nuovo ok, quindi basta premere invio e y alla fine.

Configurazione del server

Per il punto di partenza copiamo la configurazione di esempio con il seguente comando:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

Successivamente, dobbiamo modificare server.conf per far funzionare il nostro server. Puoi usare qualsiasi editor, ma per ora useremo il comando sed

sudo sed -i 's/;push "redirect-gateway def1 bypass-dhcp"/push "redirect-gateway def1 bypass-dhcp"/g' /etc/openvpn/server.conf
sudo sed -i 's/;push "dhcp-option DNS 208.67.222.222"/push "dhcp-option DNS 208.67.222.222"/g' /etc/openvpn/server.conf
sudo sed -i 's/;push "dhcp-option DNS 208.67.220.220"/push "dhcp-option DNS 208.67.220.220"/g' /etc/openvpn/server.conf
sudo sed -i 's/;user nobody/user nobody/g' /etc/openvpn/server.conf
sudo sed -i 's/;group nogroup/group nogroup/g' /etc/openvpn/server.conf

sudo sed -i 's/;log-append/log-append/g' /etc/openvpn/server.conf

Cose che ho fatto qui: ho impostato tutto il traffico su OpenVPN, ho impostato il gruppo e l’utente su nogroup e nessuno e ho impostato i log in modo che andassero su /etc/openvpn/openvpn.log. Successivamente, abbiamo bisogno di un’altra modifica su ta.key:

sudo nano /etc/openvpn/server.conf

E trova questa linea

tls-auth ta.key 0 # This file is secret
key-direction 0

Questo è tutto per server.conf, quindi dobbiamo abilitare l’inoltro dei pacchetti per il nostro server Ubuntu

sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sudo sysctl -p

Anche le regole ufw devono essere modificate per consentire il mascheramento, quindi aggiungilo all’inizio, prima del filtro *
sezione

sudo nano /etc/ufw/before.rules
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

Nota che la parte eth0 che molto probabilmente dovrai modificare per riflettere il nome effettivo della tua interfaccia di rete rivolta a Internet, quindi l’ho evidenziata. Successivamente, abilitiamo il reindirizzamento in ufw come abbiamo fatto in sysctl:

sudo sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/g' /etc/default/ufw

Configuriamo il firewall

sudo ufw allow 1194/udp
sudo ufw disable

sudo ufw enable
sudo systemctl start openvpn@server
sudo systemctl status -l openvpn
stato openvpn

Se tutto è andato bene, abilita l’avvio di openvpn all’avvio

sudo systemctl enable openvpn@server

Configurazione del cliente

Con la parte di configurazione del client, utilizziamo i certificati che abbiamo già creato, ad esempio client100. Abbiamo anche bisogno dei file di configurazione del client

mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Il file che ho copiato è la configurazione di base, quindi deve essere modificato.

nano ~/client-configs/base.conf

E poi trova una riga che dice telecomando. Modificalo e punta all’indirizzo IP del tuo server dell’FQDN.

remote your.serv.ipor.fqdn 1194

Salva questo, come il resto della modifica che faremo con i comandi sed ed echo:

sudo sed -i 's/;user nobody/user nobody/g' ~/client-configs/base.conf
sudo sed -i 's/;group nogroup/group nogroup/g' ~/client-configs/base.conf

sudo sed -i 's/ca ca.crt/#ca ca.crt/g' ~/client-configs/base.conf
sudo sed -i 's/cert client.crt/#cert client.crt/g' ~/client-configs/base.conf
sudo sed -i 's/key client.key/#key client.key/g' ~/client-configs/base.conf

sudo echo key-direction 1 >> ~/client-configs/base.conf

Quindi cosa ho fatto qui? Per prima cosa impostiamo utente e gruppo su nessuno e nessun gruppo. Quindi ho commentato i percorsi dei certificati poiché integreremo i certificati in linea nel file .ovpn. Quindi ho aggiunto il parametro chiave di direzione 1.

Script per effettuare configurazioni client

Per incorporare la configurazione, le chiavi e i certificati del client in un singolo file .ovpn per un trasferimento più semplice ai client remoti, utilizzeremo un semplice script. facciamo

nano ~/client-configs/make_config.sh

E poi incolla . Dopo aver salvato questo, dobbiamo aggiungere il bit eseguibile, quindi esegui questo comando:

chmod +x ~/client-configs/make_config.sh

Quindi possiamo facilmente creare file di configurazione

cd ~/client-configs
./make_config.sh client100
ls ~/client-configs/files

La sintassi del comando è semplice, devi essere nella directory client-configs ed eseguire il comando con l’argomento che dice il nome del client che hai creato in precedenza. Se hai bisogno di più client, crea più certificati client con un nome diverso ed esegui di nuovo questo comando. Se tutto è andato bene, la directory client-configs/files dovrebbe contenere file ovpn. Devi trasferirli al tuo cliente o ai tuoi clienti e accedere. Lo farò con scp, dal mio laptop Fedora ho fatto l’ordine in questo modo

 scp newuser@ip.of.my.srvr:/home/newuser/client-configs/files/client100.ovpn /home/miki/Documents/

Da lì puoi caricarlo sul tuo telefono Android con un cavo USB o tramite AirDroid, oppure su una VM Windows o un Mac. Per il gestore di rete Linux, dovresti smontare il file

Conclusione

Si tratta della configurazione del server, quindi dovremmo connetterci da diversi client. Per Android possiamo usare OpenVPN Connect, per Mac Tunnelblick, per Windows c’è OpenVPN dal sito ufficiale e per Linux c’è il gestore di rete. In alcuni dei seguenti articoli tratteremo tutti questi.

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close