SFTP- und FTPS-Protokolle

Vorwort

Vor einer Woche habe ich einen Bericht zu dem im Titel genannten Thema geschrieben und festgestellt, dass es, sagen wir mal, nicht besonders viele aufschlussreiche Informationen im Netz gibt. Hauptsächlich gibt es trockene Fakten und Anleitungen zur Einrichtung. Daher habe ich beschlossen, den Text etwas zu überarbeiten und als Artikel zu veröffentlichen.

Was ist FTP

FTP (File Transfer Protocol) ist ein Protokoll zur Übertragung von Dateien über Netzwerke. Es gehört zu den grundlegenden Ethernet-Protokollen. Es wurde 1971 eingeführt und arbeitete ursprünglich in DARPA-Netzwerken. Heutzutage basiert die Dateiübertragung, ähnlich wie bei HTTP, auf einem Modell, das aus einer Sammlung von TCP/IP-Protokollen (Transmission Control Protocol/Internet Protocol) besteht. Es ist in RFC 959 definiert.

Das Protokoll legt Folgendes fest:

  • Wie der Fehlerüberprüfungsprozess durchgeführt wird
  • Die Methode zur Datenverpackung (sofern Verpackung verwendet wird)
  • Wie das sendende Gerät anzeigt, dass es das Nachrichtensignal beendet hat
  • Wie das empfangende Gerät anzeigt, dass es die Nachricht erhalten hat

Die Interaktion zwischen Client und Server

Lassen Sie uns die Prozesse, die bei der Nutzung von FTP entstehen, genauer betrachten. Die Verbindung wird vom Protokoll-Interpreter des Benutzers initiiert. Die Steuerung des Austauschs erfolgt über den Steuerkanal im TELNET-Standard. FTP-Befehle werden vom Protokoll-Interpreter des Benutzers generiert und an den Server übertragen. Die Antworten des Servers werden ebenfalls über den Steuerkanal an den Benutzer gesendet. Generell hat der Benutzer die Möglichkeit, Kontakt mit dem Protokoll-Interpreter des Servers und unterschiedlichen Mitteln als dem des Benutzers herzustellen.

Das Hauptmerkmal von FTP ist die Verwendung einer Doppelverbindung. Eine Verbindung wird für die Kommunikation mit dem Server verwendet und erfolgt standardmäßig über den TCP-Port 21, der jedoch geändert werden kann. Die Steuerverbindung bleibt bestehen, solange der Client mit dem Server kommuniziert. Der Steuerkanal muss während der Datenübertragung zwischen den Maschinen geöffnet sein. Bei Schließung stoppt die Datenübertragung. Über die zweite Verbindung erfolgt die direkte Datenübertragung. Diese wird jedes Mal geöffnet, wenn eine Datei zwischen Client und Server übertragen wird. Wenn mehrere Dateien gleichzeitig übertragen werden, wird für jede Datei ein eigener Übertragungskanal eröffnet.

FTP kann im aktiven oder passiven Modus betrieben werden, was den Verbindungsaufbau beeinflusst. Im aktiven Modus stellt der Client eine Steuer-TCP-Verbindung zum Server her und überträgt seine IP-Adresse sowie eine zufällige Client-Portnummer an den Server und wartet darauf, dass der Server eine TCP-Verbindung zu dieser Adresse und Portnummer herstellt. Wenn der Client hinter einer Firewall sitzt und inkompatible TCP-Verbindungen nicht annehmen kann, kann der passive Modus verwendet werden. In diesem Modus nutzt der Client den Steuerkanal, um den Server mit dem Befehl PASV zu kontaktieren und erhält dann die IP-Adresse sowie die Portnummer des Servers, die der Client dann verwendet, um einen Datenkanal von seinem zufälligen Port zu öffnen.

Es kann Situationen geben, in denen Daten an einen dritten Rechner übertragen werden. In diesem Fall richtet der Benutzer einen Steuerkanal zwischen zwei Servern ein und organisiert einen direkten Datenkanal zwischen ihnen. Die Steuerbefehle laufen über den Benutzer, während die Daten direkt zwischen den Servern übertragen werden.

Bei der Datenübertragung über das Netzwerk können vier Datenrepräsentationen verwendet werden:

  • ASCII – wird für Text verwendet. Daten werden, falls erforderlich, vor der Übertragung vom symbolischen Format des sendenden Hosts in den "8-Bit-ASCII" konvertiert und (wenn nötig) in das symbolische Format des empfangenden Hosts zurückgewandelt. Insbesondere werden Zeilenumbruchszeichen geändert. Daher ist dieser Modus nicht geeignet für Dateien, die nicht nur einfachen Text enthalten.
  • Binärmodus – das sendende Gerät überträgt jede Datei byteweise, und der Empfänger speichert den Byte-Stream beim Empfang. Die Unterstützung dieses Modus wird für alle FTP-Implementierungen empfohlen.
  • EBCDIC – wird verwendet, um einfachen Text zwischen Hosts im EBCDIC-Zeichensatz zu übertragen. Ansonsten ist dieser Modus dem ASCII-Modus ähnlich.
  • Lokaler Modus – ermöglicht es zwei Computern mit identischen Einstellungen, Daten in ihrem eigenen Format ohne Umwandlung in ASCII zu senden.

Die Datenübertragung kann in einem der drei Modi erfolgen:

  • Der Streaming-Modus ermöglicht den Versand von Daten als kontinuierlichen Datenstrom, wodurch FTP von jeglicher Verarbeitung befreit wird. Stattdessen erfolgt die gesamte Verarbeitung über TCP. Ein End-of-File-Indikator ist nicht erforderlich, es sei denn, die Daten müssen in Datensätze unterteilt werden.
  • Der Blockmodus zerlegt die Daten in mehrere Blöcke (Headerblock, Anzahl der Bytes, Datenfeld) und überträgt diese dann über TCP.
  • Der Komprimierungsmodus reduziert die Daten mit einem einheitlichen Algorithmus (gewöhnlich durch Laufzeitcodierung).

Ein FTP-Server ist ein Server, der die Nutzung des File Transfer Protocol (FTP) ermöglicht. Er weist bestimmte Merkmale auf, die ihn von herkömmlichen Webservern unterscheiden:

  • Benutzerauthentifizierung ist erforderlich.
  • Alle Operationen werden im Rahmen der aktuellen Sitzung durchgeführt.
  • Es besteht die Möglichkeit, verschiedene Aktionen mit dem Dateisystem durchzuführen.
  • Für jede Verbindung wird ein separater Kanal verwendet.

Ein FTP-Client ist ein Programm, das es ermöglicht, sich mit einem entfernten Server über FTP zu verbinden und notwendige Aktionen mit den Elementen des Dateisystems durchzuführen. Als Client kann in der Tat auch ein Browser dienen, in dessen Adresszeile die Adresse eingegeben werden sollte, die den Pfad zu einem bestimmten Verzeichnis oder einer Datei auf dem entfernten Server gemäß dem allgemeinen URL-Schema darstellt:

ftp://user:pass@address:port/directory/file

Die Verwendung eines Webbrowsers hat jedoch Einschränkungen; man kann nur Dateien anzeigen oder herunterladen, die von Interesse sind. Um alle Vorteile von FTP vollständig nutzen zu können, sollte man spezielle Software als Client verwenden.

Die FTP-Authentifizierung verwendet ein Benutzername/Passwort-Schema zur Gewährleistung des Zugriffs. Der Benutzername wird mit dem Befehl USER an den Server gesendet, während das Passwort mit dem Befehl PASS übermittelt wird. Wenn die bereitgestellten Informationen vom Server akzeptiert werden, erhält der Client eine Einladung und die Sitzung beginnt. Nutzer können, sofern der Server diese Funktion unterstützt, ohne Eingabe von Anmeldedaten auf das System zugreifen. In solchen Sitzungen kann der Server jedoch nur eingeschränkten Zugang gewähren.

Ein Host, der den FTP-Service anbietet, kann anonymen Zugang zu FTP gewähren. Benutzer melden sich normalerweise als „anonymous“ (dies kann auf einigen FTP-Servern groß-/kleinschreibungssensitiv sein) an. Obwohl Benutzer üblicherweise gebeten werden, ihre E-Mail-Adresse anstelle eines Passworts anzugeben, erfolgt tatsächlich keine Überprüfung. Viele FTP-Hosts, die Software-Updates bereitstellen, unterstützen anonymen Zugang.

Protokollschema

Die Interaktion zwischen ‚Client‘ und ‚Server‘ bei einer FTP-Verbindung kann wie folgt veranschaulicht werden:

SFTP- und FTPS-Protokolle

Sicheres FTP

FTP wurde ursprünglich nicht als sicher konzipiert, da es für die Kommunikation zwischen mehreren Militärstandorten und Einrichtungen gedacht war. Mit der Entwicklung und Verbreitung des Internets hat sich jedoch die Gefahr des unbefugten Zugriffs erheblich erhöht. Daher entstand die Notwendigkeit, Server vor verschiedenen Arten von Angriffen zu schützen. Im Mai 1999 fassten die Autoren von RFC 2577 die Sicherheitsanfälligkeiten in dieser Liste von Problemen zusammen:

  • Verborgene Angriffe (Bounce-Angriffe)
  • Spoofing-Angriffe
  • Brute-Force-Angriffe
  • Paketabwähren, Sniffing
  • Port-Diebstahl

Standard-FTP bietet keine Möglichkeit zur verschlüsselten Datenübertragung, weshalb Benutzernamen, Passwörter, Befehle und andere Informationen leicht von Angreifern abgefangen werden können. Eine übliche Lösung für dieses Problem ist die Verwendung von 'sicheren', TLS-geschützten Versionen des anfälligen Protokolls (FTPS) oder eines anderen, sichereren Protokolls wie SFTP oder SCP, das mit den meisten Implementierungen des Secure Shell-Protokolls bereitgestellt wird.

FTPS

FTPS (FTP + SSL) – eine Erweiterung des Standardprotokolls für den Dateitransfer, die dessen grundlegende Funktionalität um die Möglichkeit zur Erstellung von verschlüsselten Sitzungen mithilfe des SSL-Protokolls (Secure Sockets Layer – Sicherheitsschicht) ergänzt. Heutzutage wird die Sicherheit durch seinen fortschrittlicheren Nachfolger TLS (Transport Layer Security – Transportsicherheit) gewährleistet.

SSL

Das SSL-Protokoll wurde von der Firma Netscape Communications im Jahr 1996 mit dem Ziel entwickelt, Sicherheit und Vertraulichkeit von Internetverbindungen zu gewährleisten. Das Protokoll unterstützt die Authentifizierung (Echtheit) von Client und Server, ist unabhängig von Anwendungen und transparent für die Protokolle HTTP, FTP und Telnet.

Der SSL-Handshake-Prozess besteht aus zwei Phasen: der Authentifizierung des Servers und der optionalen Authentifizierung des Clients. In der ersten Phase sendet der Server als Antwort auf eine Anfrage des Clients sein Zertifikat und Verschlüsselungsparameter. Dann generiert der Client einen Master-Key, verschlüsselt ihn mit dem öffentlichen Schlüssel des Servers und sendet ihn an den Server zurück. Der Server entschlüsselt den Master-Key mit seinem privaten Schlüssel und bestätigt seine Echtheit gegenüber dem Client, indem er ihm eine Nachricht zurücksendet, die mit dem Master-Key des Clients signiert ist.

Die folgenden Daten werden mit Schlüsseln verschlüsselt und validiert, die auf diesem Master-Schlüssel basieren. Im zweiten Schritt, der nicht obligatorisch ist, sendet der Server eine Anfrage an den Client, und der Client bestätigt die Authentizität des Servers, indem er die Anfrage mit seiner eigenen digitalen Signatur und dem Zertifikat des öffentlichen Schlüssels zurücksendet.

SSL unterstützt eine Vielzahl von kryptografischen Algorithmen. Bei der Aufbau der Verbindung wird das RSA-Öffentlichkeitsverfahren verwendet. Nach dem Austausch der Schlüssel kommen verschiedene Verschlüsselungen zum Einsatz: RC2, RC4, IDEA, DES und TripleDES. Auch MD5 wird verwendet — ein Algorithmus zur Erstellung von Nachrichten-Digests. Die Syntax der öffentlichen Schlüsselzertifikate ist in X.509 beschrieben.

Eines der wichtigen Vorteile von SSL ist seine vollständige Unabhängigkeit von Software und Plattformen. Das Protokoll basiert auf Prinzipien der Portabilität und die Ideologie seiner Konstruktion ist unabhängig von den Anwendungen, in denen es verwendet wird. Darüber hinaus ist es wichtig, dass über das SSL-Protokoll auch andere Protokolle transparent gelegt werden können; entweder um die Sicherheit der Zielinformationen weiter zu erhöhen oder um die kryptografischen Fähigkeiten von SSL an eine spezifische Aufgabe anzupassen.

SSL-Verbindung

SFTP- und FTPS-Protokolle

Der bereitgestellte sichere SSL-Kanal besitzt drei Hauptmerkmale:

  • Der Kanal ist privat. Die Verschlüsselung wird für alle Nachrichten nach einem einfachen Dialog verwendet, der dazu dient, den geheimen Schlüssel zu bestimmen.
  • Der Kanal ist authentifiziert. Die Serverseite des Dialogs wird immer authentifiziert, während die Clientseite optional authentifiziert wird.
  • Der Kanal ist zuverlässig. Der Transport von Nachrichten umfasst die Integritätsprüfung (mithilfe von MAC).

Besonderheiten von FTPS

Es gibt zwei Implementierungen von FTPS, die verschiedene Methoden zur Bereitstellung von Sicherheit verwenden:

  • Die implizite Methode sieht die Nutzung des standardmäßigen SSL-Protokolls vor, bei der die Sitzung vor dem Senden von Daten hergestellt wird. Dies kann die Kompatibilität mit herkömmlichen FTP-Clients und -Servern beeinträchtigen. Um die Rückwärtskompatibilität mit Clients zu gewährleisten, die FTPS nicht unterstützen, wird für die Steuerverbindung der TCP-Port 990 und für die Datenübertragung der Port 989 verwendet. Dadurch kann der standardmäßige Port 21 für das FTP-Protokoll beibehalten werden. Diese Methode gilt als veraltet.
  • Explizit – ist wesentlich benutzerfreundlicher, da es die Standard-FTP-Befehle nutzt, jedoch die Daten bei der Übertragung verschlüsselt. Dadurch kann die gleiche Steuerverbindung sowohl für FTP als auch für FTPS verwendet werden. Der Client muss eine sichere Datenübertragung beim Server ausdrücklich anfordern und anschließend die Verschlüsselungsmethode bestätigen. Falls der Client keine sichere Übertragung anfordert, hat der FTPS-Server das Recht, die ungesicherte Verbindung entweder aufrechtzuerhalten oder zu schließen. Der Mechanismus zur Aushandlung von Authentifizierung und Datenschutz wurde unter RFC 2228 eingeführt, welches einen neuen FTP-Befehl AUTH enthält. Obwohl dieser Standard die Schutzmechanismen nicht explizit definiert, legt er fest, dass die sichere Verbindung vom Client gemäß dem oben beschriebenen Algorithmus initiiert werden muss. Wenn der Server keine sicheren Verbindungen unterstützt, muss ein Fehlercode 504 zurückgegeben werden. FTPS-Clients können Informationen über die vom Server unterstützten Schutzprotokolle mit dem Befehl FEAT abrufen. Dennoch ist der Server nicht verpflichtet, die unterstützten Sicherheitsniveaus offenzulegen. Die gebräuchlichsten FTPS-Befehle sind AUTH TLS und AUTH SSL, die jeweils TLS- und SSL-Schutz bieten.

SFTP

SFTP (Secure File Transfer Protocol) – ein Anwendungsprotokoll für die Dateiübertragung, das über einen sicheren Kanal arbeitet. Es sollte nicht mit (Simple File Transfer Protocol), das dieselbe Abkürzung hat, verwechselt werden. Während FTPS einfach eine Erweiterung von FTP ist, handelt es sich bei SFTP um ein eigenständiges Protokoll, das mit SSH (Secure Shell – sichere Shell) als Grundlage arbeitet.

Secure Shell

Die Entwicklung des Protokolls wurde von einer Gruppe der IETF namens Secsh vorangetrieben. Die Arbeitsdokumentation für das neue SFTP-Protokoll wurde kein offizieller Standard, fand jedoch schnell Anwendung in der Entwicklung von Anwendungen. In der Folge wurden sechs Versionen des Protokolls veröffentlicht. Die schrittweise Erweiterung der Funktionalität führte jedoch dazu, dass am 14. August 2006 die Entscheidung getroffen wurde, die Arbeiten an der Weiterentwicklung des Protokolls zu beenden, da das ursprüngliche Ziel des Projekts (Entwicklung von SSH) erreicht wurde und nicht genügend Fachwissen für die Entwicklung eines vollständigen Protokolls für ein entferntes Dateisystem zur Verfügung stand.

SSH ist ein Netzwerkprotokoll, das eine entfernte Steuerung des Betriebssystems und das Tunneln von TCP-Verbindungen ermöglicht (zum Beispiel für Dateiübertragungen). Es ähnelt in seiner Funktionalität den Protokollen Telnet und rlogin, verschlüsselt jedoch im Gegensatz zu diesen den gesamten Datenverkehr, einschließlich der übertragenen Passwörter. SSH erlaubt die Auswahl verschiedener Verschlüsselungsalgorithmen. SSH-Clients und SSH-Server sind für die meisten Netzbetriebssysteme verfügbar.

SSH ermöglicht die sichere Übertragung nahezu jedes anderen Netzwerkprotokolls in einer ungeschützten Umgebung. Dadurch kann man nicht nur remote auf einen Computer über die Kommandozeile zugreifen, sondern auch über einen verschlüsselten Kanal Audio- oder Videoübertragungen (zum Beispiel von einer Webcam) durchführen. Zudem kann SSH die übertragene Daten komprimieren, bevor sie verschlüsselt werden, was beispielsweise für den Remote-Start von X Window System-Clients praktisch ist.

Die erste Version des Protokolls, SSH-1, wurde 1995 von dem Forscher Tatu Ylönen am Technischen Universität Helsinki (Finnland) entwickelt. SSH-1 wurde geschaffen, um mehr Vertraulichkeit zu gewährleisten als die Protokolle rlogin, telnet und rsh. 1996 wurde eine sicherere Version des Protokolls, SSH-2, entwickelt, die mit SSH-1 inkompatibel ist. Das Protokoll gewann weiter an Popularität, und bis 2000 hatte es etwa zwei Millionen Benutzer. Heutzutage bezieht sich der Begriff "SSH" normalerweise auf SSH-2, da die erste Version des Protokolls aufgrund signifikanter Mängel praktisch nicht mehr verwendet wird. 2006 wurde das Protokoll von der IETF-Arbeitsgruppe als Internetstandard anerkannt.

Es gibt zwei verbreitete Implementierungen von SSH: eine kommerzielle und eine kostenlose Open Source-Version. Die Open Source-Version wird als OpenSSH bezeichnet. Bis 2006 wurden 80 % der Computer im Internet mit OpenSSH betrieben. Die kommerzielle Version wird von SSH Communications Security entwickelt, einem hundertprozentigen Tochterunternehmen von Tectia, und ist für die nicht-kommerzielle Nutzung kostenlos. Beide Implementierungen beinhalten nahezu identische Befehle.

Im Gegensatz zum Telnet-Protokoll ist das SSH-2-Protokoll resistent gegen Angriffe zur Abhörung des Datenverkehrs ("Sniffing"), jedoch anfällig für "Man-in-the-Middle"-Angriffe. Das SSH-2-Protokoll schützt auch vor Anschlussangriffen ("Session Hijacking"), da es unmöglich ist, sich in eine bereits etablierte Sitzung einzuklinken oder sie abzufangen.

Um Angriffe "Man-in-the-Middle" bei einer Verbindung zu einem Host zu verhindern, dessen Schlüssel dem Client noch unbekannt ist, zeigt die Client-Software dem Benutzer einen "Schlüsselabdruck" ("Key Fingerprint"). Es wird empfohlen, den von der Client-Software angezeigten Schlüsselabdruck sorgfältig mit dem Schlüsselabdruck des Servers zu vergleichen, idealerweise aus sicheren Kommunikationskanälen oder persönlich.

SSH-Unterstützung ist in allen UNIX-ähnlichen Systemen implementiert, und die meisten von ihnen bieten standardmäßig sowohl einen SSH-Client als auch einen SSH-Server. Es gibt zahlreiche Implementierungen von SSH-Clients auch für Nicht-UNIX-Betriebssysteme. Das Protokoll hat nach der weit verbreiteten Nutzung von Traffic-Analysatoren und Methoden zur Störung lokaler Netzwerke an Popularität gewonnen, da es eine sichere Alternative zum unsicheren Telnet-Protokoll für die Verwaltung kritischer Knotenpunkte darstellt.

Kommunikation über SSH

Für die Nutzung von SSH wird ein SSH-Server und ein SSH-Client benötigt. Der Server lauscht auf Verbindungen von Client-Maschinen, authentifiziert sich bei Verbindungsaufbau und beginnt mit der Betreuung des Clients. Der Client wird verwendet, um sich auf eine entfernte Maschine einzuloggen und Befehle auszuführen.

SFTP- und FTPS-Protokolle

Vergleich mit FTPS

Das Hauptmerkmal, das SFTP von herkömmlichem FTP und FTPS unterscheidet, ist, dass SFTP alle Befehle, Benutzernamen, Passwörter und andere vertrauliche Informationen vollständig verschlüsselt.

Sowohl FTPS als auch SFTP verwenden eine Kombination aus asymmetrischen Algorithmen (RSA, DSA), symmetrischen Algorithmen (DES/3DES, AES, Twofish usw.) und einem Schlüsselaustauschalgorithmus. Für die Authentifizierung nutzt FTPS (oder, um genau zu sein, SSL/TLS über das FTP-Protokoll) X.509-Zertifikate, während SFTP (SSH-Protokoll) SSH-Keys verwendet.

X.509-Zertifikate enthalten einen öffentlichen Schlüssel und einige Informationen über den Zertifikatsinhaber. Diese Informationen ermöglichen es zudem, die Integrität des Zertifikats, dessen Authentizität und den Eigentümer des Zertifikats zu überprüfen. Jedes X.509-Zertifikat verfügt über einen entsprechenden privaten Schlüssel, der aus Sicherheitsgründen in der Regel separat vom Zertifikat gespeichert wird.

Ein SSH-Schlüssel enthält nur den öffentlichen Schlüssel (der entsprechende private Schlüssel wird separat aufbewahrt). Er enthält keine Informationen über den Eigentümer des Schlüssels. Einige SSH-Implementierungen verwenden X.509-Zertifikate zur Authentifizierung, verifizieren jedoch tatsächlich nicht die gesamte Zertifikatskette – nur der öffentliche Schlüssel wird verwendet (was die Authentifizierung unvollständig macht).

Fazit

Das FTP-Protokoll spielt nach wie vor eine wichtige Rolle bei der Speicherung und Verbreitung von Informationen im Internet, trotz seines beeindruckenden Alters. Es ist ein praktisches, multifunktionales und standardisiertes Protokoll. Auf dessen Basis wurden zahlreiche Dateiarchive erstellt, ohne die die technische Arbeit deutlich weniger effektiv wäre. Darüber hinaus ist es einfach zu konfigurieren, und es gibt Server- und Client-Programme für nahezu alle gängigen Plattformen.

Die geschützten Versionen hingegen lösen das Problem der Vertraulichkeit von gespeicherten und übertragenen Daten in der heutigen Welt. Beide neuen Protokolle haben ihre Vor- und Nachteile und erfüllen verschiedene Rollen. In Bereichen, in denen ein Dateiarchive erforderlich ist, ist die Verwendung von FTPS besonders vorteilhaft, insbesondere wenn zuvor bereits klassisches FTP verwendet wurde. SFTP ist weniger verbreitet aufgrund seiner Inkompatibilität zum alten Protokoll, bietet jedoch besseren Schutz und mehr Funktionen, da es Teil eines Systems zur Fernverwaltung ist.

Quellenverzeichnis

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster