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)?