martedì 13 agosto 2019

Installare OPENVPN Community su server Windows

=========================================================
Un po di tempo fa e' nata l'esigenza di far accedere un cliente da remoto ad alcune applicazioni sul proprio PC. Per via di diverse limitazioni, anche economiche (doveva completamente attrezzarsi di firewall, adeguare le linee internet, acquistare un server ecc. ecc.) mi e' sembrato piu semplice usare un server in cloud, RDP, su cui installare le applicazioni da usare
=========================================================


=========================================================
INTRODUZIONE
Usare OPENVPN Community edition che e' leggermente piu macchinoso da installare, ma che esiste anche in versione Windows e soprattutto
non ha la limitazione di max. 2 client contemporanei
Il server tipo di questa installazione ha min. 2 schede di rete. Eventuali schede di rete aggiuntive verranno disattivate
La prima scheda di rete ha indirizzo IP pubblico, mentre la seconda un IP privato (192.168.11.1/24).
L'unico firewall che verra' utilizzato e' quello di Windows, con le seguenti regole:
 - una regola per bloccare in ingresso l'accesso RDP da qualsiasi IP tranne quello pubblico di provenienza
 - una regola per consentire in ingresso l'accesso RDP dal proprio IP pubblico
 - una regola per consentire in ingresso l'accesso UDP/1194 da qualsiasi IP
Tutte le altre regole verranno disabilitate.
Installando OpenVPN viene aggiunta una terza scheda di rete TAP (bridge mode) o TUN(routing). Nel nostro caso useremo la modalita
routing. Utilizzando le impostazioni di default, OpenVPN funziona in modalita' routing, con l'interfaccia TUN.
In questa modalita viene assegnato da OpenVPN un indirizzo ip appartenente ad un range di una rete di trasporto, che DEVE essere diverso
da quello della interfaccia locale. Il client OpenVPN potrebbe prendersi un indirizzo tipo 10.8.0.12/24, mentre la LAN locale a cui deve
accedere e' 192.168.11.0/24. Se tutto cio che abbiamo fatto sopra funziona, il client potra raggiungere l'ip del server sulla rete di
trasporto (10.8.0.0/24), e potra pingarlo. Cio che non potra fare, e' raggiungere l'interfaccia locale, con indirizzamento 192.168.11.1
(salvo le modifiche da effettuare sotto). A questo punto, se il cliente riesce a pingare il server sull'interfaccia di trasporto, e
necessario effettuare alcune configurazioni aggiungive
=========================================================

=========================================================
CONFIGURAZIONE SERVER

CAMBIO NOME MACCHINA
Non installare alcun software (SQL, OpenVPN) senza aver prima cambiato il NOME HOST.
Inoltre andare in pannello di controllo/sistema/nome computer/cambia impostazioni/change/more... ed aggingere nella casella
Primary DNS suffix of this computer: zappologenova.it (oppure il nome dominio desiderato).
=========================================================

=========================================================
CONFIGURAZIONE WINDOWS FIREWALL (parte 1)
Suppontendo che l'IP pubblico sia 71.72.73.75
Appena verra avviata la macchina, questa sara raggiungibile tramite RDP da qualsiasi ip di provenienza. Occorre limitare subito gli IP
dai quali ci si puo connettere (tranne il proprio, ovviamente). Per fare questo occorre creare una regola che blocca gli intervalli di
IP (1.1.1.1 - 71.72.73.74 e 71.72.73.76 - 255.255.255.255, lasciando fuori 71.72.73.74) e crearne una seconda che consente la
connessione RDP per l'ip specifico. I seguenti comandi creano le regole di firewall:
netsh advfirewall firewall add rule name="RDP Block" dir=in action=block protocol=tcp localport=3389 enable=yes profile=any remoteip="1.1.1.1-10.7.0.255,10.9.0.1-71.72.73.74,71.72.73.76-255.255.255.255"
netsh advfirewall firewall add rule name="RDP Allow" dir=in action=allow protocol=tcp localport=3389 enable=yes profile=any remoteip="10.8.0.1-10.8.0.255,71.72.73.75"
netsh advfirewall firewall add rule name="OPENVPN" dir=in action=allow protocol=UDP localport=1194 enable=yes profile=any
lasciare abilitato anche il ping per il controllo del corretto funzionamento dell'host.
Eventualmente aggiungere delle regole per OPENVPN basate sugli eseguibili oltre a quelle che utilizzano i protocolli di rete.
Disabilitare tutte le altre regole.
=========================================================

=========================================================
INSTALLAZIONE E CONFIGURAZIONE RRAS
Installare il componente RRAS (remote access) dalla console di server manager e riavviare
Configurare il remote access con il quick wizard ed abilitare il servizio (custom configuration/routing)
Eseguire il seguente comando in powershell per installare remote access
install-WindowsFeature RemoteAccess,DirectAccess-VPN,Routing -IncludeManagementTools
=========================================================

=========================================================
ABILITAZIONE INOLTRO IP
Modificare il valore della seguente voce di registro da 0 ad 1
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"IPEnableRouter"=dword:00000001
e riavviare
p.s. senza questa modifica ed usando la modalita routing di OpenVPN, e' possibile pingare e raggiungere solo l'ip sulla rete di trasporto
(10.8.0.1). Gli IP sulla rete interna (192.168.11.1) non sarebbero raggiungibili. Grazie all'installazione dell'RRAS e di questa modifica
al registro di Windows, sara possibile raggiungere gli ip anche sulla rete interna locale, e di conseguenza eventuali altri host sulla
LAN.
=========================================================

=========================================================
INSTALLAZIONE OPENVPN
Scaricare ed installare OpenVPN dal seguente link:
https://openvpn.net/index.php/open-source/downloads.html
La versione client e server sono identiche. Si differenziano solo per i file di configurazione ed alcuni passaggi in piu per la certification authority.
Al termine dell'installazione riavviare il server.
IMPORTANTE
Durante l'installazione ricordarsi di selezionare la voce easy-rsa 2 (certificate management script).
Senza non sarebbe possibile eseguire tutta la parte di creazione dei certificati.
=========================================================

=========================================================
PROFILI DI RETE
Per evitare l'insorgere di problematiche e' bene che tutte le schede di rete appartengano al profilo privato. Il modo piu veloce e' il
seguente (da powershell)
Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private
Tutte le connessioni appartengono al profilo privato.
=========================================================

=========================================================
CONFIGURAZIONE
I nomi assegnati ai certificati non sono importanti. Devono solo combaciare tra server e client.
Quando creeremo i certificati per il server possiamo usare SERVER come CN e client1, client2 ecc. per i singoli client
Non vengono creati nomi utente e password, ma solo certificati per l'autenticazione. E possibile aggiungere una password al certificato.

GENERAZIONE CERTIFICATI
andare in C:\Program Files\OpenVPN\easy-rsa>
I passaggi per creare i certificati sono abbastanza semplici:
 - init-config
 - notepad vars.bat (modificare i parametri necessari nelle domande del certificato)

ES vars.bat modificato
set KEY_COUNTRY=IT
set KEY_PROVINCE=GE
set KEY_CITY=GENOA
set KEY_ORG=OpenVPN
set KEY_EMAIL=info@ortopediamilano.it
set KEY_CN=omsrv01.ortopediamilano.it
set KEY_NAME=omsrv01
set KEY_OU=EDP
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234

 - vars.bat
 - clean-all
 - build-ca
 - build-key-server server
ES: build-key-server omsrv01
 - build-key client1
ES: build-key lagustena01
 - build-dh

CONFIGURATION FILES

SERVER CONF FILE
Andare in "c:\Program Files\OpenVPN\sample-config" e copiare i file dentro config
1 - correggere i percorsi dei certificati (e' importante usare le doppie barre):
ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"

cert "C:\\Program Files\\OpenVPN\\config\\server.crt"

key "C:\\Program Files\\OpenVPN\\config\\server.key"  # This file should be kept secret


2 - un po piu sotto:
dh "C:\\Program Files\\OpenVPN\\config\\dh2048.pem"

3 - push "route 192.168.11.0 255.255.255.0" (supponendo che la schede di rete interna abbia come indirizzo 192.168.11.1/24)

4 - commentare la riga (nel caso e' possibile usare anche questo meccanismo per incrementare la sicurezza)
tls-auth ta.key 0 # This file is secret
 in
#by trap tls-auth ta.key 0 # This file is secret


5 - aggiungere questa riga per la shell di management (la scelta della porta e' arbitraria). Collegarsi in SSH
management localhost 7505

CLIENT CONF FILE
Andare in "c:\Program Files\OpenVPN\sample-config" e copiare i file dentro config

1 - cambiare la riga
remote myserver-1 1194
 in
remote FQDN 1194 (remote server.zappologenova.it)


2 - Commentare la riga
tls-auth ta.key 1
#by trap tls-auth ta.key 1
=========================================================

=========================================================
COPIA CONF FILES E CERTIFICATI
Dentro alla cartella "C:\Program Files\OpenVPN\sample-config" sono situati i file di configurazione modificati in precedenza, sia per il server che per i client
Dentro alla cartella "C:\Program Files\OpenVPN\easy-rsa\keys" ci sono i certificati generati in precedenza per CA, server e client.
SERVER
Copiare tutti i certificati dentro alla cartella "C:\Program Files\OpenVPN\config"
Copiare SOLO il file di configurazione del server dentro alla cartella "C:\Program Files\OpenVPN\config"
Riavviare
CLIENT
Copiare SOLO i files del certificato del client (*.crt, *.key, *.csr) ed il file di configurazione relativo dentro alla cartella "C:\Program Files\OpenVPN\config"
=========================================================

=========================================================
CONFIGURAZIONE CLIENT
Aggiungere il nome usato per il certificato al file hosts di Windows
Nel caso sopra ho aggiunto i nomi SERVER e server.zappologenova.it
=========================================================

=========================================================
LINK UTILI

GUIDA INSTALLAZIONE
https://community.openvpn.net/openvpn/wiki/Easy_Windows_Guide

OpenVPN (community edition)
https://openvpn.net/index.php/open-source/downloads.html

WINDOWS IP FORWARDING
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc962461(v=technet.10)
=========================================================

Nessun commento:

Posta un commento