2010-04-15 7 views

risposta

5

Basta con i socket non ti dà alcuna sicurezza a tutti. La scelta giusta dipende dall'applicazione, dai sistemi che stai utilizzando e da quanto gli utenti capiscono su cosa devono fare per usarlo. Ad esempio, se stai interagendo con un server Web in modo sicuro, probabilmente utilizzerai TLS/SSL per questo. Se stai trasferendo dati tra due sistemi, usare ssh potrebbe essere il modo più comodo.

Quando si dice "sicurezza", si cercano dati crittografati sulla rete? Autenticazione delle parti comunicanti? Entrambi?

Un'altra alternativa sta utilizzando TLS/SSL, probabilmente con il toolkit OpenSSL (e ci sono i moduli Perl con collegamenti per esso.) La programmazione è più complicata rispetto a ssh, e dovrete fare più lavoro sull'autenticazione per così, torna a qualsiasi cosa tu stia cercando di fare.

Inoltre, FTP non è sicuro neanche.

+0

Voglio dire dati crittografati sulla rete. – Space

+2

@Octopus Non esiste alcuna crittografia dei dati che utilizzi direttamente i socket tcp/udp (a meno che gli host non utilizzino anche, ad esempio, IPSec oi dati siano sincronizzati su un canale crittografato). – nos

2

Tutte le programmazioni di rete utilizzano prese sotto il cofano. Quindi è piuttosto una questione di protocolli che usi.

In generale, se si vuole essere sicuri si dovrebbe tunnel vostra comunicazione tramite SSL (https, SFTP, FTPS)

1

SSH/SFTP/SCP utilizza tutte le prese sotto programmazione socket. A meno che non si disponga di un algoritmo migliore (per sicurezza) di quello fornito da SSH, utilizzare un modulo SSH per Perl.

1

Le prese non sono sicure. I dati vengono trasmessi in forma grezza dal punto A al punto B.

L'aggiunta di SSL aggiunge sicurezza. Molti protocolli supportano SSL. In particolare diverse versioni di FTP e HTTP supportano SSL.

FTPS è ampiamente supportato su molte piattaforme e da molti clienti. Anche se si scrive un client personalizzato, avere altri client come FileZilla a portata di mano per il test è bello.

Se dovessi ricominciare da zero su un sistema del genere, userei FTPS.

1

SSH è un protocollo shell remoto e non è utilizzato per il trasferimento di file (come FTP). Il protocollo di trasferimento file SCP faceva parte di SSH1 ma siccome SSH1 è obsoleto e difettoso, SCP non è raccomandato per l'uso. In SSH2 (utilizzato in tutti i sistemi moderni) viene utilizzato SFTP (SSH File Transfer Protocol).

FTP (RFC 959) di per sé non fornisce alcuna sicurezza. Esistono estensioni che consentono di eseguire FTP su SSL/TLS (implicitamente, tramite canale precriptato o esplicitamente, tramite TLS come parte del protocollo FTP). FTP su SSL è chiamato FTPS (non confonderlo con SFTP).

È possibile leggere detailed descriptions of pros and cons of FTPS and SFTP here.

+1

Non so le tue implementazioni, ma il mio scp supporta la versione 2 del protocollo e onora la versione del protocollo predefinita come selezionata dal server e/o .ssh_config. Il mio sftp supporta anche la versione 1 del protocollo. Nessuna delle due è legata a una versione specifica del protocollo ssh. –

+0

Ciò significa che le applicazioni non utilizzano SCP o SFTP come parte del protocollo SSH, ma utilizzano il sottosistema personalizzato SSH come trasporto trasparente per i propri dati. Mentre questo può funzionare in alcuni casi specifici (ad esempio su alcuni sistemi Unix), ma questo NON è complicato per gli standard e non funzionerà in altri ambienti. In altre parole, questo è un caso specifico che osservi, non una regola. –

0

vorrei prendere in considerazione tre opzioni principali:

  • FTPS (FTP su SSL/TLS) - è equivalente di HTTPS che in parole povere significa che è criptato versione del protocollo FTP ordinaria. Penso che sia ottimo per il download su Internet da macchine remote e possibilmente pubbliche. Offre un meccanismo di autenticazione superiore sotto forma di certificati X.509. C'è qualche problema con i firewall perché usa, come FTP, due connessioni. Se il tuo obiettivo è impedire a chiunque di vedere ciò che stai scaricando, questa è la soluzione perfetta di IMHO. Tendo ad usare questo protocollo per accedere a macchine che non controllo.

  • SFTP (SSH FTP) - è un buon protocollo, forse un po 'superiore a FTPS, ma a mio parere è più adatto per l'ambiente controllato. Userò questo protocollo quando voglio scaricare un file dal mio account su un computer a un altro. O quando voglio caricare un nuovo script su un server. È per me equivalente remoto di me che vado alla macchina con l'unità flash e accedo alla macchina.

  • VPN: se queste macchine sono fissate per così dire, si sta sempre connettendo alle stesse macchine: prenderei in considerazione l'utilizzo di VPN per fornire la sicurezza. Le trasmissioni sono protette dagli estranei, il server si comporta come se fosse nella stessa rete e posso usare qualsiasi protocollo che voglio.

Problemi correlati