2010-04-15 6 views
5

Ich lerne immer noch Socket-Programmierung (mit Perl), aber ich habe beide Optionen (Socket-Programmierung und SSH/SCP/FTP) verfügbar, um die Daten zu übertragen von Remote-Rechnern zu meinen lokalen Servern.Was ist sicherer - Datenübertragung mit Socket-Programmierung ODER SSH/SCP/FTP

Aber ich muss eine, die mehr Sicherheit (verschlüsselte Daten im Netzwerk) in Bezug auf die Datenübertragung auswählen. Irgendwelche Vorschläge.

Antwort

5

Gerade Sockets nicht geben Ihnen keine Sicherheit alle an. Die richtige Wahl hängt von der Anwendung, den von Ihnen verwendeten Systemen und davon ab, wie viel die Benutzer darüber wissen, was sie tun müssen, um sie zu verwenden. Wenn Sie beispielsweise mit einem Webserver auf sichere Weise interagieren, verwenden Sie wahrscheinlich TLS/SSL. Wenn Sie nur Daten zwischen zwei Systemen übertragen, ist die Verwendung von ssh möglicherweise der bequemste Weg.

Wenn Sie "Sicherheit" sagen, suchen Sie nach verschlüsselten Daten im Netzwerk? Authentifizierung der kommunizierenden Parteien? Beide?

Eine andere Alternative ist TLS/SSL, wahrscheinlich mit dem OpenSSL-Toolkit (und es gibt Perl-Module mit Bindings dafür.) Die Programmierung ist komplizierter als mit ssh, und Sie müssen mehr Arbeit an der Authentifizierung für es, so kommt es zurück zu was auch immer es ist, was du versuchst zu tun.

Auch FTP ist selbst nicht sicher.

+0

Ich meine verschlüsselte Daten im Netzwerk. – Space

+2

@Octopus Es gibt keine direkte Verschlüsselung von Daten mit tcp/udp-Sockets (es sei denn, Ihre Hosts verwenden beispielsweise IPSec oder die Daten werden über einen verschlüsselten Kanal getunnelt). – nos

2

Alle Netzwerkprogrammierung verwendet Sockets unter der Haube. Es geht also eher um Protokolle, die Sie verwenden.

Allgemeinen, wenn Sie sichern wollen, sollten Sie Tunnel Ihre Kommunikation mit SSL (https, SFTP, FTPS)

1

SSH/SFTP/SCP alle verwendet Sockets unter Socket-Programmierung. Sofern Sie nicht einen besseren Algorithmus (für die Sicherheit) als SSH verwenden, verwenden Sie ein SSH-Modul für Perl.

1

Out of the Box-Buchsen sind nicht sicher. Die Daten werden in Rohform von Punkt A nach Punkt B übertragen.

Durch Hinzufügen von SSL wird die Sicherheit erhöht. Viele Protokolle unterstützen SSL. Insbesondere mehrere Varianten von FTP und HTTP unterstützen SSL.

FTPS wird auf vielen Plattformen und von vielen Kunden häufig unterstützt. Selbst wenn Sie einen benutzerdefinierten Client schreiben, ist es schön, andere Clients wie FileZilla zum Testen zur Hand zu haben.

Wenn ich auf einem solchen System von vorne anfangen würde, würde ich FTPS verwenden.

1

SSH ist ein Remote-Shell-Protokoll und selbst wird es nicht für die Dateiübertragung (wie FTP) verwendet. Das SCP-Dateiübertragungsprotokoll war Teil von SSH1, aber da SSH1 veraltet und fehlerhaft ist, wird SCP nicht zur Verwendung empfohlen. In SSH2 (in allen modernen Systemen verwendet) wird SFTP (SSH File Transfer Protocol) verwendet.

FTP (RFC 959) selbst bietet keine Sicherheit. Es gibt Erweiterungen, mit denen Sie FTP über SSL/TLS ausführen können (entweder implizit über einen vorverschlüsselten Kanal oder explizit über TLS als Teil des FTP-Protokolls). FTP über SSL heißt FTPS (nicht mit SFTP mischen).

Sie können detailed descriptions of pros and cons of FTPS and SFTP here lesen.

+1

Ich weiß nicht, über Ihre Implementierungen, aber meine scp unterstützt Protokollversion 2 und ehrt die Standardprotokollversion wie vom Server und/oder .ssh_config ausgewählt. Mein SFTP unterstützt auch Protokollversion 1. Weder ist an eine bestimmte SSH-Protokollversion gebunden. –

+0

Das bedeutet, dass Ihre Anwendungen SCP oder SFTP nicht als Teil des SSH-Protokolls verwenden, sondern das benutzerdefinierte SSH-Subsystem als transparenten Transport für ihre Daten verwenden. Dies kann zwar in bestimmten spezifischen Fällen (d. H. Auf einigen Unix-Systemen) funktionieren, dies ist jedoch für Standards nicht kompliziert und wird in anderen Umgebungen nicht funktionieren. Mit anderen Worten, dies ist ein spezieller Fall, den Sie beobachten, keine Regel. –

0

ich drei Optionen in Betracht ziehen würden:

  • FTPS (FTP über SSL/TLS) - es ist Äquivalent von HTTPS, die in einfachen Worten bedeutet dies, Version des gewöhnlichen FTP-Protokoll verschlüsselt ist. Ich denke, es ist großartig für den Download über das Internet von entfernten und möglicherweise öffentlichen Maschinen. Es bietet überlegene Authentifizierungsmechanismen in Form von X.509-Zertifikaten. Es gibt einige Probleme mit Firewalls, da es, wie FTP, zwei Verbindungen verwendet. Wenn Ihr Ziel ist zu verhindern, dass jemand sieht, was Sie herunterladen, ist dies meine perfekte Lösung. Ich nutze dieses Protokoll, um auf Maschinen zuzugreifen, die ich nicht kontrolliere.

  • SFTP (SSH FTP) - es ist ein gutes Protokoll, vielleicht etwas besser als das FTPS, aber meiner Meinung nach ist es besser für eine kontrollierte Umgebung geeignet. Ich werde dieses Protokoll verwenden, wenn ich eine Datei von meinem Konto auf einem anderen Computer herunterladen möchte. Oder wenn ich ein neues Skript auf einen Server hochladen möchte. Es ist für mich ein entferntes Äquivalent, dass ich mit dem Flash-Laufwerk zur Maschine gehe und mich anmelde.

  • VPN - wenn diese Maschinen sozusagen repariert sind - Sie verbinden sich immer mit den gleichen Maschinen - würde ich die Verwendung von VPN in Betracht ziehen, um die Sicherheit zu liefern. Die Übertragungen sind vor Außenseitern geschützt, der Server verhält sich wie im selben Netzwerk und ich kann jedes beliebige Protokoll verwenden.