Domanda:
Qual è la differenza di sicurezza tra una connessione VPN e una connessione SSL?
Jonas
2011-01-06 19:12:46 UTC
view on stackexchange narkive permalink

Vorrei progettare un'applicazione client-server in cui il server sia posizionato su Internet. Presumo che potrei impostare la connessione client-server utilizzando VPN (sta usando IPSec?) O utilizzando una connessione SSL (possibilmente https). Quali sono le differenze tra VPN / IPsec e SSL / https per la protezione di una connessione client server su Internet?

una maggiore comprensione della base di clienti prevista e della natura della tua domanda ti aiuterebbe a ottenere una risposta migliore e ci aiuterebbe a evitare di andare su tangenti non correlate :)
Come scegliere un provider VPN? http://security.stackexchange.com/questions/3973/how-do-i-pick-a-vpn-provider
Per una chiara comprensione della VPN: guarda questo video http://www.youtube.com/watch?v=KFODy-dHcU8
Otto risposte:
#1
+77
Thomas Pornin
2011-01-06 20:12:58 UTC
view on stackexchange narkive permalink

VPN significa "Rete privata virtuale". È un concetto generico che designa una parte di una rete più grande (ad esempio Internet in generale) che è logicamente isolata dalla rete più grande attraverso mezzi non hardware (questo è ciò che significa "virtuale"): non è che stiamo usando distinti cavi e interruttori; piuttosto, l'isolamento viene eseguito tramite l'uso della crittografia.

SSL (ora noto come TLS) è una tecnologia che accetta un mezzo di trasporto bidirezionale e fornisce un mezzo bidirezionale protetto . Richiede che il mezzo di trasporto sottostante sia "per lo più affidabile" (quando non viene attaccato, i byte di dati vengono trasferiti nel dovuto ordine, senza perdite e senza ripetizioni). SSL fornisce riservatezza, integrità (le alterazioni attive vengono rilevate in modo affidabile) e alcune autenticazioni (solitamente autenticazione del server, possibilmente autenticazione reciproca client-server se si utilizzano certificati su entrambi i lati).

Quindi VPN e SSL non provengono dal stesso livello. Una implementazione VPN richiede un po 'di crittografia a un certo punto. Alcune implementazioni VPN utilizzano effettivamente SSL, risultando in un sistema a più livelli: la VPN trasferisce i pacchetti IP (della rete virtuale) serializzandoli su una connessione SSL, che a sua volta utilizza il TCP come mezzo di trasporto, che è costruito sui pacchetti IP (sul rete fisica non protetta). IPsec è un'altra tecnologia che è più profondamente integrata nei pacchetti, che sopprime alcuni di questi livelli ed è quindi un po 'più efficiente (meno overhead della larghezza di banda). D'altra parte, IPsec deve essere gestito abbastanza in profondità all'interno del codice di rete del sistema operativo, mentre una VPN basata su SSL ha solo bisogno di un modo per dirottare il traffico in entrata e in uscita; il resto può essere disattivato nel software a livello utente.

Da quanto ho capito la tua domanda, hai un'applicazione in cui alcune macchine devono comunicare su Internet. Hai alcuni requisiti di sicurezza e stai pensando di utilizzare SSL (su TCP su IP) o possibilmente HTTPS (che è HTTP-su-SSL-su-TCP-su-IP) o di configurare una VPN tra client e server e utilizzando il "semplice" TCP in quella rete privata (il punto della VPN è che ti offre una rete sicura in cui non devi più preoccuparti della riservatezza). Con SSL, il tuo codice di connessione deve essere a conoscenza della sicurezza; dal punto di vista della programmazione non si apre una connessione SSL come se fosse "solo un socket". Alcune librerie lo rendono relativamente semplice, ma è comunque necessario gestire la sicurezza a livello di applicazione. Una VPN, d'altra parte, è configurata a livello di sistema operativo, quindi la sicurezza non è tra la tua applicazione sul client e la tua applicazione sul server, ma tra il sistema operativo del client e il sistema operativo del server: non è la stessa sicurezza anche se in molte situazioni la differenza risulta non essere rilevante.

In pratica, una VPN significa che sono necessari alcuni passaggi di configurazione sul sistema operativo client. È abbastanza invasivo. L'utilizzo di due applicazioni basate su VPN sullo stesso client può essere problematico (dal punto di vista della sicurezza, perché il client funge quindi da bridge che collega tra loro due VPN che dovrebbero essere nominalmente isolate l'una dall'altra, e anche in pratica, a causa delle collisioni nell'indirizzo spazio). Se il cliente è un cliente, fargli configurare correttamente una VPN sembra un'attività impossibile. Tuttavia , una VPN significa che le applicazioni non devono essere consapevoli della sicurezza, quindi questo rende molto più facile integrare software di terze parti all'interno della tua applicazione.

Per aggiungere a quanto sopra, dato il fatto che molte applicazioni non implementano correttamente le librerie SSL, con conseguenti seri compromessi per la sicurezza, potrebbe essere saggio considerare l'utilizzo di VPN per assicurarti di non fare affidamento su ciascuna implementazione SSL di ciascuna applicazione, piuttosto su una che è stato ben verificato (soluzioni VPN open source come OpenVPN).
Per chiarire, SSL avviene al livello 7 nel modello OSI: ogni applicazione deve avere la propria implementazione. (la maggior parte) le VPN operano a livello di rete (3), il che significa che tutto ciò che accade a livelli più alti almeno non è esposto a Big Bad Internet. Ciò non significa che siano al sicuro, questa supposizione può essere pericolosa.
A meno che non sbaglio, dal punto di vista pratico, si usa la VPN come rete ** privata **. A livello globale / pratico, SSL è per il pubblico, VPN punta a una rete privata. * Questo è certamente troppo semplicistico. Se lo è, non incolpare, ma spiega. *
@Strukt: mantieni la privacy della tua casa chiudendo la porta. Le persone, dall'esterno, vedono la superficie della porta chiusa.
@ThomasPornin sì, è la privacy * virtuale *. Uno vede la porta, ma non sa cosa c'è dietro ... SSL fa lo stesso, non è porta ma tubi se vuoi. In breve, per me ** SSL e VPN crittografano entrambi i dati sul traffico, ma SSL consente a chiunque di ottenere / pubblicare dati, mentre VPN tratta i dati solo con i client autorizzati. ** No?
@Strukt: n. SSL è la porta, VPN è il contenuto della casa. Non ne ottieni uno _o_ l'altro; non devono essere contrastati. SSL è una tecnologia che garantisce alcune proprietà di sicurezza, che sono un bel blocco di costruzione per una varietà di usi, uno dei quali è "una VPN". (Suppongo che quando leggi "SSL" pensi "sito Web con" https: // ", che è probabilmente la fonte della confusione terminologica.)
Grazie. Ecco perché mi confondo. Pensando https. A proposito, ero sicuro che la VPN crittografasse i dati. Quando uso OpenVPN, all'interno è presente un sottolivello OpenSSL. Bene, solo con OpenSSL, i dati vengono crittografati. Con VPN vengono * trafficati * solo con client noti / autenticati. VPN = SSL + autenticazione * prima * della connessione = La chiave per entrare in casa + la chiave per "decriptare" l'interno. Mentre SSL è solo una questione di crittografia. ... ancora sbagliato? // SSL è la crittografia, VPN è il networking. E la privacy virtuale è assicurata da: autenticazione SSL +.
#2
+15
David Stubley
2011-01-06 19:48:57 UTC
view on stackexchange narkive permalink

Entrambi presentano problemi di sicurezza se non sono configurati correttamente. Ma prima iniziamo con alcune definizioni:

Cisco ha una buona definizione di VPN:

La VPN può assumere diverse forme. Una VPN può essere tra due sistemi finali o tra due o più reti. Una VPN può essere costruita utilizzando tunnel o crittografia (essenzialmente a qualsiasi livello dello stack di protocollo), o entrambi, o in alternativa costruita utilizzando MPLS o uno dei metodi del "router virtuale". Una VPN può essere costituita da reti connesse alla rete di un provider di servizi tramite linee dedicate, Frame Relay o ATM, oppure una VPN può essere costituita da abbonati dialup che si connettono a servizi centralizzati o altri abbonati dialup. https://www.cisco.com/c/en_in/products/security/vpn-endpoint-security-clients/what-is-vpn.html

Per quanto riguarda SSL:

SSL (Secure Sockets Layer), noto anche come TLS (Transport Layer Security), è un protocollo che consente a due programmi di comunicare tra loro in modo sicuro. Come TCP / IP, SSL consente ai programmi di creare "socket", endpoint per la comunicazione e di effettuare connessioni tra questi socket. Ma SSL, che si basa su TCP, aggiunge la capacità aggiuntiva di crittografia. http://www.boutell.com/newfaq/definitions/ssl.html

In relazione alla tua domanda, la differenza principale è che SSL fa spesso uso del browser per crittografare i dati tra l'utente finale e il server ed è comunemente utilizzato per aree di siti Web che richiedono la protezione della riservatezza e dell'integrità dei dati.

VPN / IPSEC richiede un software client VPN specifico ed è generalmente per fornire accesso remoto a sistemi o reti. Inoltre c'è la possibilità di scegliere L2TP o L2F invece di IPSEC.

Tuttavia, le VPN SSL stanno diventando sempre più diffuse come mezzo per fornire accesso a reti / sistemi tramite il browser web. Questo approccio ha molti vantaggi in quanto utilizza il comune browser web per abilitare la connessione sicura. La granularità di questo approccio è anche un buon modo per controllare gli accessi ad applicazioni specifiche.

Per quanto riguarda i problemi di sicurezza -

SSL -

  • Deboli cyphers di sicurezza potrebbero portare alla capacità di condurre attacchi di tipo man-in-the-middle contro l'utente finale, con conseguente perdita di riservatezza / integrità dei dati.

    • Combinazione mal configurata dei contenuti HTTP / HTTPS potrebbe anche portare a una perdita di riservatezza / integrità dei dati.

IPSEC -

Btw @David non tutte le VPN SSL sono limitate ai client browser. Esistono alcuni prodotti SSL VPN (i nomi sfuggono a me) che forniscono un client, in grado di reindirizzare tutti i pacchetti TCP / IP sul tunnel SSL, non solo le richieste HTTPS rivolte al server.
@AviD - totalmente d'accordo, ad esempio OpenVPN fa quello che dici - "OpenVPN è una VPN SSL completa che implementa l'estensione di rete sicura OSI layer 2 o 3 utilizzando il protocollo SSL / TLS standard del settore". Ma poi torni a utilizzare il software installato sul client.
Sì, ma l'installazione e la distribuzione sono molto più semplici. Questo può ancora essere consegnato sul Web ...
#3
+7
AviD
2011-01-07 02:09:11 UTC
view on stackexchange narkive permalink

Qui ci sono alcune ottime risposte, non ripeterò ciò che è già stato detto.
Tuttavia, ho riscontrato che mancava un punto: SSL è molto più facile da configurare su base ad hoc, soprattutto se non non sono necessari i certificati client.
IPsec, d'altra parte, richiede sempre i certificati client (assumendo una normale configurazione tipica) e ci sono anche altre difficoltà nella configurazione e distribuzione iniziali.

In quanto tale, IPsec è solitamente più adatto per una rete controllata, e meno su Internet selvaggia e sconosciuta. Vedi qualche informazione in più a quest'altra domanda: " fatti su IPsec (Internet Protocol Security)".

Quindi, tornando alla tua domanda reale, in quasi tutti i casi in cui stai mettendo il server su Internet, non ti aspetteresti che i tuoi utenti si connettano usando una VPN. (Esistono eccezioni, ovviamente.)
Invece, imposta semplicemente i certificati SSL sul tuo server, indirizza i tuoi client verso di esso e sei a posto (assicurati solo di convalidare esplicitamente il certificato, a seconda della lingua / tecnologia / libreria che stai utilizzando ...)

#4
+5
Eugene Kogan
2011-01-25 00:27:42 UTC
view on stackexchange narkive permalink

Stai esaminando queste opzioni per creare una VPN sicura? SSL è generalmente più facile da implementare e meglio supportato per un tipo di VPN da desktop a rete, come quando un dipendente a casa si connette alla rete aziendale. Se stai eseguendo una distribuzione più complessa, come una VPN crittografata da rete a rete (ad esempio, tra due diverse organizzazioni), IPSEC fornirà un controllo migliore e più opzioni di personalizzazione.

Esiste un white paper decente sull'argomento di Juniper Networks, anche se potrebbe essere distorto dai punti di forza dei loro prodotti.

quel white paper dice che ipsec viene utilizzato per collegare due rami remoti. Un singolo utente remoto non può connettere un singolo computer al ramo remoto? Perché questo non è menzionato lì?
#5
+2
Christian
2011-01-06 19:35:35 UTC
view on stackexchange narkive permalink

Questa potrebbe essere una risposta molto lunga, ma proverò quella breve.

Quando utilizzi https, il tuo browser (agisce come un client SSL) crittografa solo questa connessione al server web.

Quando usi una VPN, hai bisogno di un client speciale e stabilisci un tunnel tra il client e il server. Quindi puoi configurare quale traffico passa attraverso il tunnel. Questo può essere tutto o solo il tuo traffico http.

Quando vuoi solo impostare un'applicazione client / server che possa comunicare con http, la soluzione più semplice dovrebbe essere il traffico https, quando deve essere crittografato . È molto più complicato configurare una VPN e mantenerla.

#6
+2
nealmcb
2011-01-06 23:12:05 UTC
view on stackexchange narkive permalink

Dipende dal tuo modello di minaccia, dalla natura del protocollo client server di cui hai bisogno e dai tuoi clienti.

È destinato a utenti finali non sofisticati? Quindi utilizza SSL: a questo punto la complessità della VPN spegnerà solo molti potenziali utenti.

Vuoi distribuire il client come un'app browser (forse con javascript)? Poi di nuovo https / ssl sembra la strada da percorrere.

Il server ha mai bisogno di notificare in modo asincrono qualcosa al client? Quindi HTTPS potrebbe non essere quello che vuoi (anche se può essere fatto per farlo).

Qual è il rischio di phishing? Se fosse facile per gli aggressori attirare la gente a loro come un MITM, SSL è probabilmente migliore poiché autentica ogni server sul client. Una VPN tipica, una volta configurata, non aiuta l'utente a evitare un utente malintenzionato che è entrato in altri host sulla VPN. Questo probabilmente non sarebbe un rischio enorme, ma ancora una volta dipende da cosa stai facendo.

Se lo stai distribuendo nel cloud (sia client che server), potresti ottenere una sorta di VPN quasi gratuitamente, il che potrebbe far fronte ad alcune minacce molto casuali.

#7
+2
Steve
2011-01-25 00:07:47 UTC
view on stackexchange narkive permalink

Bene, la differenza è un po 'come la differenza tra un cerchio e un quadrato (entrambi sono forme, ma differiscono notevolmente). Entrambi proteggono le comunicazioni, ma lo fanno a diversi livelli e in modi diversi. IPSEC è crittografia e autorizzazione cablate mentre SSL è specifico dell'applicazione.

IPSEC ha il controllo dell'accesso mentre SSL no.

Puoi essere più specifico con ciò che stai cercando di capire?

protezione dei dati a livello ip (ipsec) esiste un vantaggio rispetto alla protezione dei dati a livello di applicazione (ssl)?
#8
  0
inf3rno
2017-12-19 02:46:46 UTC
view on stackexchange narkive permalink

Sono lontano dall'essere un esperto di sicurezza, ma penso che la differenza più importante tra le due non sia nelle altre risposte.

Con la VPN la comunicazione avviene in questo modo:

  Client HTTP <- [raw] -> VPN client <- [crittografato] -> Server VPN <- [raw] -> Server HTTP  

Per HTTP va in questo modo:

  HTTP client <- [criptato] -> HTTP server  

Quindi tramite VPN i dati non protetti possono viaggiare sulla rete locale dei client e sul locale rete dei server. Se non ti fidi completamente di queste reti, allora è una saggia idea usare gli HTTP. Tieni presente che le coppie VPN e client-client, server-server HTTP non sono necessariamente su computer identici, ad es. i router possono essere configurati per essere server o client VPN.

Poiché queste tecnologie funzionano a un livello diverso, non si escludono a vicenda, quindi puoi utilizzarle entrambe se desideri un altro livello di protezione e non attenzione al calo di prestazioni che ne deriva o puoi semplicemente usare quello che si adatta meglio alle tue esigenze. Per quanto ne so entrambe le tecnologie sono considerate sicure se configurate correttamente.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 2.0 con cui è distribuito.
Loading...