it-swarm.dev

Cosa è meglio per la comunicazione da server a server: IPSec o TLS?

Forse potresti aiutarmi con un piccolo problema.

Consiglieresti IPSec o TLS per una connessione da server a server? Ho bisogno di due o tre argomenti per motivare una decisione nel mio ultimo documento, ma purtroppo non ho trovato un criterio per un'esclusione. Il riflesso di IPSec e TLS all'interno della mia tesi è solo un aspetto secondario, quindi uno o due motivi principali per selezionare TLS o IPSec sarebbero sufficienti. Pensi che la possibile compressione all'interno di IPSec potrebbe essere uno di questi motivi principali?

Spiegazione più completa dello scenario:

Un utente desidera accedere a un portale per usufruire di un servizio. Il backend del portale è costituito dal portale stesso, un'autorità di registrazione, la gestione degli utenti, l'autorità di controllo degli accessi, ecc. Devo scegliere TLS o IPSec per proteggere quelle connessioni di backend? Il servizio fornito non deve essere posizionato all'interno del back-end, ma è affidabile ed è collegato solo al portale. Ecco un elenco con le connessioni che voglio proteggere:

servizio (può essere esterno) ---- portale

autorità di registrazione ---- gestione utenti

portale ---- gestione utenti

per una connessione utente-server ho già preso la mia decisione, ma i motivi che ho usato per questa decisione, non funzionano per una connessione da server a server.

Grazie mille in anticipo!

n'immagine dello scenario:

(rosso = connessione problematica)

enter image description here

(in effetti il ​​modello è di gran lunga più ampio, dal momento che tratto anche altri meccanismi come autenticazione, meccanismi di archiviazione, accesso allo storage, controllo degli accessi, architettura del software, comprese le possibili tecnologie e così via. Pertanto, proteggere le connessioni è solo un aspetto parziale )

17
Saturas

Esistono due modalità di utilizzo principali per IPsec : [~ # ~] ah [~ # ~] e [~ ~ #] esp [~ ~ #] . [~ # ~] ah [~ # ~] serve solo per l'autenticazione, quindi suppongo che tu stia parlando di un tunnel ESP tra il due server. Tutti i pacchetti IP vengono crittografati e autenticati, inclusi alcuni dettagli dell'intestazione come le porte di origine e di destinazione. Esistono diversi algoritmi di crittografia e MAC che possono essere utilizzati con IPsec; AES (modalità CBC, chiave a 128 bit) e HMAC/SHA-1 (troncato a 96 bit) va bene, e sono DEVE implementare , quindi qualsiasi implementazione IPsec conforme dovrebbe supportarli.

Per questa parte "tunneling", IPsec fa le cose correttamente, così come TLS (supponendo TLS 1.1 o 1.2, per la selezione IV con cifrature a blocchi in modalità CBC). In effetti IPsec può essere considerato "più corretto" di TLS perché utilizza encrypt-then-MAC anziché MAC-then-encrypt (vedi this ); tuttavia, anche TLS 1.1 o 1.2 correttamente implementati andrà bene. Differenze pratiche si verificheranno ad altri livelli:

  • Per crittografare e decrittografare i dati, i due server devono prima concordare un segreto condiviso. Questo è ciò che riguarda l'handshake in TLS; l'equivalente in IPsec sarebbe IKE . Potresti voler fare affidamento su certificati X.509 ; o forse su una "chiave condivisa" configurata manualmente in entrambi i server. Sia TLS che IPsec supportano entrambi, ma qualsiasi implementazione specifica può rendere un'opzione più semplice o più complessa dell'altra.

  • IPsec agisce a livello di sistema operativo; il software applicativo non deve essere consapevole della presenza di IPsec. Questo è fantastico in alcuni casi, non così grande in altri. Da un lato, consente ad alcune applicazioni legacy di essere "protette" con IPsec anche se ciò non è stato previsto durante lo sviluppo dell'applicazione; e la gestione della sicurezza può essere eseguita senza essere vincolata da ciò che gli sviluppatori dell'applicazione hanno pensato (ad esempio, se si utilizzano certificati X.509, è possibile applicare controlli di revoca, mentre un'applicazione basata su TLS potrebbe utilizzare una libreria che non supporta CRL) . D'altra parte, con IPsec, le applicazioni non possono fare nulla di specifico all'applicazione in termini di sicurezza: un server non può, ad esempio, variare la sua gestione della sicurezza a seconda dell'altro server con cui sta parlando.

  • Sebbene TLS sia normalmente utilizzato in modo applicativo, è anche possibile usarlo come blocco predefinito per un livello di sistema operativo VPN tra i due server. Questo in pratica significa usare TLS come se fosse IPsec.

  • Essendo IPsec a livello di sistema operativo, il suo funzionamento implica una manipolazione della configurazione di rete a livello di sistema operativo, mentre TLS può essere generalmente mantenuto a livello di applicazione. Nelle grandi organizzazioni, le persone della rete e le persone delle applicazioni tendono a vivere in mondi separati (e, purtroppo, sono spesso in guerra tra loro). Mantenere tutto a livello di applicazione può facilitare la distribuzione e la gestione, per motivi organizzativi.

Riepilogo: dipende. Utilizzare IPsec se si desidera applicarlo su applicazioni non collaborative (ad esempio un'applicazione che non supporta nativamente alcun tipo di protezione per le sue connessioni ad altri server). Utilizzare TLS se si desidera astrarre la configurazione a livello di sistema operativo. Se desideri ancora utilizzare TLS e farlo a livello di sistema operativo, utilizza una VPN basata su TLS.

24
Tom Leek

Quale implementazione di TLS avevi in ​​mente? Stunnel? IPsec e Stunnel offrono una sicurezza comparabile, ma Stunnel è molto più facile da configurare. IPsec ha una curva di apprendimento più ripida ma offre più funzionalità, tra cui il Santo Graal della rete etichettata quando usata con SELinux su entrambi i lati.

0
Matrix