Panoramica #
Quando ci si connette a Internet tramite un provider, si dà per scontato che quest'ultimo adotterà tutte le misure necessarie per garantire la sicurezza della connessione. Ma cosa succede se si desidera connettersi a un servizio privato? Come garantire che il traffico dal client al server, all'interno di un'infrastruttura pubblica, sia sicuro? È qui che entrano in gioco i servizi VPN o le tecnologie di rete privata virtuale (VPN ). Viene stabilita una connessione sicura tra i due nodi, impedendo a qualsiasi agente esterno di intercettare il traffico e ottenere informazioni sensibili.
I servizi VPN offrono diverse funzionalità, tra cui:
riservatezza: impedire a chiunque di leggere i tuoi dati. Questo è implementato con la crittografia.
Autenticazione: Verifica che i membri che creano il punto-punto siano dispositivi legittimi.
Integrità: verifica che il pacchetto VPN non sia stato modificato in qualche modo durante il transito.
Anti-riproduzione: impedire a qualcuno di catturare il traffico e inviarlo di nuovo, cercando di apparire come un dispositivo / utente legittimo.
Esistono diversi tipi di implementazione nel mercato basato su standard privativi e aperti, focalizzeremo questo articolo sulle soluzioni aperte, vedi di seguito le più pertinenti.
IPsec: È diventato di fatto lo standard di fatto per le installazioni VPN su Internet, implementa un gran numero di algoritmi crittografici e non ha conosciuto le maggiori vulnerabilità.
OpenVPN: Molto popolare ma non basato su standard, utilizza protocolli di sicurezza personalizzati, supporta TLS / SSL con Openssl e un gran numero di algoritmi crittografici.
L2TP: È un'estensione di PPTP, può utilizzare IPSec come livello di sicurezza, utilizzato principalmente in passato dagli ISP. Attualmente, ci sono opzioni migliori con prestazioni migliori.
Gabbia di protezione: È una VPN estremamente veloce ed estremamente facile da installare, utilizza gli algoritmi crittografici già inclusi nel kernel Linux, utilizza UDP e può essere configurato in qualsiasi porta.
Ambiente VPN scalabile #
L'obiettivo di questo articolo è descrivere come creare un servizio con bilanciamento del carico e alta disponibilità per i servizi VPN utilizzando Relianoid Load Balancer . Ci concentriamo su WireGuard , che utilizza la porta 51820 UDP , ma la procedura può essere estesa ad altre soluzioni simili con protocolli e porte differenti.
In questo articolo, la configurazione del server VPN viene omessa, ma per scalare con successo una VPN in un ambiente ad alta disponibilità è necessario tenere in considerazione i seguenti punti :
Migliori I file di configurazione del server VPN devono essere replicati in tutto il VPN server che saranno bilanciati.
Client VPN il traffico deve essere NAT nel server VPN solo per garantire che tutte le connessioni in entrata e in uscita da un client APN passino attraverso lo stesso server VPN nel pool.
Il diagramma seguente descrive l'architettura scalabile da raggiungere.
1. Due Gabbia di protezione server che condividono la stessa configurazione.
2. Ogni Gabbia di protezione il server crea la stessa rete privata 192.168.2.0/24.
3. Ogni VPN il client sarà NAT con l'IP del VPN server in cui è connesso.
4. I client si connettono a un IP pubblico vpn.company.com via 51820UDP, questa connessione verrà inoltrata a Relianoide (192.168.100.10).
5. Relianoide caricherà il bilanciamento delle connessioni client con quelle disponibili VPN server e, infine, il tunnel verrà creato su uno dei server.
In questo articolo, descriveremo in dettaglio due diversi modi per configurare questo servizio VPN scalabile con Relianoid : uno tramite interfaccia web e un altro tramite interfaccia a riga di comando.
Configurazione del servizio virtuale VPN con Relianoid #
Questa sezione spiega come raggiungere la corretta configurazione con l'interfaccia della riga di comando.
Bisogna tenere presente che i protocolli VPN richiedono la funzionalità di sessione persistente per garantire che lo stesso client rimanga connesso allo stesso backend per un certo periodo di tempo, anche se non genera traffico.
Per creare il servizio virtuale VPN , è necessario creare una nuova farm denominata VPNLB con profilo l4xnat in ascolto sulla porta 51820 UDP associata all'indirizzo IP virtuale VPN 192.168.100.10 e in modalità sNAT , dove il firewall eseguirà il NAT delle connessioni provenienti dai client con il seguente comando:
zcli farm create -farmname VPNLB -vip 192.168.100.10 -vport 51820 -profile l4xnat
o tramite la GUI Web:
Modifica i parametri globali della farm per utilizzare il protocollo UDP , quindi configura la sessione persistente tramite IP di origine e un semplice algoritmo di bilanciamento del carico basato sul peso.
zcli farm set VPNLB -protocollo udp -nattype nat -persistence srcip -ttl 1800 -peso algoritmo
o tramite la GUI Web:
Aggiungere due server backend, 192.168.100.11 e 192.168.100.12, al farm già creato per il servizio di bilanciamento del carico VPN . Non è necessario configurare la porta , poiché l4xnat utilizzerà la stessa porta virtuale configurata.
zcli farm-service-backend aggiungi VPNLB default_service -ip 192.168.100.11 zcli farm-service-backend aggiungi VPNLB default_service -ip 192.168.100.12
o tramite la GUI Web:
Per selezionare solo backend funzionanti, configuriamo un semplice controllo di integrità per i backend che verifichi la disponibilità della porta 51820 UDP sul lato backend. Copiate un controllo di integrità generico precaricato esistente chiamato check_udp e modificatelo. Consigliamo di impostare il campo "interval" a 21 , poiché ogni controllo di integrità utilizza un timeout di 10 secondi , quindi 10 secondi * 2 backend + 1 secondo = 21 secondi.
zcli farmguardian create -copy_from check_udp -name check_udp_vpn zcli farmguardian set check_udp_vpn -description "Verifica VPN per UDP 51820" -interval 21
o tramite la GUI Web:
Infine, aggiungi il controllo di integrità già creato denominato check_udp_vpn al VPNLB della farm corrente.
zcli farm-service-farmguardian aggiungi VPNLB default_service -name check_udp_vpn
Mitigazione degli attacchi DDoS con modulo IPDS #
I servizi VPN sono di solito obiettivi di attacchi e minacce alla sicurezza informatica al fine di sfruttare la connettività remota per accedere alle reti dell'organizzazione.
Per questo motivo, è consigliabile integrare il nostro servizio VPN scalabile con un sistema di sicurezza per proteggere la nostra organizzazione dagli attacchi esterni. Questa sezione spiega come utilizzare il modulo IPDS di Relianoid e mitigare gli attacchi DDoS per i servizi VPN pubblici in modo molto semplice.
In questa sezione vengono descritte due diverse strategie di protezione che offrono risultati migliori con questo tipo di servizio: la protezione IP tramite whitelist e i limiti di connessione.
Consentire l'accesso al servizio VPN pubblico da una determinata whitelist #
L'utilizzo di blacklist / whitelist può essere impiegato in servizi in cui è possibile garantire la conoscenza dell'elenco dei clienti, ad esempio, un servizio VPN pubblico per consentire il telelavoro in un'organizzazione di un determinato paese.
Per configurare una whitelist per la Germania e bloccare il traffico proveniente da altri intervalli di indirizzi IP di diversi paesi, procedere come segue:
1. Vai su IPDS> Lista nera e trova lì la lista nera geo_ES_Germania. Poi Modifica questa regola della lista nera e modificare il campo della politica in Consentire da utilizzare come whitelist.
2. Nella stessa lista vai alla scheda Farms e spostare la fattoria VPNLB dalla colonna Aziende agricole disponibili a Abilita fattorie.
3. Premere il tasto Giocare icona inclusa in Azione per abilitare la whitelist.
4. Vai su IPDS> Lista nera e trova lì la lista nera Tutti, vai alla scheda Farms e spostare la fattoria VPNLB dalla colonna Aziende agricole disponibili a Abilita fattorie.
5. Premere il tasto Giocare icona di Azione per abilitare la lista nera.
Con questa configurazione, una whitelist denominata geo_ES_Germany, già precaricata in Relianoid con tutti gli intervalli IP di tale paese, viene aggiunta al VPNLB della farm , mentre un'ulteriore blacklist denominata All , contenente tutti gli altri indirizzi IP, viene aggiunta alla farm. Pertanto, se l'IP del client non corrisponde a nessun intervallo di indirizzi IP della Germania, la connessione verrà interrotta.
Consentire l'accesso al servizio VPN pubblico con limiti di connessione #
Per applicare questo tipo di protezione DDoS, è assolutamente consigliabile conoscere il funzionamento del nostro servizio pubblico. Ad esempio, WireGuard utilizza una sola connessione UDP per client . Pertanto, se riceviamo diverse connessioni simultanee dallo stesso indirizzo IP di origine, possiamo presumere che più di un telelavoratore si stia connettendo dietro un NAT che maschera il traffico, oppure potrebbe trattarsi di un attacco di tipo UDP flood . In ogni caso, è evidente che più di 10 connessioni per indirizzo IP di origine non rappresentano un traffico legittimo.
Per configurare un limite di connessioni simultanee per indirizzo IP di origine per il nostro servizio virtuale VPN , procedere come segue:
1. Vai su IPDS> DoS> Crea regola DoS, crea una nuova regola con nome limite_per_sorgente_IP e seleziona la Tipo di regola limite di connessione totale per IP sorgente e premere Crea
.
2. Nel modulo di edizione delle regole, immettere il limite delle connessioni simultanee desiderate nel campo Limite totale delle connessioni per IP di origine, nel nostro caso 10 e premere Invio.
3. Vai alla scheda Farms e spostare la fattoria VPNLB dalla colonna Aziende agricole disponibili a Abilita fattorie.
Con questa configurazione, abbiamo limitato il numero di connessioni simultanee per IP sorgente a 10, non ci fidiamo di alcun IP client che tenti di stabilire più di 10 connessioni VPN. Nel caso in cui si possa garantire che più di un client non effettui mai connessioni attraverso un NAT pubblico, il parametro limit_per_source_IP può essere configurato a un solo valore.
Goditi un servizio VPN scalabile, altamente disponibile e sicuro con Relianoid!




