Come configurare smartphone e PC. Portale informativo
  • casa
  • Windows 10
  • Installazione di openvpn su Ubuntu 16.04. Installazione e configurazione del client OpenVPN su Ubuntu

Installazione di openvpn su Ubuntu 16.04. Installazione e configurazione del client OpenVPN su Ubuntu

Ha reso il mio lavoro legando insieme LAN distribuite. La prima esperienza è stata la configurazione di un server per FreeBSD, ma poi, come si suol dire, è iniziata. Ad oggi, quasi tutti i server che ho configurato eseguono Ubuntu Linux di una versione o dell'altra.

E proprio di recente ho notato che tra la spazzatura immagazzinata in /etc/init.d, uno script con un nome è discretamente nascosto. "E allora?" - Un amministratore esperto chiederà immediatamente. Il fatto è che, fino a poco tempo, l'aumento delle interfacce di rete, tra cui TUN, ho organizzato esclusivamente tramite /etc/rete/interfacce, operando con opzioni pre-up per avviare il demone OpenVPN e le opzioni pre-down per fermarlo. Tutta questa "disgrazia" è stata diluita ovunque da vari comandi che manipolano le tabelle di routing ... In generale, l'immagine si è rivelata piuttosto ingombrante. In linea di principio, tutto ha funzionato abbastanza bene da solo, ma poiché esiste un altro (Ubuntu-way?) Percorso fornito dagli sviluppatori, allora perché non usarlo, soprattutto perché questo si scaricherà in modo significativo /etc/rete/interfacce... Quindi quello che ho ottenuto.

Installazione di OpenVPN

L'installazione di OpenVPN su Ubuntu non richiede alcun trucco con le orecchie:

$ sudo apt-get install openvpn

Assicurati di confermare che tutte le dipendenze siano installate.

Coloro che desiderano/devono installare OpenVPN dalla sorgente dovranno familiarizzarsi con.

Se sei interessato a pacchetti binari per altre piattaforme, visita.

Posizione dei file chiave

Dato che in questo articolo ho deciso di parlare della configurazione lato client di OpenVPN, allora penseremo che tu abbia già dei file di chiave di crittografia (te li ha forniti l'amministratore del server OpenVPN). Il numero e il tipo di chiavi dipendono da come è configurato il server OpenVPN a cui ti stai connettendo. Questo articolo presuppone che vengano utilizzati tre file per la crittografia e l'autenticazione:

  • chiave di crittografia privata del client nel formato .pem(chiamiamolo il file chiave.cliente);
  • Certificato client firmato dalla CA nel formato .pem, (chiamiamolo il file cliente.crt);
  • certificato dell'autorità di certificazione del server nel formato .pem con cui è stato firmato il file cliente.crt(chiamiamolo il file ca.crt)

Dopo aver ricevuto la chiave e i certificati, assicurati di prenderti cura della loro sicurezza. Una buona soluzione sarebbe quella di posizionare tutto questo materiale su un'unità flash USB crittografata, ad esempio. In questo articolo, assumeremo che le chiavi e i certificati si trovino nella directory / media / tasti... Inoltre, assicurati di lasciare i diritti di accesso minimi alla directory con la chiave e i certificati:

$ sudo chown -R root.root / media / keys
$ sudo chmod 0700 / media / tasti
$ sudo chmod 0600 / media / chiavi / *
# ls -la / media / keys
drwx ------ 2 radice radice 1024 2010-08-18 15:32.
drwx ------ 5 radice radice 1024 2010-08-18 15:24 ..
-rw ------- 1 radice radice 1265 2010-08-18 22:27 ca.crt
-rw ------- 1 root root 3821 2010-08-18 15:13 client.crt
-rw ------- 1 root root 887 2010-08-18 15:13 client.key

file di configurazione

I file di configurazione di OpenVPN si trovano solitamente in una directory o / usr / local / etc / openvpn... Per questo articolo presumo che tu abbia installato OpenVPN dai repository di Ubuntu e che la directory per l'archiviazione della configurazione sia.

Se ti stai connettendo a un server OpenVPN che non è stato configurato da te, di solito qualcuno dovrebbe darti un file di configurazione "base" contenente il set minimo di parametri richiesto. Tra i parametri di configurazione di OpenVPN, individuali per l'host client, molto spesso ci sono i percorsi dei file di chiavi e certificati, nonché i percorsi di script esterni, script di inizializzazione.

Diciamo che il server a cui ti stai connettendo è chiamato myvpnsrv.com... È abbastanza comodo nominare i file di configurazione (ce ne possono essere molti se si utilizzano più connessioni o diverse varianti di qualsiasi connessione) in base ai nomi dei server. Quindi, nel nostro esempio, il file di configurazione si troverà in /etc/openvpn/myvpnsrv.conf con il seguente contenuto:

cliente
remoto myvpnsrv.com
ca /media/keys/ca.crt
chiave /media/keys/client.key
cert /media/keys/client.crt
demone
dev tun
proto udp
comp-lzo

La prima riga dice a OpenVPN che la connessione sarà in modalità client.

Valore del parametro a distanza specifica il nome host o l'indirizzo IP del server.

Valori dei parametri circa, chiavi e certo definire rispettivamente i percorsi del file del certificato CA, della chiave privata e del certificato client.

Specificando il parametro demone stiamo costringendo OpenVPN a staccarsi dalla console ed eseguire in background.

Parametro sviluppo specifica il tipo di interfaccia di rete che verrà utilizzata per scambiare traffico crittografato con il server. potrebbe importare tun o rubinetto... La differenza fondamentale tra questi due tipi di interfacce può essere trovata e.

Parametro prototipo definisce il protocollo in cui verrà avvolto il traffico crittografato. usa l'UDP.

Disponibilità dei parametri comp-lzo forza OpenVPN a comprimere il traffico, il che è molto utile quando c'è un canale di trasmissione dati "stretto".

Routing e script esterni

OpenVPN, tra le altre cose, ti consente di eseguire programmi esterni dopo l'avvio, nonché prima e dopo l'arresto del demone. Una cosa molto utile se hai bisogno di manomettere le tabelle di routing durante il sollevamento di un tunnel.

Nota subito un punto sottile su te stesso. Affinché il demone OpenVPN sia in grado di eseguire programmi esterni, deve essere esplicitamente consentito di farlo passando il parametro script-security con un valore non inferiore a 2. Sicurezza, comunque.

Per specificare il percorso del programma chiamato automaticamente dopo l'apertura dell'interfaccia di rete, utilizzare il parametro su, passandogli il percorso al programma e, eventualmente, parametri aggiuntivi come valore.

Per eseguire un programma esterno dopo aver disconnesso l'interfaccia di rete, utilizzare il parametro giù, informandolo, ovviamente, del percorso e dei parametri del programma chiamato. Se è necessario che il programma sia stato avviato davanti disabilitando l'interfaccia, specificare anche il parametro down-pre senza significato.

Ora un po' di dettagli sulla chiamata di programmi esterni da parte del demone OpenVPN. Il fatto è che non vengono solo chiamati "stupidi", ma vengono passati loro altri parametri di connessione, il che è molto comodo quando si lavora con le tabelle di routing.

Formato per chiamare un programma esterno dal demone OpenVPN durante l'inizializzazione interfaccia tun prossimo:

tun_dev tun_mtu link_mtu ifconfig_local_ip ifconfig_remote_ip

  • tun-dev- il nome dell'interfaccia di rete, ad esempio tun1;
  • tun_mtu- MTU dell'interfaccia di rete;
  • link_mtu- connessione MTU;
  • ifconfig_local_ip- indirizzo IP del cliente (dalla "nostra" parte);
  • ifconfig_remote_ip- indirizzo IP del client (lato server);
  • dentro- passato se il programma viene chiamato durante l'avvio del demone;
  • ricomincia- passato se il programma viene chiamato durante il riavvio del demone (ad esempio, se si è verificata una perdita di connessione);

Per tocca l'interfaccia il formato è lo stesso, tranne che invece di ifconfig_remote_ip trasmesso ifconfig_netmask contenente la subnet mask del nostro client.

Inoltre, va notato che tutti i parametri che passerai al programma esterno usando su/giù sarà sostituito davanti parametri sopra elencati.

La teoria, credo, basti, veniamo al sodo. Supponiamo che tu debba in qualche modo modificare la tabella di routing del tuo host quando avvii / riavvii / arresti il ​​demone OpenVPN. Per due interfacce di rete, ho risolto questo problema con il seguente script bash:

#! / bin / bash case $ (1) in "up") case $ (2) in "tun0") ip rule add... ip route add... ;; "tun1") ip rule add... ip route add... ;; esac ;; "down") case $ (2) in "tun0") ip rule del ... ip route del ... ;; "tun1") ip regola del ... ip percorso del ... ;; esac ;; esac

E lo script viene chiamato da due parametri OpenVPN:

up "/usr/local/bin/routes.sh up"
down "/usr/local/bin/routes.sh down"

Cioè, lo script avviato riceve approssimativamente i seguenti parametri:

  • $1 su o giù;
  • $2 - nome dell'interfaccia. Nel sistema che sto considerando, potrebbe essere tun0 o tun1;
  • $3 - ad esempio 1500;
  • $4 - per esempio, 1542
  • $5 - per esempio, 10.8.0.5
  • $6 - per esempio, 10.8.0.6
  • $7 dentro o ricomincia(Questo parametro è completamente ignorato da me, quindi le manipolazioni con le rotte vengono sempre eseguite, anche se l'interfaccia di rete non è stata disabilitata, ma è avvenuto solo un riavvio "regolare" del demone a causa della mancanza di comunicazione).

Va da sé che puoi (e dovresti) utilizzare i valori dei parametri $ 3 - $ 6. Ad esempio, se vuoi "concludere" parte del traffico attraverso il tunnel VPN, puoi utilizzare qualcosa di simile nello script:

ip percorso aggiunto da 192.168.0.0/24 tramite $ (6)

utilizzando il valore della variabile $ 6 per determinare l'indirizzo del router attraverso il quale deve essere instradato il traffico.

Avviare e fermare il demone

In realtà, perché tutti questi balli con il richiamo di copioni esterni e il rifiuto del buon vecchio? /etc/rete/interfacce? Ed ecco cosa.

Apri il file /etc/default/openvpn e nella variabile AVVIO AUTOMATICO specificare il nome del file (o più file, separati da uno spazio) della configurazione dalla directory, staccando l'estensione ".conf". Per il nostro esempio, sarà simile a questo:

AUTOSTART = "myvpnsrv"

Oppure, se vuoi che OpenVPN effettui connessioni basate su tutti i file di configurazione trovati:

Ora "una compressa è sufficiente" nella forma:

sudo service openvpn start

e la sceneggiatura di /etc/init.d/openvpn avvierà con attenzione OpenVPN per tutte le configurazioni trovate.

Anche fermare il demone non è molto difficile:

sudo service openvpn stop

E infine. Se non è necessario elaborare nessuno dei file di configurazione esistenti, è sufficiente definire in /etc/default/openvpn.

Una vera rete privata virtuale (VPN) è un tunnel crittografato e interconnesso tra due reti che collega due punti attendibili. Non è il protocollo web HTTPS, considerato affidabile da tutti i client. Solo i client con chiavi di accesso speciali possono connettersi alla VPN.

Le VPN sono diventate molto estese in questi giorni con l'avvento delle reti private virtuali che si fidano di tutti e la proliferazione di HTTPS. Molte VPN sono soluzioni commerciali con una configurazione minima per fornire l'accesso remoto ai dipendenti. Ma non tutti si fidano di queste soluzioni. Una rete virtuale privata collega due reti in una, ad esempio una rete dell'ufficio e la rete domestica di un dipendente. Il server VPN è necessario affinché il server e il client possano autenticarsi tra loro.

La configurazione dell'autenticazione server e client richiede molto lavoro e quindi le soluzioni commerciali con un minimo di impostazioni falliscono in questo senso. Ma in realtà non è così difficile configurare un server OpenVPN. Avrai bisogno di due nodi su reti diverse per configurare un ambiente di test, ad esempio, puoi utilizzare più macchine virtuali o server reali. Come hai già capito, questo articolo ti guiderà attraverso la configurazione di OpenVPN in Ubuntu per creare una rete virtuale privata a tutti gli effetti.

Entrambe le macchine devono avere installato OpenVPN, è un programma abbastanza popolare, quindi puoi installarlo dai repository ufficiali. Abbiamo anche bisogno che Easy-RSA funzioni con le chiavi private. Per installare il software su Ubuntu utilizzare il seguente comando:

sudo apt install openvpn easy-rsa

Entrambi i pacchetti devono essere installati sia sul server che sul client. Ti serviranno per configurare il programma. La prima fase dell'articolo, l'installazione e la configurazione di openvpn, è completa.

Creare un'autorità di certificazione

La prima cosa da fare è creare l'infrastruttura di chiave pubblica corretta sul server. Consideriamo il server come la macchina a cui gli utenti si connetteranno. Ci sono diversi vantaggi nell'avere la tua CA personale: avrai la tua CA che renderà facile la distribuzione e la gestione delle chiavi. Ad esempio, puoi revocare i certificati client su un server. Inoltre, ora non è necessario archiviare tutti i certificati client, l'autorità di certificazione dovrà solo sapere che il certificato è firmato da una CA. Oltre a un sistema di chiavi complesso, è possibile utilizzare chiavi statiche se è necessario concedere l'accesso solo a pochi utenti.

Si prega di notare che tutte le chiavi private devono essere conservate in un luogo sicuro. In OpenVPN, una chiave pubblica è chiamata certificato e ha l'estensione .crt, e una chiave privata è chiamata chiave, la sua estensione è .key.

Innanzitutto, crea una cartella per archiviare i certificati Easy-RSA. In effetti, la configurazione di OpenVPN viene eseguita manualmente, quindi la cartella può essere posizionata ovunque:

sudo mkdir / etc / openvpn / easy-rsa

Quindi copia tutti gli script easy-rsa necessari in questa cartella:

cd / etc / openvpn / easy-rsa /

sudo -i
# source ./vars
# ./cancella tutto
# ./build-ca

Con il primo comando si passa alla console per conto del superutente, con il secondo si caricano le variabili d'ambiente dal file ./Vars. Il comando. / Clear-all crea la cartella keys se non esiste e ne cancella il contenuto. E l'ultimo comando inizializzerà la nostra autorità di certificazione. Ora tutte le chiavi necessarie sono apparse nella cartella .keys:

Configurazione dei certificati client

sudo cp -R / usr / share / easy-rsa / etc / openvpn /

Ora dobbiamo copiare il certificato, il file con estensione .crt nella cartella /etc/openvpn su tutti i client. Ad esempio, scarichiamo questo file per il nostro client utilizzando scp:

sudo scp user @ host: /etc/openvpn/easy-rsa/keys/ca.crt / etc / openvpn / easy-rsa / keys

Solo ora puoi creare la tua chiave privata basata sul certificato CA:

cd / etc / openvpn / easy-rsa /

sudo -i
# source ./vars
# build-req Sergiy

Tieni presente che ca.crt deve essere nella cartella delle chiavi, altrimenti non funzionerà nulla. Ora l'utilità creerà una chiave, in base alla quale puoi connetterti al server OpenVPN, ma devi comunque firmarla sul server. Invia il file .csr risultante al server utilizzando lo stesso scp:

scp /etc/openvpn/easy-rsa/keys/Sergiy.csr utente @ host: ~ /

Quindi, sul server, nella cartella /etc/openvpn/easy-rsa, è necessario eseguire il comando di firma del certificato:

./sign-req ~ / Sergiy

La firma del certificato deve essere confermata. Quindi il programma segnalerà che è stato firmato e aggiunto al database. Il file .crt apparirà nella cartella con il certificato csr, che deve essere restituito al computer client:

sudo scp user @ host: /home/Sergiy.crt / etc / openvpn / easy-rsa / keys

Solo dopo che il server e il client hanno tutte le chiavi necessarie per connettersi e stabilire la comunicazione. Ci sono ancora alcune impostazioni rimaste. Se prevedi di utilizzare la crittografia TLS, devi creare un set di dati Diffie-Huffman sul server, per questo usa il comando:

Configurazione OpenVPN

Ora configura il server OpenVPN. Per impostazione predefinita, non c'è nulla nella cartella dei file di configurazione di OpenVPN. Devi crearli tu stesso, a seconda di cosa prevedi di configurare, un server o un client. Il file di configurazione OpenVPN richiesto può essere trovato in /usr/share/doc/openvpn/esempi/sample-config-files/. Per prima cosa, creiamo un file di configurazione per il server:

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

Ci sono alcuni parametri che devi modificare qui:

porta e prototipo- porta e protocollo utilizzati dal programma;

porta 1194
proto udp

Tutte le chiavi create devono essere registrate nel file di configurazione. Le nostre chiavi sono archiviate in /etc/openvpn/easy-rsa/keys:


cert /etc/openvpn/easy-rsa/keys/ca.crt
chiave /etc/openvpn/easy-rsa/keys/ca.key
dh /etc/openvpn/easy-rsa/keys/dh.pem

Configuriamo l'intervallo di indirizzi per la rete virtuale, il nostro server sarà disponibile sul primo di essi - 10.8.0.1:

server 10.8.0.0 255.255.255.0

Dopo aver completato la configurazione, salva le modifiche al file, puoi incollare tu stesso tutta questa configurazione o modificare il file di esempio. Impostazioni del server pronto e funzionante:

porta 1194
proto udp
comp-lzo
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/ca.crt
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
sottorete della topologia
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/client.conf

È possibile creare più file di configurazione client per connettersi a server diversi. Apri il file di configurazione e modifica i seguenti parametri al suo interno:

a distanza- questo è l'indirizzo del tuo server OpenVPN, l'indirizzo e la porta devono corrispondere a quelli configurati sul server, ad esempio:

remoto 194.67.215.125 1194

circa- la chiave che hai ricevuto dall'autorità di certificazione, l'abbiamo inserita nella cartella /etc/openvpn/.

certificato e chiave- queste sono le chiavi pubblica e privata del client, con l'aiuto delle quali ti connetterai al server. Come ricorderete, li abbiamo salvati nella cartella /etc/openvpn/easy-rsa/keys/.

ca /etc/openvpn/easy-rsa/keys/ca.crt

Il resto delle impostazioni può essere lasciato così com'è. Ecco il file di configurazione completo che puoi copiare:

cliente
dev tun
proto udp
remoto 194.67.215.125 1194
risoluzione-riprova infinito
nobind
tasto di persistenza
persist-tun
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/Sergiy.crt
chiave /etc/openvpn/easy-rsa/keys/Sergiy.key
tls-auth ta.key 1
comp-lzo
verbo 3

Salva le impostazioni, il client è ora pronto per la connessione. Si prega di notare che i file di configurazione devono corrispondere il più possibile, l'assenza di determinate opzioni in uno dei file può portare a errori. Ciò non significa che i file saranno identici, ma i parametri di base di openvpn dovrebbero essere gli stessi. Devi solo eseguire OpenVPN su questa macchina usando questo file di configurazione:

openvpn /etc/openvpn/client.conf

Fatto, ora funziona tutto, se esegui ifconfig, vedrai che è stata aggiunta l'interfaccia tun0:

Puoi anche provare a eseguire il ping degli indirizzi 10.8.0.1, questo è l'indirizzo che abbiamo configurato per il nostro server OpenVPN, i pacchetti di ping verranno inviati normalmente. Se i pacchetti non arrivano, o qualcos'altro non funziona, fai attenzione all'output di entrambi i programmi, potrebbero esserci degli errori o avvisi, assicurati inoltre che il firewall del server permetta l'accesso esterno tramite udp per la porta 1194. Puoi anche avviare il server o il client, impostando il livello di dettaglio nella configurazione al massimo del verbo 9. Molto spesso questo aiuta a capire perché qualcosa non funziona. Ma non puoi ancora instradare il traffico attraverso il tunnel. Per fare ciò, devi abilitare l'inoltro e aggiungere alcune regole di iptables. Innanzitutto, consentiamo il transito dei pacchetti sul server:

sysctl -w net.ipv4.ip_forward = 1

Quindi aggiungi regole come questa. Permettiamo a tutti di connettersi al nostro server:

iptables -A INPUT -p udp --dport 1194 -j ACCEPT

Consentiamo agli utenti OpenVPN di accedere a Internet:

iptables -I FORWARD -i tun0 -o eth0 -j ACCEPT
# iptables -I FORWARD -i eth0 -o tun0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

conclusioni

In questo articolo, abbiamo esaminato come installare e configurare OpenVPN Ubuntu, nonché come configurare openvpn per funzionare con l'autenticazione con chiave. L'organizzazione delle reti virtuali private può essere molto utile non solo nelle organizzazioni, ma anche, ad esempio, per lo scambio di dati tra due computer o per aumentare la sicurezza della rete.

VPN (Virtual Private Network) è una tecnologia che consente di connettere i computer a Internet come se si trovassero sulla stessa rete locale. Di conseguenza, possiamo unire uffici situati in diverse città e paesi in un'unica rete.
Avendo installato un server VPN a casa, e la parte client su uno smartphone, puoi accedere a Internet tramite hotspot WiFi pubblici senza temere che le tue password vengano intercettate.
Noleggiare un server in un data center straniero costa da $ 5 al mese e inserendo una VPN nella regione americana, otteniamo l'accesso a Spotify, Pandora, Hulu e altri servizi che non sono disponibili nel tuo paese e la censura su Internet non ti riguarda più.

1. Installa OpenVPN.

Aggiorniamo il nostro server e installiamo OpenVPN e un'autorità di certificazione.

Sudo apt update sudo apt upgrade sudo apt install openvpn easy-rsa

OpenVPN è una rete privata virtuale che utilizza TLS/SSL per crittografare il traffico. Ciò significa che abbiamo bisogno di certificati attendibili.

2. Istituzione di un'autorità di certificazione

Creiamo un'autorità di certificazione.

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

Troviamo il seguente frammento:

... ... ... ... ... export KEY_COUNTRY = esportazione "US" KEY_PROVINCE = esportazione "CA" KEY_CITY = esportazione "SanFrancisco" KEY_ORG = esportazione "Fort-Funston" KEY_EMAIL = " [e-mail protetta]"export KEY_OU =" MyOrganizationalUnit ".....

e sostituisci con i nostri dati

... ... ... ... ... export KEY_COUNTRY = esportazione "RU" KEY_PROVINCE = esportazione "SPb" KEY_CITY = esportazione "Sankt-Peterburg" KEY_ORG = esportazione "sito" KEY_EMAIL = " [e-mail protetta] sito "export KEY_OU =" IT ".....

Poche righe sotto cambieremo il valore di KEY_NAME

Esporta KEY_NAME = "server" cd ~ / openvpn-ca source vars

In risposta, il sistema dovrebbe emettere:

NOTA: se esegui ./clean-all, eseguirò un rm -rf su /home/sammy/openvpn-ca/keys

Per sicurezza, ripuliamo la directory da tutte le chiavi:

./pulisci tutto

e creare un'autorità di certificazione radice:

./build-ca

I valori richiesti verranno automaticamente sostituiti dal file vars, che abbiamo modificato poco sopra. Basta premere Invio per confermare la selezione.

Abbiamo installato un'autorità di certificazione che utilizzeremo per creare gli altri file di cui abbiamo bisogno.

3. Creazione di un certificato, chiave e file di crittografia per il server

Innanzitutto, creiamo un certificato OpenVPN e le chiavi per il server. Per fare ciò, esegui il seguente comando:

./build-key-server server

Accettiamo tutti i valori di default, alla fine scegliamo “y” due volte.
Ora generiamo le chiavi del protocollo Diffie-Hellman con il comando:

./build-dh

e una firma HMAC per migliorare la capacità del server di verificare l'integrità e l'autenticità dei dati TSL trasmessi:

Openvpn --genkey --chiave segrete / ta.key

4. Creare un certificato e una coppia di chiavi per il client

Diamo un'occhiata alla procedura per creare una chiave e un certificato per client1. Se ci sono più client, il processo di creazione è lo stesso, per la connessione automatica creeremo un file senza password. Usiamo il comando build-key:

Cd ~ / openvpn-ca source vars ./build-key client1

5. Configurazione del servizio OpenVPN

Copiare i file creati (certificato e chiave dell'autorità di certificazione, certificato e chiave del server, firma HMAC, file Diffie-Hellman) dalla directory ~ /openvpn-ca/keys a /etc/openvpn

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

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

Trova la sezione HMAC e decommenta la riga tls-auth e aggiungi il parametro key-direction:

Tls-auth ta.key 0 # Questo file è la direzione chiave segreta 0

Quindi cerchiamo la sezione di crittografia e decommentiamo la riga con il cifrario AES-128-CBC e aggiungiamo l'algoritmo HMAC dopo di esso:

Cifratura AES-128-CBC auth SHA256

Infine, trova le righe dell'utente e del gruppo e decommentale:

Utente nessuno gruppo nogroup

6. Abilitazione del servizio OpenVPN

Per utilizzare il nostro server per lo scopo previsto, è necessario che sia in grado di reindirizzare il traffico.

sudo nano /etc/sysctl.conf

Trova e decommenta la riga:

net.ipv4.ip_forward = 1

Per applicare le impostazioni modificate, eseguire:

sudo sysctl -p

Scriviamo come verrà avviato il nostro server. Poiché il nome del file di configurazione è server.conf, daremo il seguente comando:

sudo systemctl start [e-mail protetta]

Controlliamo se il server è stato avviato:

sudo systemctl status [e-mail protetta]

e se l'interfaccia tun è aumentata

ip addr mostra tun0

Se tutto funziona, aggiungi le impostazioni all'avvio:

sudo systemctl enable [e-mail protetta]

7. Script per la configurazione dei client.

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

Apportiamo alcune modifiche al file base.conf

nano ~ / client-configs / base.conf. ... ... # Il nome host/IP e la porta del server. # È possibile avere più voci remote # per bilanciare il carico tra i server. indirizzo_IP_server remoto 1194. ... ...

Invece di server_IP_address, scriveremo l'indirizzo IP del nostro server OpenVPN.

proto udp utente nessuno gruppo nogroup

Memorizzeremo certificati e chiavi direttamente nel file di configurazione, che creeremo ulteriormente. Pertanto, commentiamo le righe ca, certo e chiave

# parametri SSL/TLS. # Vedi il file di configurazione del server per ulteriori # descrizione. È meglio usare # una coppia di file .crt / .key separata # per ciascun client. Un singolo file ca # può essere utilizzato per tutti i client. #Ca ca.crt #cert client.crt #key client.key

Portiamo le impostazioni lato client a impostazioni server simili.

Controlla il tuo sistema client per / etc / openvpn / update-resolv-conf. Se ce n'è uno, le ultime tre righe devono essere decommentate.

cifratura AES-128-CBC auth SHA256 key-direction 1 # script-security 2 # up / etc / openvpn / update-resolv-conf # down / etc / openvpn / update-resolv-conf

Infine creiamo uno script con il quale creeremo i file di configurazione per i client.

Nano ~ / client-configs / make_config.sh

Inseriamo il testo:

#! / bin / bash # Primo argomento: Identificatore client KEY_DIR = ~ / openvpn-ca / keys OUTPUT_DIR = ~ / client-configs / files BASE_CONFIG = ~ / client-configs / base.conf cat $ (BASE_CONFIG) \<(echo -e "") \ $ (KEY_DIR) /ca.crt \<(echo -e "\ n ") \ $ (KEY_DIR) / $ (1) .crt \<(echo -e "\ n ") \ $ (KEY_DIR) / $ (1) .key \<(echo -e "\ n ") \ $ (KEY_DIR) /ta.key \<(echo -e "") \> $ (OUTPUT_DIR) / $ (1) .ovpn

Salviamo e chiudiamo il file, quindi rendiamolo eseguibile:

Chmod 700 ~ / client-configs / make_config.sh

8. Generazione di file di configurazione del client

cd ~ / client-configs ./make_config.sh client1

Controlliamo cosa è successo:

Ls ~ / client-configs / files

di conseguenza, dovremmo ottenere il file

Cliente1.ovpn

con impostazioni di connessione, certificati e chiave.

Questo file deve essere consegnato al computer client utilizzando una connessione sicura. Su Linux, puoi usare il comando scp. Sul computer client, eseguire:

Scp [e-mail protetta] _server_ip: configurazioni client / file / client1.ovpn ~ /

Copia il file "client1.ovpn" dal server remoto al computer locale.

9. Installazione dei file di configurazione del client

I seguenti passaggi verranno eseguiti solo sul computer client con Ubuntu. Installa OpenVPN.

Sudo apt-get update sudo apt-get install openvpn

Controlliamo se il nostro sistema ha il file /etc/openvpn/update-resolv-conf

Ls / etc / openvpn

Se, in uscita, otteniamo:

Aggiorna-risolvi-conf

modificare il file di configurazione client1 .ovpn, che abbiamo scaricato dal server

Nano client1 .ovpn

Decommentiamo le seguenti righe:

Script-security 2 up / etc / openvpn / update-resolv-conf down / etc / openvpn / update-resolv-conf

Salviamo e chiudiamo il file.

Ora proviamo ad avviare la connessione:

Sudo openvpn --config client1 .ovpn

Se hai fatto tutto correttamente, di conseguenza ti connetterai al server.

I lettori abituali di questo blog hanno probabilmente configurato OpenVPN un paio di volte nella loro vita. Ma sembra che questo articolo sarà interessante e utile per i principianti. Da esso imparerai come configurare il tuo server VPN in cinque minuti e anche perché ne hai effettivamente bisogno. Bene, bene, visto il tempo necessario per registrarsi con alcuni Amazon, DigitalOcean, Vscale.io o FastVDS e pagare per VDS, forse non ci vorranno cinque minuti, ma quindici "interi".

Allora perché qualcuno dovrebbe andare online su una VPN? Ci sono una serie di ragioni per questo. Ad esempio, in modo che le tue password trasmesse su HTTP non perdano quando sei seduto da hotspot WiFi aperti di origine sconosciuta. Ad ogni modo, anche il tuo normale ISP non ha bisogno di sapere quali siti visiti. Inoltre, per non bruciare il tuo IP nelle reti IRC e negli altri servizi con cui lavori. Non hanno nemmeno bisogno di conoscere la tua posizione. Potresti anche provare un nuovo servizio che non è ancora disponibile per gli utenti con un IP russo. Inoltre, il traffico tra te e il server VPN non è solo crittografato ma anche compresso, il che spesso può dare l'impressione di una connessione Internet più veloce. OpenVPN può essere utile anche in molti altri casi, ad esempio per consentire ai dipendenti di accedere alle risorse interne dell'azienda quando non sono in ufficio.

Anche il motivo per cui VPN, e non alcuni proxy o port forwarding tramite SSH, spero sia chiaro. È sufficiente configurare la VPN una volta e tutto il traffico di tutte le applicazioni passerà attraverso il server VPN contemporaneamente, in forma compressa e crittografata.

Per configurare la tua VPN, hai bisogno del tuo server con Ubuntu Linux (o qualsiasi altro Linux / * BSD, ma sarà abbastanza difficile per te seguire le istruzioni di questo post), così come i diritti di root su di esso. Se hai già un server, bene. In caso contrario, non scoraggiarti. Al giorno d'oggi, puoi acquistare un VDS / VPS adatto per un ridicolo $ 5 al mese o anche meno. Ci sono dozzine di aziende che offrono servizi rilevanti, alcune sono state nominate all'inizio dell'articolo. Personalmente consiglio di dare un'occhiata più da vicino a DigitalOcean. Ma non essere pigro per studiare il problema da solo, poiché nel momento in cui leggerai queste righe, la situazione sul mercato VDS potrebbe cambiare.

Andiamo al server, diventiamo root, diciamo:

apt-get update
apt-get install openvpn

OpenVPN aveva un'utilità chiamata easy-rsa per la generazione di chiavi e certificati. A partire dalla versione 2.3, questa utility è stata tagliata fuori dal pacchetto, quindi devi scaricarla e crearla tu stesso:

cd / tmp
wget https: // github.com/ OpenVPN / easy-rsa / archive / master.zip
apt-get install unzip
decomprimi master.zip
cd easy-rsa-master
./ build / build-dist.sh
tar xvzf ./ EasyRSA-git-development.tgz
cd EasyRSA-git-development

Generiamo tutte le chiavi e i certificati necessari. Preparati a inserire le password per loro. Poiché stiamo configurando un server VPN personale, quindi, a quanto pare, puoi utilizzare una singola password, ma più autentica:

./ easyrsa init-pki
./ easyrsa build-ca
./ easyrsa build-server-server completo
./ easyrsa build-client-client completo1
./ easyrsa gen-dh

Il completamento dell'ultimo comando potrebbe richiedere diversi minuti.

Trasferiamo le chiavi e i certificati ricevuti nella directory /etc/openvpn/:

mv ./ pki / dh.pem / etc / openvpn / dh.pem
mv ./ pki / private / client1.key / etc / openvpn /
mv ./pki/private/server.key/etc/openvpn/
mv ./ pki / ca.crt / etc / openvpn /
mv ./ pki / emesso / client1.crt / etc / openvpn /
mv ./pki/released/server.crt/etc/openvpn/

Crea un file server.conf nella stessa directory:

modalità server
dev tun
server 10.128.0.0 255.255.255.0
premi "redirect-gateway def1"
# importante! altrimenti andremo al DNS del provider
premere "dhcp-opzione DNS 8.8.8.8"
tls-server
ca ca.crt
cert server.crt
chiave server.chiave
dh dh.pem
proto tcp-server
porta 1194
I #clienti si vedono
da cliente a cliente
comp-lzo
keepalive 10 120
verbo 4
cifrario AES-256-CBC
utente nessuno
gruppo nessun gruppo
max-clienti 10

Proviamo ad avviare OpenVPN. All'avvio, ti verrà richiesto di inserire una password. Di conseguenza, dopo il riavvio, dovrai aumentare manualmente OpenVPN. Ma dal momento che stiamo configurando una VPN personale, questo non è più un problema delle chiavi in ​​chiaro o, peggio, delle password memorizzate. Lanciare:

servizio openvpn start

Controlliamo:

netstat -tuwpan

Il server dovrebbe ascoltare sulla porta 1194. Se non lo è, fumiamo / var / log / syslog.

Ora per il lato client. Abbiamo bisogno dei file client1.crt, client1.key e ca.crt:

mkdir vpn
cd vpn
scp vpn-server: / etc / openvpn / client1.crt ./
scp vpn-server: / etc / openvpn / client1.key ./
scp vpn-server: / etc / openvpn / ca.crt ./

Creiamo un file client.conf:

cliente
protocollo tcp
dev tun
#!!! sostituire con l'indirizzo IP reale del server
remoto 123.45.67.89 1194

# le due righe seguenti sono rilevanti solo per i sistemi *nix
# in pratica non sono molto convenienti, dal momento che OpenVPN non sarà in grado di
# va bene pulire tutto dopo il completamento del lavoro

# utente nessuno
# gruppo nogroup

Tasto di persistenza
persist-tun
ca ca.crt
cert client1.crt
chiave client1.key
cifrario AES-256-CBC
comp-lzo
verbo 3

Tagliamo al server, leggiamo attentamente i log:

sudo openvpn --config client.conf

Nel terminale vicino diciamo:

ping 10.128.0.1
traceroute mail.ru

Se tutto è stato eseguito correttamente, scoprirai che i ping raggiungono con successo 10.128.0.1 (primo comando), ma i pacchetti non lo attraversano da nessuna parte (secondo comando). Questo perché abbiamo dimenticato di configurare il server NAT. Il che mi sembra strano personalmente. Ricordo vagamente che quando una volta ho portato OpenVPN su FreeBSD, questo passaggio non era necessario. Tuttavia, potrei sbagliarmi.

Sul server, apri il file /etc/sysctl.conf e decommenta la riga al suo interno:

net.ipv4.ip_forward = 1

Per non dover riavviare, diciamo:

echo 1 >> / proc / sys / net / ipv4 / conf / all / forwarding

iptables -A FORWARD -s 10.128.0.0/ 24 -j ACCEPT
iptables -A FORWARD -d 10.128.0.0/ 24 -m stato \
--state STABILITO, CORRELATO -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.128.0.0/ 24 \
-j SNAT --to-source 123.45.67.89

… Dove 123.45.67.89 è l'IP del server. Ci riconnettiamo con il client, proviamo ad andare su qualche 2ip.ru o - ora tutto dovrebbe funzionare. Se questo non è il caso, fumiamo i tronchi. Se tutto è a posto, salva le regole del firewall sul server:

iptables-save> / etc / iptables.rules

... e controlla che ci sia una riga nel file /etc/network/interfaces:

pre-up iptables-restore< /etc/iptables.rules

Se hai precedentemente configurato un firewall sul server, potresti scoprire che le regole sono archiviate in un file con un nome diverso da /etc/iptables.rules.

Si può dire riavviare e controlla che le impostazioni vengano mantenute dopo aver riavviato il server:

cat / proc / sys / net / ipv4 / conf / all / forwarding
iptables -L -n

Il server OpenVPN, ovviamente, dovrà essere riavviato manualmente.

Il tocco finale rimane sul cliente. Il fatto è che (1) è scomodo eseguire openvpn in un terminale separato e monitorare se si è bloccato lì. Inoltre, (2) se dici sul client:

nm-strumento | grep DNS
sudo iptables -A OUTPUT -d 192.168.0.1 -j DROP
# ^ per rimuovere la regola, inserisci lo stesso comando con -D invece di -A

... dove 192.168.0.1 è il DNS del tuo ISP (visualizzato da nm-tool), scoprirai che la risoluzione del dominio è interrotta e quindi il client sta ancora utilizzando il DNS dell'ISP. Puoi prendere due piccioni con una fava dicendo:

sudo apt-get install network-manager-openvpn-gnome

... e configurando VPN tramite NetworkManager (icona di rete nell'angolo in alto a destra di Unity). Questo è facile da fare; infatti, è necessario ripetere la configurazione del testo del client utilizzando caselle di controllo e campi di input. È molto facile capire quale casella di controllo corrisponde a quale riga nel file config. La cosa principale è non essere troppo pigri per entrare in tutti i tipi di proprietà di rete avanzate e altre sezioni delle impostazioni. Se sbagli da qualche parte, il problema può essere facilmente diagnosticato utilizzando il file /var/log/syslog.

Nonostante il fatto che questo post sia piuttosto lungo, ci vogliono davvero solo pochi minuti per configurare OpenVPN. Navigazione web sicura e veloce per te! E inoltre, come sempre, sarò sinceramente lieto per le vostre domande e aggiunte.

aggiunta: Ho affrontato un problema del genere che OpenVPN non si sarebbe riconnetteto al server dopo che il laptop si era svegliato dalla modalità di sospensione. Il team ha aiutato a risolvere la situazione sudo pkill --signal SIGHUP --exact openvpn eseguito immediatamente dopo il risveglio dal letargo. Per questo, il comando corrispondente è stato aggiunto allo script che uso per Entrata in modalità di sospensione, da dove viene chiamato con un leggero ritardo. Affinché ciò funzioni, l'utente deve disporre dell'autorizzazione sudo senza password. Inoltre, nella configurazione del server OpenVPN, ho dovuto rimuovere il parametro keepalive.

Vuoi avere un accesso a Internet sicuro e protetto dal tuo smartphone o laptop mentre ti colleghi a una rete non protetta tramite WiFi di un hotel o di un bar? Una rete privata virtuale (VPN) ti consente di utilizzare reti non protette come se fossi su una rete privata. Tutto il tuo traffico in questo caso passa attraverso il server VPN.

In combinazione con l'uso di una connessione HTTPS, le impostazioni descritte di seguito ti permetteranno di proteggere le tue informazioni private, ad esempio login e password, così come i tuoi acquisti. Inoltre, puoi aggirare le restrizioni e la censura regionali, nonché nascondere la tua posizione e il traffico HTTP non crittografato da una rete non protetta.

Puoi trasferire un profilo dal computer al telefono collegando il tuo dispositivo Android al computer tramite USB e copiando il file. Puoi anche spostare il file del profilo utilizzando una scheda SD copiando il profilo sulla scheda e inserendo la scheda nel tuo dispositivo Android.

Avvia l'applicazione OpenVPN e fai clic sul menu per importare il profilo.

Composto

Premere il pulsante per stabilire una connessione. Collegare... Ti verrà chiesto se ti fidi dell'applicazione OpenVPN. Risposta ok per stabilire una connessione. Per interrompere la connessione, vai all'app OpenVPN e seleziona Disconnetti.

Passaggio 13. Test della connessione VPN

Dopo aver installato e configurato tutto, assicuriamoci che tutto funzioni correttamente. Senza stabilire una connessione VPN, apri un browser e vai a DNSLeakTest.

Questo sito restituirà l'indirizzo IP assegnato dal tuo ISP. Per verificare quali server DNS sono in uso, fare clic su Test esteso.

Ora stabilisci una connessione usando il tuo client VPN e aggiorna la pagina nel tuo browser. L'indirizzo IP che ti è stato fornito deve essere completamente diverso. Stai utilizzando questo nuovo indirizzo IP per tutti gli utenti di Internet. Clicca su Test esteso di nuovo per controllare le tue impostazioni DNS e assicurarti di utilizzare il server DNS della tua VPN.

Passaggio 14. Revoca dei certificati client

Di tanto in tanto, potrebbe essere necessario revocare il certificato client per impedire l'accesso al server VPN e

Per fare ciò, vai alla directory della tua autorità di certificazione e inserisci i comandi:

  • cd ~ / openvpn-ca
  • fonte vars
  • ./revoke-full client3

L'output di questo comando terminerà con l'errore 23. Questo è normale. Di conseguenza, nella directory delle chiavi verrà creato il file crl.pem con le informazioni necessarie per la revoca del certificato.

Sposta questo file nella directory / etc / openvpn:

  • sudo cp ~ / openvpn-ca / keys / crl.pem / etc / openvpn
  • sudo nano /etc/openvpn/server.conf

Aggiungi crl-verify alla fine del file. Il server OpenVPN controllerà il CRL ogni volta che qualcuno si connette al server.

/etc/openvpn/server.conf

Crl-verifica crl.pem

Salva e chiudi il file.

Riavvia OpenVPN per completare il processo di revoca del certificato:

Ora il client non sarà in grado di stabilire una connessione con il server OpenVPN utilizzando il vecchio certificato.

Per revocare certificati aggiuntivi, attenersi alla seguente procedura:

    Genera un nuovo elenco di revoche utilizzando il comando source vars nella directory ~ / openvpn-ca ed eseguendo il comando revoke-full con il nome del client.

    Copia il nuovo CRL in /etc/openvpn, sovrascrivendo il vecchio CRL.

    Riavvia il servizio OpenVPN.

Questa procedura può essere utilizzata per revocare eventuali certificati precedentemente creati.

Conclusione

Congratulazioni! Ora puoi accedere in sicurezza a Internet, tutto il tuo traffico è protetto dalle intercettazioni di censori e intrusi.

Ripetere i passaggi per configurare client aggiuntivi 6 e 11-13 per ogni nuovo dispositivo. Per revocare l'accesso per un particolare client, utilizzare il passaggio 14 .

Principali articoli correlati