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

13

Forse potresti aiutarmi con un piccolo problema.

Consiglieresti IPSec o TLS per una connessione Server-to-Server? Ho bisogno di due o tre argomenti per ragionare su una decisione nel mio documento finale, 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 possa essere una di queste ragioni principali?

Spiegazione più completa dello scenario:

Un utente desidera accedere a un portale per usufruire di un servizio. Il back-end 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 back-end? Il servizio fornito non deve essere posizionato all'interno del back-end, ma è affidabile ed è connesso solo al portale. Ecco una lista con le connessioni che voglio proteggere:

servizio (potrebbe essere esterno) ---- portale

autorità di registrazione ---- gestione utenti

portal ---- gestione degli utenti

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

Grazie mille in anticipo!

Un'immagine dello scenario:

(rosso = connessione problematica)

(infatti il modello è di gran lunga più grande, dal momento che tratto anche altri meccanismi come l'autenticazione, i meccanismi di archiviazione, l'accesso allo storage, il controllo degli accessi, l'architettura software, incluse le possibili tecnologie e così via. un aspetto parziale)

    
posta Saturas 26.09.2013 - 14:18
fonte

2 risposte

19

Esistono due modalità di utilizzo principali per IPsec : AH e ESP . AH è solo per l'autenticazione, quindi suppongo che tu stia parlando di un tunnel ESP tra i 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) vanno bene e sono DEVE-implementare , quindi qualsiasi implementazione IPsec conforme dovrebbe supportarli.

Per questa parte di "tunneling", IPsec fa le cose correttamente, e così fa TLS (assumendo TLS 1.1 o 1.2, per la selezione IV con cifrari a blocchi in modalità CBC). Infatti IPsec può essere considerato "più corretto" rispetto a TLS perché utilizza encrypt-then-MAC anziché MAC-then-encrypt (vedi questo ); tuttavia, correttamente implementato TLS 1.1 o 1.2 andrà bene. Le differenze pratiche si verificano ad altri livelli:

  • Per crittografare e decrittografare i dati, i due server devono prima concordare un segreto condiviso. Questo è ciò di cui parla la stretta di mano 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 di entrambi può rendere una 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 negli altri. Da un lato, consente ad alcune applicazioni legacy di essere "protette" con IPsec anche se questo non era previsto durante lo sviluppo dell'applicazione; e la gestione della sicurezza può essere eseguita senza essere vincolata da ciò che pensavano gli sviluppatori dell'applicazione (ad esempio, se si utilizzano certificati X.509, è possibile applicare controlli di revoca, mentre un'applicazione con TLS potrebbe utilizzare una libreria che non supporta CRL) . D'altra parte, con IPsec, le applicazioni non possono fare nulla di specifico per l'applicazione con la sicurezza: un server non può, ad esempio, variare la sua gestione della sicurezza a seconda di quale altro server sta parlando con esso.

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

  • IPsec essendo a livello di sistema operativo, la sua operazione implica il giochino con la configurazione di rete a livello di sistema operativo, mentre TLS di solito può essere conservato a livello di applicazione. Nelle grandi organizzazioni, le persone della rete e le persone che fanno domanda tendono a vivere in mondi separati (e, purtroppo, sono spesso in guerra tra di loro). Mantenere tutto a livello di applicazione può semplificare 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 in modo nativo 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 si desidera ancora utilizzare TLS e tuttavia farlo a livello di sistema operativo, utilizzare una VPN con TLS.

    
risposta data 26.09.2013 - 15:21
fonte
1

Quale implementazione di TLS hai in mente? Stunnel? IPsec e Stunnel forniscono una sicurezza paragonabile, ma Stunnel è molto più facile da configurare. IPsec ha una curva di apprendimento più ripida ma offre più funzionalità, incluso il Santo Graal delle reti etichettate quando viene utilizzato con SELinux su entrambi i lati.

    
risposta data 26.09.2013 - 14:47
fonte

Leggi altre domande sui tag