Clark's Home page

Tecnicismi vari di un Sistemista Linux ma anche qualcosa sulla sua vita

Openvpn su Devuan Ascii —

Installazione
apt-get install openvpn che si tira dietro le dipendenze necessarie
Preparazione
Portandosi in /etc/openvpn/ creare un link simbolico a easy-rsa
ln -s /usr/share/doc/openvpn/examples/easy-rsa/2.0
quindi entrando in /etc/openvpn/easy-rsa editare vars e cambiare questi parametri:
export KEY_SIZE=2048
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY=”IT”
export KEY_PROVINCE=”MI”
export KEY_CITY=”My_city”
export KEY_ORG=”My_Firm srl”
export KEY_EMAIL=”Clark@My_Firm.com”
export KEY_OU=”Systems and Networking”
serve per non cambiarli/aggiungerli durante le successive generazioni di certificati/chiavi salvare e chiudere.
Si tratta ora di creare una PKI (Public Key Infrastructure) in pratica 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 tutto viene generato in /etc/openvpn/easy-rsa/keys.
.  ./vars
./clean-all
./
build-ca

E con questo abbiamo generato la CA, piu’ precisamente abbiamo generato CA.crt e CA.key: generiamo ora il certificato e la chiave per il server “libeccio”, nota a margine si può usare qualsiasi nome mi pare sensato usare l’hostname
./build-key-server chimera 
che sempre in key genera chimera.crt chimera.csr e chimera.key
Generiamo i parametri per Diffie Helman
./build-dh
che genera dh2048.pem
Generiamo la chiave ta per poter usare la direttiva tls-auth
(serve per hardenizzare la connessione)
openvpn –genkey –secret ta.key
che genera ta.key
Ultimo passo generazione del crl per il ritiro dei certificati (ad esempio se un collega che la usa si dimettesse), per aver provato sulla mia pelle che i valori di default di openssl sono davvero brevi suggerisco caldamente in barba alle norme di sicurezza di editare /etc/openvpn/easy-rsa/openssl-1.0.0.cnf e di cambiare questi parametri dai valori di default nella sezione crl a questi:
default_days    = 3650                  # how long to certify for
default_crl_days= 3650                  # how long before next CRL
ln -s /etc/openvpn/easy-rsa/openssl-1.0.0.cnf openssl.cnf
openssl ca -gencrl -keyfile keys/ca.key -cert keys/ca.crt -out /etc/openvpn/easy-rsakeys/crl.pem -config ./openssl.cnf
Con questo ultimo passaggio abbiamo finito la parte server, da notarsi che è possibile generare certificati e chiavi per più server, infatti almeno nel nostro caso sullo stesso server virtuale girano un server che offre openvpn per Linux e un server che offre openvpn per Windows. quindi a puro titolo di esempio si può tranquillamente fare una cosa del tipo:
./build-key-server libeccio_win
che genererà le credenziali chimera_win.crt chimera_win.csr e chimera_win.key

Passiamo alla generazione dei client che è in tutto e per tutto uguale sia per i client Linux che per quelli Windows e che si ottiene con:
./build-key client01
./build key clientN
se uno alla volta o se ipotizziamo ci vogliono 10 client una stringa del genere:

for i in {01..10}; do ./build-key client$i; done

ci risolve il problema.

Configurazione server Linux per client Linux 
configurazione server su Linux per client Windows 
configurazione client Linux
configurazione client Windows 
configurazione client IOS (Apple) 
ritirare certificati 


Addendum:
in /etc/rc.local per poter navigare la rete interna accedendo dalla VPN inserire queste istruzioni:
echo “1” > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE
che non necessitano di spiegazione.
Addendum1:
sul/sui perimetrali (firewall) devono esistere delle regole d questo tipo:
add rule inet firewall FORWARD ip daddr $SERVER_INTERNO_VPN tcp dport { porta, porta } ct state new counter accept
add rule inet fw-nat PREROUTING ip daddr $VPNIP tcp dport { porta, porta } counter dnat to $SERVER_INTERNO_VPN


 


Categorised as: Linux | Networking | VPN | Work

Comments are disabled on this post


Comments are closed.