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