OpenVPN 
Introduzione OpenVPN, è un "full-featured SSL VPN" Client-to-Server multi utente, il quale implementa estensioni di sicurezza sui livelli 2 e 3 dell'OSI servendosi dei protocolli standard SSL/TLS, con un metodo di autenticazione flessibile basato sui certificati digitali, username/password e permette di controllare gli accessi degli utenti mediante le politiche di firewalling applicate all'interfaccia virtualeVPN del server. Inoltre supporta ethernet bridging, TCP/UDP tunnel transport, trasporto via proxy, supporto IP addresses dinamico, ottima scalabilità per centinaia o migliaia di utenti, autenticazione utenti via PAM e portabilità per la maggior parte dei sistemi operativi. Il metodo di autenticazione per la negoziazione del tunnel è bidirezionale, una volta che il server ha autenticato il client, lo stesso client deve poi autenticare il server. Il primo step, nel set-up del tunnell vpn è quello di mettere il canale di comunicazione in sicurezza crittografando i dati, poi segue la fase di autenticazione attraverso l'uso dei certificati digitali, infine se quest'ultimi risultano validi, avviene lo scambio delle chiavi digitali tra client e server attivando l'adpter virtuale. Infine il server rilascia un indirizzo ip dinamico per consentire il dialogo sulla nuova rete virtuale. OpenVPN è in grado di eseguire la compressione dei dati che transitano all'interno del tunnel vpn permettendo così di ridurre il carico sulla rete wan.
Installare OpenVPN Server/ Client su Linux Se state utilizzando la distro Fedora, eseguite il comando:
# yum -y install openvpnaltrimenti, se non utilizzate Fedora o desiderate compilare i sorgenti, scaricate pure i seguenti sorgenti:
Compilare OpenVPN e LZO
# tar zxf lzo*
# cd lzo*
# ./configure && make && make install
# cd ..
# tar zxf openvpn-version
# cd openvpn-version
# ./configure && make && make install
# mkdir /etc/openvpn
Creare i certificati/chiavi SSL/TLS All'interno della directory openvpn-version precedentemente scompattata, troverete una dir denominata easy-rsa contenente alcuni scripts che facilitano la creazione dei certificati/chiavi SSL oppure Consigliamo di scaricare l'archivio easy-rsa da linuxguide.it già testato.
Seguite poi i seguenti steps: portatevi sulla dir openvpn-version oppure se avete scaricato l'archivio easy-rsa da linuxguide.it, scompattatelo e andate avanti)
# cp -a easy-rsa /etc/openvpn/ # cd /etc/openvpn/easy-rsa
Export delle variabili Con un editor di testi o con VI, ricordatevi di modificare le variabili contenute all'interno del file denominato vars contenuto nel file che avete precedentemente scaricato. Le variabili sicuramente da modificare sono KEY_PROVINCE, KEY_CITY, KEY_ORG,KEY_EMAIL il resto lasciatelo pure com'è A questo punto per continuare con l'export delle variabili, effettuate un COPIA e INCOLLA delle variabili dal file vars al vostro terminale, quindi:
# cat varscol mouse, selezionate tutte le righe del file appena visualizzato, copiatele ed incollatele sul terminale.
Adesso possiamo generare i certificati e le chiavi digitali: # ./clean-all (questo cancellerà il contenuto della directory keys, quindi se avete già creato i certificati fate attenzione) # ./build-ca (questo script genererà il certificato root, vi sarà chiesto poi di inserire un Common Name che dovrà essere specificato lo stesso anche quando creerete il certificato server e client) # ./build-key server (questo script genererà il certificato per il server; stesso Common Name del root ca) # ./build-key client (questo script genererà il certificato per i clients; Common Name del root ca) # ./build-dh (questo script genererà il DIFFIE-HELLMAN necessario per il server)
A questo punto le chiavi ed i certificati sono stati creati, quindi occorre copiarli in "/etc/openvpn/keys": # cp -a /etc/openvpn/easy-rsa/keys /etc/openvpn/
Se desiderate aggiungere un maggiore livello di sicurezza che aiuta a bloccare attacchi di tipo DoS e UDP Flooding, è possibile creare una chiave tls col seguente comando, poi copiatela sia sul server che sul client:
# openvpn --genkey --secret ta.key
Trasferimento Certificati e Chiavi sul Client Copiate i seguenti file ca.crt, client.crt, client.key e ta.key per i client:
# mkdir client_keys # cp ca.crt client.crt client.key ta.key dh1024.pem client_keysCreiamo un archivio tar
# tar czf client_keys.tar.gz client_keys/oppure zip(per i clients windows)
# zip client_keys.zip client_keys/*
Trasferiamo via ssh sul client linux, l'archivio contenente le chiavi:
# scp client_keys.tar.gz utente@ip_address_client:/home/utenteOppure trasferitelo su un device rimovibile(floppy, pen-drive o altro)
Loggatevi sul client linux seguendo tale procedura:
# mkdir -p /etc/openvpn/keys # cd /home/utente # tar zxf client_keys.tar.gz # mv client_keys/* /etc/openvpn/keys
Adesso che le chiavi sono state create e trasferite sul client, proseguiamo con i files configurazione Server e Client.
File di configurazione lato Server Copiate/Scaricate il seguente file di configurazione all'interno della directory /etc/openvpn sul server, adattandolo alle vostre esigenze.
##### LinuxGUIDE.it - OpenVPN Server ##### # il punto e virgola(;) serve per commentare/disabilitare la direttiva # Avvio del servizio in modalità daemon daemon # Porta d'ascolta per il servizio 1194 di default port 1194 # Protocollo di trasporto TCP, potete utilizzare anche UDP. proto tcp # Il device 'tun' crea tunnel IP routed, mentre 'tap' crea un tunnel ethernet bridged dev tun # Certificati digitali # Certificate Authority o root certificate ca /etc/openvpn/keys/ca.crt # Certificato server cert /etc/openvpn/keys/server.crt # Chiave server key /etc/openvpn/keys/server.key # Diffie hellman parameters dh /etc/openvpn/keys/dh1024.pem # range VPN, assicuratevi che la rete 10.8.0.0/24 non sia già una rete # utilizzata all'interno della vostra organizzazione. server 10.8.0.0 255.255.255.0 # La direttiva push route abilita i clients a raggiungere la rete dichiarata # Supponiamo di voler permettere ai clients vpn di comunicare con le reti # 192.168.10.0/24 e 172.16.10.0/24 push "route 192.168.10.0 255.255.255.0" push "route 172.16.10.0 255.255.255.0" # O utilizzate push route OPPURE push redirect-gateway # push redirect-gateway, configura sui clients vpn, questo server, come Default # Gateway, abilitando i clients a raggiungere tutte le reti visibili dal server! # Sia che utilizziate la direttiva push route o gateway, ricordatevi sempre di # modificare le tabelle di routing sul vostro default gateway, aggiungendo il # range della vpn per consentire che le altre reti la possano raggiungere. # Se non volete mettere le mani sui vostri default gateway(routers o altro) # potete sceglire in alternativa di implementare il NAT su questo server in # maniera tale che tutti i clients vengano mascherati dall'ip address di questo server. # Per la configurazione del NAT, vai alla sezione Networking > NAT di linuxguide.it # push "redirect-gateway" è commentato dal punto e virgola, pertanto non attivo. ;push "redirect-gateway" # La seguente direttiva cominica ai clients vpn I server dns e wins disponibili ;push "dhcp-option DNS 10.8.0.1" ;push "dhcp-option WINS 10.8.0.1" # La seguente direttiva abilita i clients a vedere ogni altro. Di default il client vede soltanto il server. Decommentare, per attivare la direttiva. ;client-to-client # Keepalive, esegue un ping ogni 10 secondi e se nell'intervallo di 120 secondi # il peer remoto non risponde si presume che il peer è down. keepalive 10 120 #HMAC firewall, blocca eventuali attacchi DoS/UDP port flooding tls-auth /etc/openvpn/keys/ta.key 0 # l'ultimo parametro dovrebbe essere 1 sui client 0 sui server # Algoritmi di crittografia, client e server devono utilizzare lo stesso algoritmo cipher BF-CBC # Blowfish (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES # Compressione dati sul link VPN. Se attivato qui attiarlo anche sul client. comp-lzo # Numero max di connessioni ;max-clients 100 # Prova a riservare alcuni stati nelle fasi di restart persist-key persist-tun # File di log in /var/log status openvpn-status.log log openvpn.log ;log-append openvpn.log # scrive i logs in append verb 3 # livello di verbosità dei logs
Infine per avviare il servizio eseguite il comando: # cd /etc/openvpn # openvpn --config server.conf Oppure
se volete gestire il servizio con init, scaricate il file di init cliccando qui e copiatelo all'interno di /etc/init.d rinominadondolo in openvpn
chkconfig --add openvpn (per registrare il nuovo servizio) chkconfig openvpn on 345 (per attivare il servizio all'avvio del sistema) /etc/init.d/openvpn start (per avviare il servizio) /etc/init.d/openvpn stop (per stoppare il servizio)
File di configurazione lato LINUX Client Copiate/Scaricate il seguente file di configurazione all'interno della directory /etc/openvpn sul client, adattandolo alle vostre esigenze. 
##### LinuxGUIDE.it - OpenVPN Linux Client ##### # il punto e virgola(;) serve per commentare/disabilitare la direttiva # Avvia l'applicazione come client vpn client # Protocollo di trasporto TCP, potete utilizzare anche UDP. proto tcp # Il device 'tun' crea tunnel IP routed, mentre 'tap' crea un tunnel ethernet bridged # I clients Windows vogliono il device Tap ;dev tup # se il client è windows dev tun # se il client è linux # IP address/hostname e numero di porta del Server remote 192.168.4.100 1194 # resolv-retry infinite nobind # Le direttive user e group vanno dichiarate soltanto per i clients linux user nobody group nobody # Certificati digitali # Certificate Authority o root certificate ca /etc/openvpn/keys/ca.crt # Certificato client cert /etc/openvpn/keys/client.crt # Chiave client key /etc/openvpn/keys/client.key #HMAC firewall, blocca eventuali attacchi DoS/UDP port flooding tls-auth /etc/openvpn/keys/ta.key 1 #l'ultimo parametro dovrebbe essere 1 sui client 0 sui server # Algoritmi di crittografia, client e server devono utilizzare lo stesso algoritmo cipher BF-CBC # Blowfish (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES # Compressione dati sul link VPN. Se attivato qui attiarlo anche sul client comp-lzo # Prova a riservare alcuni stati nelle fasi di restart persist-key persist-tun verb 3 # livello di verbosità dei logs Infine per avviare il client eseguite il comando: # cd /etc/openvpn # openvpn --config client.conf
Installare OpenVPN Client su Windows Scaricate openvpn-gui.exe dal sito www.openvpn.net ed installatelo. Copiate all'interno della directory C\:Programmi\OpenVPN\config, il File di Configurazione di esempio e I Certificati Digitali precedentemente creati.
File di configurazione lato Windows Client
##### LinuxGUIDE.it - OpenVPN Windows Client ##### # il punto e virgola(;) serve per commentare/disabilitare la direttiva # Avvia l'applicazione come client vpn client # Protocollo di trasporto TCP, potete utilizzare anche UDP. proto tcp # Il device 'tun' crea tunnel IP routed, mentre 'tap' crea un tunnel ethernet bridged # I clients Windows vogliono il device Tap ;dev tup # se il client è windows dev tun # se il client è linux # IP address/hostname e numero di porta del Server remote 192.168.4.100 1194 # resolv-retry infinite nobind # Le direttive user e group vanno dichiarate soltanto per i clients linux ;user nobody ;group nobody # Certificati digitali # Certificate Authority o root certificate ca ca.crt # Certificato client cert client.crt # Chiave client key client.key #HMAC firewall, blocca eventuali attacchi DoS/UDP port flooding tls-auth ta.key 1 #l'ultimo parametro dovrebbe essere 1 sui client 0 sui server # Algoritmi di crittografia, client e server devono utilizzare lo stesso algoritmo cipher BF-CBC # Blowfish (default) ;cipher AES-128-CBC # AES ;cipher DES-EDE3-CBC # Triple-DES # Compressione dati sul link VPN. Se attivato qui attiarlo anche sul client. comp-lzo # Prova a riservare alcuni stati nelle fasi di restart persist-key persist-tun verb 3 # livello di verbosità dei logs
avviate il client cliccando col pulsante destro del mouse sul file di configurazione.
|