it-swarm.dev

Qual è la differenza di sicurezza tra una connessione VPN e una connessione SSL?

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

65
Jonas

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

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

Quindi VPN e SSL non sono dello stesso livello. Una VPN implementazione richiede un po 'di crittografia ad un certo punto. Alcune implementazioni VPN utilizzano effettivamente SSL, risultando in un sistema a livelli: la VPN trasferisce i pacchetti IP (della rete virtuale) serializzandoli su una connessione SSL, che a sua volta utilizza TCP come mezzo di trasporto, che è costruito su pacchetti IP (sulla rete fisica non protetta). IPsec è un'altra tecnologia che è più profondamente integrata nei pacchetti, che sopprime alcuni di quei livelli ed è quindi un po 'più efficiente (meno sovraccarico di larghezza di banda). mano, 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 ridotto nel software a livello di utente.

Come capisco 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 (over TCP over IP) o eventualmente HTTPS (che è HTTP-over-SSL-over-TCP-over-IP) o impostare una VPN tra client e server e usare "plain" TCP in quella rete privata (il punto della VPN è che ti dà una rete sicura dove non devi più preoccuparti della riservatezza) Con SSL, il tuo codice di connessione deve essere consapevole 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, invece, è configurata a livello di sistema operativo, quindi la sicurezza non è tra l'applicazione sul client e l'applicazione sul server, ma tra il sistema operativo client e il sistema operativo del server : non è lo stesso modello di sicurezza, sebbene in molte situazioni la differenza non sia rilevante.

In pratica, una VPN significa che sono necessari alcuni passaggi di configurazione sul sistema operativo client. È abbastanza invasivo. L'uso di due applicazioni basate su VPN sullo stesso client può essere problematico (dal punto di vista della sicurezza, perché il client agisce quindi come un ponte che collega due VPN che dovrebbero essere nominalmente isolate l'una dall'altra, e anche in pratica, a causa di collisioni in spazio). Se il cliente è un cliente, averlo configurato correttamente una VPN sembra un'attività impossibile. Tuttavia, una VPN significa che le applicazioni non devono essere consapevoli della sicurezza, quindi ciò rende molto più semplice l'integrazione di software di terze parti all'interno dell'applicazione.

77
Thomas Pornin

Entrambi hanno problemi di sicurezza se non configurati correttamente. Ma prima cominciamo 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 usando tunnel o crittografia (essenzialmente a qualsiasi livello dello stack di protocollo), o entrambi, oppure in alternativa usando MPLS o uno dei metodi del "router virtuale". Una VPN può essere costituita da reti connesse alla rete di un fornitore di servizi tramite linee affittate, Frame Relay o ATM, oppure una VPN può essere costituita da abbonati dialup che si collegano 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 stabilire connessioni tra tali 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 spesso utilizza il browser per crittografare i dati tra l'utente finale e il server e viene 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 browser Web comune 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 -

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

    • Un mix mal configurato di contenuto HTTP/HTTPS potrebbe anche comportare una perdita di riservatezza/integrità dei dati.

IPSEC -

15
David Stubley

Alcune risposte molto buone qui, non ripeterò ciò che è già stato detto.
Tuttavia, un punto che ho trovato carente: SSL è molto più facile da configurare su una base ad-hoc, soprattutto se non hai un requisito per i certificati client.
IPsec, d'altra parte, richiede sempre certificati client (presupponendo una configurazione normale e tipica) e ci sono anche altre difficoltà nella configurazione e distribuzione iniziale.

Di conseguenza, IPsec è in genere più adatto a una rete controllata e meno su Internet selvaggio e selvaggio. Per ulteriori informazioni su questa altra domanda: " IPsec (Internet Protocol Security) fact ".

Quindi, tornando alla tua vera domanda, 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, configura semplicemente certificati SSL sul tuo server, indirizza i tuoi clienti su di esso e sei a posto (assicurati di convalidare esplicitamente il certificato, a seconda della lingua/tecnologia/libreria che ' riutilizzando ...)

7
AviD

Stai guardando 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, ad esempio 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.

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

5
Eugene Kogan

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 livelli diversi e in modi diversi. IPSEC è la crittografia e l'autorizzazione del cavo mentre SSL è specifico dell'applicazione.

IPSEC ha il controllo degli accessi mentre SSL no.

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

2
Steve

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

Quando usi https, il tuo browser (funge da client SSL) crittograferà solo questa connessione al server web.

Quando si utilizza la VPN, è necessario un client speciale e stabilire un tunnel tra il client e il server. Quindi è possibile configurare il traffico che attraversa il tunnel. Questo può essere tutto o solo il tuo traffico http.

Quando si desidera solo configurare un'applicazione client/server in grado di comunicare con http, la soluzione più semplice dovrebbe essere il traffico https, quando deve essere crittografato. È molto più complicato configurare una VPN e mantenerla.

2
Christian

Ciò dipende dal modello di minaccia, dalla natura del protocollo del server client necessario e dai clienti.

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

Vuoi distribuire il client come app browser (perahps con javascript)? Quindi di nuovo https/ssl sembra la strada da percorrere.

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

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

Se lo stai distribuendo nel cloud (sia client che server), potresti ottenere una sorta di VPN quasi gratis che potrebbe affrontare alcune minacce molto occasionali.

2
nealmcb

Sono tutt'altro che un esperto di sicurezza, ma penso che la differenza più importante tra i due non risieda nelle altre risposte.

Tramite VPN la comunicazione procede in questo modo:

HTTP client <-[raw]-> VPN client
  <-[encrypted]-> 
VPN server <-[raw]-> HTTP server

Con HTTPs va così:

HTTP client
  <-[encrypted]-> 
HTTP server

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

Dal momento che queste tecnologie funzionano a un livello diverso, non si escludono a vicenda, quindi puoi usarle entrambe se desideri un altro livello di protezione e non ti dispiace il calo delle prestazioni che ne deriva o puoi semplicemente usare quello, che meglio si adatta alle tue esigenze. Per quanto ne so, entrambe le tecnologie sono considerate sicure se configurate correttamente.

0
inf3rno