Protezione di più connessioni con protocolli diversi tutti insieme

1

Ho bisogno di proteggere la comunicazione tra un'applicazione (viene eseguita su qualsiasi PC ed è stata progettata per Windows) e un dispositivo esterno (eseguito su UNIX). L'applicazione è in esecuzione su Windows mentre il dispositivo è basato su Unix. Posso influenzare direttamente l'applicazione, ma non posso influenzare il dispositivo (devo comunicare con il ragazzo che sta sviluppando il firmware per i dispositivi). Entrambe le parti devono essere sulla stessa LAN per comunicare tra loro, ma il traffico tra quelle deve essere protetto. Esistono diverse connessioni TCP non elaborate e FTP. La comunicazione è bidirezionale. C'è anche una trasmissione UDP diretta, ma questo succede solo a volte e i dati inviati non sono così sensibili, quindi non c'è ancora bisogno di protezione. Un dispositivo può essere connesso a più host che eseguono l'applicazione e l'applicazione può essere connessa a più dispositivi. Devo anche assicurarmi che nessuno riceva accesso non autorizzato ai dispositivi o manipoli i pacchetti di dati tra l'applicazione e i dispositivi. Ciò significa che ho bisogno di controlli di autorizzazione e integrità. Il mio obiettivo è semplicemente rendere sicure le comunicazioni TCP e FTP all'interno della LAN. Potrebbe anche essere possibile che gli utenti abbiano bisogno di un accesso remoto ai dispositivi dall'esterno della LAN, ma questa è una storia diversa. Per ora voglio solo proteggere il traffico che sta accadendo all'interno della LAN.

Fin qui tutto bene. Ho fatto qualche ricerca su quali opzioni di sicurezza sono disponibili. Il mio problema sembra essere piuttosto semplice, ma sembra che ci siano molte soluzioni diverse là fuori. Due di loro sembrano adattarsi perfettamente al mio problema.

TLS / SSL SSH

Per quanto ne so, SSH opera sul livello dell'applicazione mentre TLS / SSL è implementato sopra il livello TCP. Questo significa che in pratica ho bisogno di un'applicazione esterna che configuri un tunnel SSH protetto per la comunicazione dei dati? Ho bisogno di più tunnel per ogni connessione che sto usando (raw TCP, FTP)? Se si utilizza SSH, sostituirò sicuramente FTP con SFTP. Questo riduce il numero di porte aperte per quanto ne so poiché SFTP utilizza solo una porta per il controllo e il trasferimento dei dati. Tuttavia, ho sentito che con SFTP non è possibile limitare la larghezza di banda del server. Dobbiamo ridurre la velocità con cui il server FTP invia i file perché il dispositivo ha risorse limitate e il traffico potrebbe bloccare altri dati. Questo è possibile con FTP

D'altra parte, c'è TLS / SSL. Non ho bisogno di programmi di terze parti qui, ma ho bisogno di prendermi cura di TLS / SSL nell'applicazione che sto usando. Ciò significa che l'applicazione deve essere a conoscenza della crittografia, per quanto ne so. Permette la crittografia, l'autenticazione e può garantire l'integrità dei dati per la comunicazione. Questo è bello, ma è possibile qui scavare tutto attraverso una connessione? (di nuovo, ho diverse connessioni TCP e trasferimento FTP). Potrei sostituire l'FTP con FTPS, ma ho sentito che FTPS (e FTP in generale) sembra avere problemi con NAT o firewall. In futuro, potrebbe essere possibile che qualcuno debba avere accesso ai server FTP sui dispositivi. Tuttavia, come ho detto prima, se ciò dovesse accadere, avremo comunque bisogno di un server di accesso centrale, in modo che non ci siano problemi.

Ok, mi dispiace per tutto il testo con cui ti sto dando fastidio. Sono solo sicuro di quale soluzione si adatta meglio al mio problema. I miei obiettivi sono semplicemente quelli di proteggere il traffico dati e minimizzare le porte che devono essere aperte sui dispositivi o sull'host che esegue l'applicazione.

Che cosa puoi suggerire? SSH o TLS / SSL? O forse qualcosa di completamente diverso (come VPN)?

    
posta WMEZ 13.11.2013 - 11:29
fonte

2 risposte

1

Con SSL / TLS, probabilmente avrai bisogno di aprire diverse porte (una per servizio), e infatti FTPS (FTP su SSL / TLS) potrebbe effettivamente causare qualche problema quando si ha a che fare con la connessione dati (la porta da aprire per stabilire la connessione, l'indirizzo del dispositivo NAT da prendere in considerazione, ecc.).

SSH potrebbe sembrare più adatto poiché consente di aprire solo una porta:

  • SSH offre supporto nativo per i protocolli SFTP e SCP per i trasferimenti di file (anche se non sono a conoscenza delle impostazioni QoS a questo livello, generalmente gestite dall'host o da dispositivi esterni), il tutto all'interno di una singola connessione TCP (al contrario di le due connessioni TCP richieste da FTP),
  • Per il TCP non elaborato, è possibile dare un'occhiata alle opzioni di configurazione dei sottosistemi SSH, principalmente utilizzate per rendere 'sshd' utilizzare un programma esterno per gestire le richieste SFTP, può consentire di definire i propri sottosistemi supplementari corrispondenti alle tue esigenze,
  • E finalmente SSH offre servizi di tunneling per proteggere qualsiasi tipo di connessione TCP.
risposta data 13.11.2013 - 11:57
fonte
1

Mi piace il fatto che tu stia cercando di utilizzare i protocolli esistenti piuttosto che provare a inventare qualcosa, troppo spesso le persone che postano sono troppo ansiose di reinventare la ruota. Nessuna delle soluzioni che hai scelto è difficile da implementare e utilizzare a livello di programmazione, Windows e unix / linux hanno un sacco di supporto per entrambi e c'è una quantità enorme di codice di esempio da utilizzare. Dato che sei su una LAN, suppongo che non ci siano limiti di larghezza di banda o di latenza, quindi se utilizzi SSL / TLS o SFTP dipende interamente da come funzionano le tue applicazioni:

  • Se si trasferiscono file o gruppi di file da un sistema a un altro scp / sftp è una buona scelta. È semplice, robusto e veloce
  • SSH se usato spesso per le connessioni di controllo, specialmente se il sistema che si sta controllando è un sistema unix / linux, è facile scrivere comandi da eseguire sul sistema remoto
  • TLS è il protocollo di scelta se si desidera utilizzare le API per il controllo e la messaggistica tra i sistemi. Puoi anche usarlo per i trasferimenti di dati. Potrebbe richiedere più porte ma tu sei su una LAN, quindi non è un problema

Quindi puoi usare uno di questi o una loro combinazione a seconda di cosa dovrebbero fare le tue applicazioni. Per quanto riguarda la sicurezza di questi protocolli, ricorda queste cose:

  1. La gestione delle chiavi e dei certificati è di primaria importanza per la sicurezza di questi protocolli
  2. Prova e utilizza i pacchetti nativi già esistenti nelle distribuzioni del sistema operativo per la crittografia e la gestione dei certificati / delle chiavi, semplificherà notevolmente il tuo percorso di aggiornamento
risposta data 13.11.2013 - 13:27
fonte

Leggi altre domande sui tag