Clark's Home page

Tecnicismi vari di un Sysadmin Linux ma anche qualcosa della sua vita

Openvpn Server Linux per Client linux —

Una volta installato openvpn con il solito apt-get install passiamo alla configurazione vera e propria.
Portandoci in /etc/openvpn, creiamo un link simbolico con easy_rsa che contiene tuttii tools che ci servono per creare chiavi e certificati:
ln -s /usr/share/doc/openvpn/examples/easy-rsa/2.0
NOTA MOLTO BENE!
quando si è finito di generare chiavi e certificati ed ogni volta che si aggiunge un client copiarsi il tutto da qualche parte cd chiave usb altro disco, in caso di fault totale della macchina (i.e. il disco principale che se ne va a $donne_di_malaffare) con questo backup riavrete le vostre VPN funzionanti in pochi minuti dopo aver finito di configurare il sistema base, ho fatto l’idiozia di non farlo e quando m’e’ successo poi ho girato 1/2 lombardia a cambiare chiavi e certificati sulle macchine di amici/conoscenti a cui amministro le macchine o semplicemente cavo le castagne dal fuoco, e non lo voglio piu’ rifare…
Spostiamoci n easy-rsa e cominciamo a creare una PKI (Public Key Infrastructure) che abbiamo già visto sul CRM  per Apache2, le operazioni sono sostanzialmentte le stesse,  creare una autority che abbia chiavi pubblica e privata  e  un  certificato Master con opportuna chiave che servirà per firmare le chiavi e i certificati di tutti i client.
Volendo si può editare “vars” cambiare i valori che vengono proposti come default in modo che durante l’operazione di generazione ai parametri amministrativi basta dare invio senza mettere città, stato, provincia, email etc.
I comandi sono i seguenti:

.  ./vars
./clean-all
./
build-ca

E con questo abbiamo generato la CA,  generiamo ora il certificato e la chiave per il server “libeccio”

./build-key-server libeccio 
Generiamo i parametri per Diffie Helman
./build-dh 
Generiamo la chiave ta per poter usare la direttiva tls-auth 
(serve per hardenizzare la connessione)
openvpn --genkey --secret ta.key
e con il lato server siamo a posto.
Ci mancano ora i certificati e le chiavi per i client nel nostro caso i client sono
crm, sibilla, grecale, cosa che otteniamo con 
./build-key crm
./build-key sibilla
./build-key grecale
Se in futuro si rendesse necessario ( e di solito sì) aggiungere degli host
è necessario dare il comando source vars in caso contrario semplicemente darà errore.
l'operazione genererà i files $HOST.crt $HOST.csr $HOST.key
Riassumnedo avremo una situazione di questo tipo
file installato su scopo segreto
ca.crt server + ogni client certificatto root CA no
ca.key solo lamacchina che certifica chiave root CA si
dh1024.pem solo sul server parametri Diffie Hellman no
libeccio.crt solo libeccio certificato del server no
libeccio.key solo libeccio chiave del server si
crm.crt solo crm certificato client no
crm.key solo crm chiave client si
sibilla.crt solo sibilla certificato client no
sibilla.key solo sibilla chiave client si
grecale.crt solo grecale certificato client no
grecale.crt solo grecale chiave client si
ta.key server +tutti i client  tsl-auth  si

N.B. i certificati e le chiavi vanno copiati in modo SICURO (mail crittografata, chiave usb e copiati a manina, SSH) su vari client.

Scriviamo ora il file di configurazione del server

server.conf

local 192.168.2.254

l’indirizzo locale della macchina
port 7207

la porta su cui OpenVPN ascolta

proto udp

il protocollo che usa OpenVPN

dev tun

il device che usa OpenVPN

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/PC0.crt
key /etc/openvpn/keys/PC0.key
dh /etc/openvpn/keys/dh1024.pem
tls-auth /etc/openvpn/keys/ta.key 0

il path di chiavi e certificati

server 192.168.50.0 255.255.255.0

la net che OpenVPN userà

cipher BF-CBC

la scelta del “cifrario crittografico”  Blowfish è il default può essere anche AES o Triple-DES

keepalive 10 120

la direttiva keepalive genera dei messagi similping per verificare la presenza o  meno del client nello specifico manda un ping ogni 10 s e assume che l’HOST remoto si adown se non risponde entro 120 s

comp-lzo

abilita la compressione sul link (tun) VPN se si abilita sul server deve essere abilitata anche sul client

persist-key
persist-tun

l’opzione persist cercherà di evitare l’accesso a queste risorse al riavvio cee potrebbero non essere più disponibili a causa di un downgrade dei privilegi

log-append /var/log/openvpn/serveropenvpn.log
status /var/log/openvpn/serveropenvpn-status.log

opzioni di log  la dir openvpn va creata sotto /var/log

verb 3

setta il livello di verbosità dei log.

 

a questo punto con un /etc/init.d/openvpn restart lanciare il demone e se tutto e’ a posto con ifconfig avremo una tun0 con IP 192.168.50.1 se qualcosa fosse andato storto tipicamente i path scritti male tail -f /var/log/syslog e var/log/openvpn/serveropenvpn danno le indicazioni necessarie a fare il debug necessario.

 

Bibiografia

http://openvpn.net/index.php/open-source/documentation/howto.html#mitm


Categorised as: Linux | Sistemi operativi | Work

Comments are disabled on this post


Comments are closed.