{"id":465,"date":"2012-10-25T17:15:56","date_gmt":"2012-10-25T15:15:56","guid":{"rendered":"http:\/\/clark.tipistrani.it\/?p=465"},"modified":"2014-10-06T15:45:03","modified_gmt":"2014-10-06T13:45:03","slug":"openvpn-server","status":"publish","type":"post","link":"http:\/\/clark.tipistrani.it\/?p=465","title":{"rendered":"Openvpn Server Linux per Client linux"},"content":{"rendered":"<p>Una volta installato openvpn con il solito apt-get install passiamo alla configurazione vera e propria.<br \/>\nPortandoci in \/etc\/openvpn, creiamo un link simbolico con easy_rsa che contiene tuttii tools che ci servono per creare chiavi e certificati:<br \/>\nln -s \/usr\/share\/doc\/openvpn\/examples\/easy-rsa\/2.0<br \/>\n<em><strong>NOTA MOLTO BENE<\/strong><\/em>!<br \/>\nquando si \u00e8 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&#8217;idiozia di non farlo e quando m&#8217;e&#8217; 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&#8217; rifare&#8230;<br \/>\nSpostiamoci n easy-rsa e cominciamo a creare una PKI (Public Key Infrastructure) che abbiamo gi\u00e0 visto sul CRM\u00a0 per Apache2, le operazioni sono sostanzialmentte le stesse,\u00a0 creare una autority che abbia chiavi pubblica e privata\u00a0 e\u00a0 un\u00a0 certificato Master con opportuna chiave che servir\u00e0 per firmare le chiavi e i certificati di tutti i client.<br \/>\nVolendo si pu\u00f2 editare &#8220;vars&#8221; cambiare i valori che vengono proposti come default in modo che durante l&#8217;operazione di generazione ai parametri amministrativi basta dare invio senza mettere citt\u00e0, stato, provincia, email etc.<br \/>\nI comandi sono i seguenti:<\/p>\n<p>.\u00a0 .\/vars<br \/>\n<strong>.\/<\/strong>clean-all<strong><br \/>\n.\/<\/strong>build-ca<\/p>\n<p>E con questo abbiamo generato la CA,\u00a0 generiamo ora il certificato e la chiave per il server &#8220;libeccio&#8221;<\/p>\n<pre>.\/build-key-server libeccio \r\nGeneriamo i parametri per Diffie Helman<\/pre>\n<pre>.\/build-dh \r\nGeneriamo la chiave ta per poter usare la direttiva tls-auth \r\n(serve per hardenizzare la connessione)<\/pre>\n<pre>openvpn --genkey --secret ta.key\r\ne con il lato server siamo a posto.\r\nCi mancano ora i certificati e le chiavi per i client nel nostro caso i client sono\r\ncrm, sibilla, grecale, cosa che otteniamo con \r\n.\/build-key crm\r\n.\/build-key sibilla\r\n.\/build-key grecale\r\nSe in futuro si rendesse necessario ( e di solito s\u00ec) aggiungere degli host\r\n\u00e8 necessario dare il comando source vars in caso contrario semplicemente dar\u00e0 errore.\r\nl'operazione generer\u00e0 i files $HOST.crt $HOST.csr $HOST.key\r\nRiassumnedo avremo una situazione di questo tipo<\/pre>\n<table style=\"width: 285px; height: 303px;\" border=\"1\">\n<tbody>\n<tr>\n<td>file<\/td>\n<td>installato su<\/td>\n<td>scopo<\/td>\n<td>segreto<\/td>\n<\/tr>\n<tr>\n<td>ca.crt<\/td>\n<td>server + ogni client<\/td>\n<td>certificatto root CA<\/td>\n<td>no<\/td>\n<\/tr>\n<tr>\n<td>ca.key<\/td>\n<td>solo lamacchina che certifica<\/td>\n<td>chiave root CA<\/td>\n<td style=\"text-align: center;\">si<\/td>\n<\/tr>\n<tr>\n<td>dh1024.pem<\/td>\n<td>solo sul server<\/td>\n<td>parametri Diffie Hellman<\/td>\n<td>no<\/td>\n<\/tr>\n<tr>\n<td>libeccio.crt<\/td>\n<td>solo libeccio<\/td>\n<td>certificato del server<\/td>\n<td>no<\/td>\n<\/tr>\n<tr>\n<td>libeccio.key<\/td>\n<td>solo libeccio<\/td>\n<td>chiave del server<\/td>\n<td>si<\/td>\n<\/tr>\n<tr>\n<td>crm.crt<\/td>\n<td>solo crm<\/td>\n<td>certificato client<\/td>\n<td>no<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">crm.key<\/td>\n<td style=\"text-align: left;\">solo crm<\/td>\n<td style=\"text-align: center;\">chiave client<\/td>\n<td>si<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\">sibilla.crt<\/td>\n<td>solo sibilla<\/td>\n<td>certificato client<\/td>\n<td>no<\/td>\n<\/tr>\n<tr>\n<td>sibilla.key<\/td>\n<td>solo sibilla<\/td>\n<td>chiave client<\/td>\n<td>si<\/td>\n<\/tr>\n<tr>\n<td>grecale.crt<\/td>\n<td>solo grecale<\/td>\n<td>certificato client<\/td>\n<td>no<\/td>\n<\/tr>\n<tr>\n<td>grecale.crt<\/td>\n<td>solo grecale<\/td>\n<td>chiave client<\/td>\n<td>si<\/td>\n<\/tr>\n<tr>\n<td>ta.key<\/td>\n<td>server +tutti i client<\/td>\n<td>\u00a0tsl-auth<\/td>\n<td>\u00a0si<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>N.B<\/strong>. i certificati e le chiavi vanno copiati in modo <span style=\"text-decoration: underline;\"><strong>SICURO<\/strong><\/span> (mail crittografata, chiave usb e copiati a manina, SSH) su vari client.<\/p>\n<p>Scriviamo ora il file di configurazione del server<\/p>\n<p>server.conf<\/p>\n<p>local 192.168.2.254<\/p>\n<p>l&#8217;indirizzo locale della macchina<br \/>\nport 7207<\/p>\n<p>la porta su cui OpenVPN ascolta<\/p>\n<p>proto udp<\/p>\n<p>il protocollo che usa OpenVPN<\/p>\n<p>dev tun<\/p>\n<p>il device che usa OpenVPN<\/p>\n<p>ca \/etc\/openvpn\/keys\/ca.crt<br \/>\ncert \/etc\/openvpn\/keys\/PC0.crt<br \/>\nkey \/etc\/openvpn\/keys\/PC0.key<br \/>\ndh \/etc\/openvpn\/keys\/dh1024.pem<br \/>\ntls-auth \/etc\/openvpn\/keys\/ta.key 0<\/p>\n<p>il path di chiavi e certificati<\/p>\n<p>server 192.168.50.0 255.255.255.0<\/p>\n<p>la net che OpenVPN user\u00e0<\/p>\n<p>cipher BF-CBC<\/p>\n<p>la scelta del &#8220;cifrario crittografico&#8221;\u00a0 Blowfish \u00e8 il default pu\u00f2 essere anche AES o Triple-DES<\/p>\n<p>keepalive 10 120<\/p>\n<p>la direttiva keepalive genera dei messagi similping per verificare la presenza o\u00a0 meno del client nello specifico manda un ping ogni 10 s e assume che l&#8217;HOST remoto si adown se non risponde entro 120 s<\/p>\n<p>comp-lzo<\/p>\n<p>abilita la compressione sul link (tun) VPN se si abilita sul server deve essere abilitata anche sul client<\/p>\n<p>persist-key<br \/>\npersist-tun<\/p>\n<p>l&#8217;opzione persist cercher\u00e0 di evitare l&#8217;accesso a queste risorse al riavvio cee potrebbero non essere pi\u00f9 disponibili a causa di un downgrade dei privilegi<\/p>\n<p>log-append \/var\/log\/openvpn\/serveropenvpn.log<br \/>\nstatus \/var\/log\/openvpn\/serveropenvpn-status.log<\/p>\n<p>opzioni di log\u00a0 la dir openvpn va creata sotto \/var\/log<\/p>\n<p>verb 3<\/p>\n<p>setta il livello di verbosit\u00e0 dei log.<\/p>\n<p>&nbsp;<\/p>\n<p>a questo punto con un \/etc\/init.d\/openvpn restart lanciare il demone e se tutto e&#8217; 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.<\/p>\n<p>&nbsp;<\/p>\n<p>Bibiografia<\/p>\n<p><a href=\"http:\/\/openvpn.net\/index.php\/open-source\/documentation\/howto.html#mitm\">http:\/\/openvpn.net\/index.php\/open-source\/documentation\/howto.html#mitm<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 \u00e8 finito di generare chiavi e certificati ed ogni volta che [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,7,6],"tags":[],"class_list":["post-465","post","type-post","status-publish","format-standard","hentry","category-linux","category-sistemi-operativi","category-work"],"_links":{"self":[{"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/posts\/465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=465"}],"version-history":[{"count":29,"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/posts\/465\/revisions"}],"predecessor-version":[{"id":1205,"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/posts\/465\/revisions\/1205"}],"wp:attachment":[{"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=465"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clark.tipistrani.it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}