GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare OpenVPN su Ubuntu 16.04

Continuando la serie di articoli sulla VPN, ora installiamo OpenVPN su Ubuntu 16.04 Server. OpenVPN è un noto software VPN dell'omonima azienda. È un po' più difficile da configurare rispetto ad altri software VPN, quindi in questo articolo ci concentreremo sulla configurazione lato server e sulla creazione di file ovpn. Questa guida è progettata per essere eseguita come utente non root. Se hai effettuato l'accesso come root, per prima cosa iniziamo con l'aggiunta dell'utente non root.

adduser newuser

Quindi gli diamo 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 fai.

Ora effettuato l'accesso come newuser o qualsiasi altro utente non root, installeremo openvpn

sudo apt-get install openvpn easy-rsa

Certificati server e client

Prima di tutto, dobbiamo creare la directory per l'autorità di certificazione e modificare il file vars is

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

Trova le righe che contengono export KEY_ e rendile così

export KEY_COUNTRY="US"
export KEY_PROVINCE="New York State"
export KEY_CITY="New York City"
export KEY_ORG="Linoxide"
export KEY_EMAIL="[email protected]"
export KEY_OU="LinuxGeeks"

C'è anche una riga denominata KEY_NAME nello stesso file, quindi inseriremo semplicemente il server come nome

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, quindi, digitiamolo per essere sicuri di eseguire l'ambiente pulito.

./clean-all

Ora passiamo alla parte di creazione del certificato:

./build-ca

Ti verranno richieste alcune domande, ma poiché abbiamo modificato vars, le nuove impostazioni predefinite dovrebbero essere ok, quindi puoi premere invio su tutti i conteggi.

./build-key-server server

Entra di nuovo, ma questa volta non su tutti i conti. Quando ti chiede di inserire la password, non inserirla e alla fine premi y 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, poiché 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

Le impostazioni predefinite di origine sono di nuovo ok, quindi premi semplicemente invio e y alla fine.

Configurazione del server

Come 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

Quindi dobbiamo modificare server.conf per rendere funzionante il nostro server. Puoi usare qualsiasi editor, ma 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 abbiamo fatto qui:impostiamo tutto il traffico in modo che vada su OpenVPN, impostiamo gruppo e utente su nogroup e nessuno e impostiamo i log in modo che vadano a /etc/openvpn/openvpn.log. Successivamente abbiamo bisogno di un'altra modifica su ta.key:

sudo nano /etc/openvpn/server.conf

E trova questa riga

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 di ufw devono essere modificate per consentire il masquerading, quindi aggiungilo all'inizio, prima di *filter
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 molto probabilmente devi cambiare per riflettere il nome reale della tua interfaccia di rete con connessione a Internet, quindi l'ho evidenziata. Successivamente abilitiamo l'inoltro 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

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

sudo systemctl enable openvpn@server

Configurazione client

Con la parte di configurazione del client, utilizziamo 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 abbiamo copiato è un'impostazione di base, quindi deve essere modificato.

nano ~/client-configs/base.conf

E poi trova una riga che dice remote. Modificalo anche puntando all'indirizzo IP del tuo server di FQDN.

remote your.serv.ipor.fqdn 1194

Salvalo, 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

Allora cosa abbiamo fatto qui? Per prima cosa impostiamo utente e gruppo su nessuno e nessun gruppo. Quindi abbiamo commentato i percorsi dei certificati, poiché integreremo i certificati inline nel file .ovpn. Quindi abbiamo aggiunto il parametro key-direction 1.

Script per creare configurazioni client

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

nano ~/client-configs/make_config.sh

E poi incolla lì questo pastebin. Dopo averlo salvato, 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 all'interno della 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 altro nome ed esegui nuovamente questo comando. Se tutto è andato bene, nella directory client-configs/files dovrebbe contenere file ovpn. Devi trasferirli al tuo o ai tuoi clienti e connetterti. Lo farò con scp, dal mio laptop Fedora ho eseguito comandi in questo modo

 scp [email protected]:/home/newuser/client-configs/files/client100.ovpn /home/miki/Documents/

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

Conclusione

Si tratta della configurazione del server, quindi dovremmo connetterci da vari 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 tutto questo.


Ubuntu
  1. Come installare e configurare OpenVPN Access Server

  2. Come configurare un server OpenVPN su Ubuntu 20.04

  3. Come installare e configurare il server DHCP su Ubuntu 20.04

  4. Come installare e configurare il server Redis in Ubuntu

  5. Come installare OpenVPN su Ubuntu 18.04

Come configurare OSSEC su Ubuntu - Parte 2

Come installare e configurare DHCP su Ubuntu 18.04

Come configurare il server DNS su Ubuntu 18.04 / Ubuntu 16.04

Come configurare OpenVPN su Ubuntu Server

Come configurare e configurare un server OpenVPN su Ubuntu 22.04

Come installare il server OpenVPN su Ubuntu 20.04 LTS