Ho la domanda esatta qualche mese fa, ma in più volevo avere una connessione IPv6 se possibile. Potresti essere interessato alle mie domande su Serverfault:
Avevo solo una scheda di rete ("interfaccia di rete") sul mio server per l'uso. Nella mia configurazione, NetworkManager non era sufficiente perché ho bisogno di eseguire uno script personalizzato per supportare IPv6. Per semplicità, userò NetworkManager qui e ometterò il supporto IPv6.
Innanzitutto, prendi una decisione sul metodo di autenticazione. Userò il metodo di certificazione più sicuro che funziona come SSL: durante l'handshake viene scelto un segreto comune che verrà utilizzato per la sessione. Gli altri metodi sono una chiave condivisa; un nome utente e una password.
server
1. Preparare
Innanzitutto, installa il server openvpn. Questo è facile come sudo apt-get install openvpn
. La parte difficile è configurarlo. La configurazione è presente in /etc/openvpn
.
2. Configurare l'autenticazione
Il server ha bisogno di certificati per identificare se stesso e i suoi client. Questi certificati sono recuperati da un'autorità di certificazione (autorità comune). La creazione dei certificati e delle relative chiavi private può essere eseguita su qualsiasi macchina, non deve essere eseguita sul server. Se sei veramente paranoico, dovresti farlo su una macchina che non è connessa a una rete e usare una memory stick per trasferire i certificati.
Creare una CA e certificati per il server
Questo passaggio deve essere eseguito una volta a meno che la chiave privata della CA non sia stata compromessa. In tal caso, è possibile creare certificati validi che verranno accettati dal server, determinando una violazione della sicurezza.
La documentazione ufficiale suggerisce di fare l'amministrazione in /etc/openvpn
. Non sono un grande fan di eseguire tutto come root, quindi lo inserirò in una directory diversa.
Crea la directory di amministrazione e copia i file in essa contenuti eseguendo:
mkdir ~/openvpn-admin
cd ~/openvpn-admin
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
cd easy-rsa
- Modifica le impostazioni predefinite in base
vars
alle esigenze, ad esempio impostando KEY_SIZE=2048
perché sei paranoico.
Carica le variabili e crea la directory delle chiavi eseguendo:
. vars
Se viene visualizzato un errore No ... openssl.cnf file could be found
Further invocations will fail
, eseguirlo ln -s openssl-1.0.0.cnf openssl.cnf
, quindi di . vars
nuovo.
Se è la prima volta che usi questa CA, prepara l'ambiente delle chiavi. Do Non eseguire questo comando se si desidera mantenere il vostro CA. creato in precedenza In questo modo sarà necessario distribuire un nuovo ca.crt
.
./clean-all
- Creare la CA eseguendo
./build-ca
. È possibile inserire tutti i dettagli desiderati, ma si noti che queste informazioni saranno visibili nei file di registro quando i client si connettono al server. Questo creerà i file ca.key
e ca.crt
nella sottocartella keys
. Mantieni il ca.key
file segreto in ogni circostanza . In caso contrario, chiunque disporrà della chiave potrà connettersi al proprio server.
- Se si dispone di un certificato precedente perso o scaduto, è necessario revocare prima quello precedente
./revoke-full server
. Altrimenti viene visualizzato un errore del database.
Creare il certificato per il server eseguendo:
./build-key-server server
Quando ti viene richiesta una password, lasciala vuota a meno che tu non sia disposto a inserire la password ogni volta che il server viene avviato (non consigliato). Conferma al momento della firma del certificato e del suo impegno. Due nuovi file appariranno nella directory keys
: server.key
e server.crt
.
DH e uso preparano per tls-auth
Generare i parametri Diffie-Hellman usando:
./build-dh
Per suggerimenti sulla tempra , usare tls-auth
. Per questo, genera la chiave segreta condivisa usando:
openvpn --genkey --secret ta.key
Il file risultante ( ta.key
) deve essere distribuito anche ai client, ma non è necessario renderlo pubblico.
Creare certificati per i clienti
Per ogni client, è necessario ripetere questi passaggi:
Immettere la directory in cui è stato creato il certificato CA e server:
cd ~/openvpn-admin/easy-rsa
Se hai saltato il passaggio di creazione della CA perché ne hai già uno, devi prima caricare le variabili:
. vars
- Se stai creando nuovi certificati perché quelli vecchi vengono persi o scaduti , devi prima revocare il vecchio
./revoke-full you
. Altrimenti viene visualizzato un errore del database.
Creare il certificato client you.key
e il relativo certificato corrispondente you.crt
:
./build-key you
La CommonName
deve essere univoco. Lascia la password vuota se stai usando KDE poiché non è ancora supportato dal 10.10. Come per la generazione del certificato del server, confermare la firma del certificato e confermare le modifiche.
3. Configurare il servizio OpenVPN
Per impostazione predefinita, OpenVPN viene eseguito come root quando si accettano connessioni. Non è una buona idea se il servizio è raggiungibile dalla malvagia Internet.
Crea un utente dedicato per OpenVPN, ad esempio openvpn
:
sudo useradd openvpn
Copiare i file server.key
, server.crt
, ca.crt
e dh1024.pem
(o dh2048.pem
se hai cambiato dimensione della chiave) dalla directory chiavi in /etc/openvpn
. Un'autorizzazione di 400 (sola lettura per il proprietario) va bene.
sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn
sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
Copia anche il file ta.key
:
sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
sudo chmod 400 /etc/openvpn/ta.key
Crea il file /etc/openvpn/server.conf
e inserisci le righe successive:
proto udp
dev tap
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth ta.key 0
# Compress data to save bandwidth
comp-lzo
user openvpn
group openvpn
persist-key
persist-tun
# Logs are useful for debugging
log-append openvpn-log
verb 3
mute 10
Impostare le autorizzazioni appropriate su di esso, non è necessario che sia segreto, ma preferisco non perdere i dettagli di configurazione, quindi:
sudo chmod 640 /etc/openvpn/server.conf
4. Completamento del server
Se hai creato i certificati sul server, è una buona idea crittografarli o spostarli dal server. In ogni caso, non perdere il ca.key
e server.key
. Nel primo caso gli altri saranno in grado di connettersi al tuo server. In quest'ultimo caso è possibile un MITM .
Cliente
Oltre all'indirizzo IP del server, l'amministratore del server deve consegnare i seguenti file:
ca.crt
: per la verifica dei certificati
server.crt
: per verificare il server e comunicare con esso
ta.key
: per rafforzare la sicurezza
you.crt
: per identificarti con il server
you.key
: è come la tua password, i permessi dei file dovrebbero essere 400 (sola lettura per il proprietario)
1. Installazione
Installa OpenVPN e il plug-in NetworkManager (adatto per KDE e Gnome):
sudo apt-get install openvpn network-manager-openvpn
network-manager-openvpn
è nel repository dell'universo.
2. Configurazione
Nel pannello di controllo, utilizzare i seguenti dettagli:
- Gateway: l'indirizzo IP del server
- Tipo: "Certificati (TLS)" (Gnome) o "Certificato X.509" (KDE)
- Certificato CA: percorso a
ca.crt
- Certificato utente: percorso a
you.crt
- Chiave privata: percorso a
you.key
A livello avanzato :
- Porta gateway: automatica (1194) (non è necessario modificarla)
- Usa compressione dati LZO: abilitato
- Usa connessione TCP: disabilitato
- Usa dispositivo TAP: abilitato
- Cifra: impostazione predefinita
- Autenticazione HMAC: impostazione predefinita
- Usa autenticazione TLS: abilitato
Specificare il percorso del file chiave ta.key
e impostare "Direzione chiave" su 1
.
- ( todo - check out ) il server invia il gateway predefinito in modo che tutto il traffico passi attraverso la connessione VPN. L'ultima volta che ho controllato, il plug-in network-manager-openvpn non lo ha fatto.
Se non riesci a far funzionare NetworkManager o non desideri utilizzarlo, inserisci i file ( ca.crt
, ...) /etc/openvpn
e crea il /etc/openvpn/client.conf
file:
client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20
Se non si desidera abilitare questa VPN all'avvio, modificare /etc/default/openvpn
e rimuovere il commento dalla riga successiva rimuovendo #
:
#AUTOSTART="none"
Per avviare questa connessione, eseguire:
sudo /etc/init.d/openvpn start client
client
dovrebbe essere rinominato se il tuo file di configurazione non è nominato client.conf
. Esempio: se hai nominato il tuo file di configurazione safe.conf
, devi eseguirlo sudo /etc/init.d/openvpn start safe
.
Per interrompere OpenVPN, devi eseguire:
sudo /etc/init.d/openvpn stop