SFTP- und FTPS-Protokolle

Vorwort

Erst vor einer Woche habe ich einen Aufsatz über das im Titel angegebene Thema geschrieben und musste feststellen, dass es im Internet, sagen wir mal, nicht so viele Bildungsinformationen gibt. Meistens trockene Fakten und Einrichtungsanweisungen. Deshalb habe ich beschlossen, den Text leicht zu korrigieren und ihn als Artikel zu veröffentlichen.

Was ist FTP?

FTP (File Transfer Protocol) ist ein Protokoll zum Übertragen von Dateien über ein Netzwerk. Es ist eines der grundlegenden Ethernet-Protokolle. Erschien 1971 und arbeitete zunächst in DARPA-Netzwerken. Derzeit basiert die Dateiübertragung wie HTTP auf einem Modell, das aus einer Reihe von TCP/IP-Protokollen (Transmission Control Protocol/Internet Protocol) besteht. Definiert in RFC 959.

Das Protokoll definiert Folgendes:

  • Wie erfolgt die Fehlerprüfung?
  • Datenverpackungsmethode (falls Verpackung verwendet wird)
  • Wie zeigt das sendende Gerät an, dass es eine Nachricht fertiggestellt hat?
  • Wie zeigt das empfangende Gerät an, dass es eine Nachricht erhalten hat?

Kommunikation zwischen Client und Server

Schauen wir uns die Prozesse, die beim FTP-Betrieb ablaufen, genauer an. Die Verbindung wird vom Protokollinterpreter des Benutzers initialisiert. Der Austausch wird über einen Steuerkanal im TELNET-Standard gesteuert. FTP-Befehle werden vom Protokollinterpreter des Benutzers generiert und an den Server gesendet. Über den Kontrollkanal werden auch die Antworten des Servers an den Benutzer gesendet. Im Allgemeinen hat der Benutzer die Möglichkeit, Kontakt mit dem Protokollinterpreter des Servers und über andere Mittel als den Interpreter des Benutzers herzustellen.

Das Hauptmerkmal von FTP besteht darin, dass es zwei Verbindungen verwendet. Einer davon dient zum Senden von Befehlen an den Server und erfolgt standardmäßig über den TCP-Port 21, der geändert werden kann. Die Steuerverbindung besteht so lange, wie der Client mit dem Server kommuniziert. Bei der Datenübertragung zwischen Maschinen muss der Steuerkanal geöffnet sein. Wenn es geschlossen ist, stoppt die Datenübertragung. Durch die zweite erfolgt eine direkte Datenübertragung. Es wird jedes Mal geöffnet, wenn eine Dateiübertragung zwischen Client und Server stattfindet. Werden mehrere Dateien gleichzeitig übertragen, eröffnet jede von ihnen einen eigenen Übertragungskanal.

FTP kann im aktiven oder passiven Modus betrieben werden, wobei die Wahl des Modus bestimmt, wie die Verbindung hergestellt wird. Im aktiven Modus erstellt der Client eine TCP-Steuerungsverbindung mit dem Server, sendet seine IP-Adresse und eine beliebige Client-Portnummer an den Server und wartet dann darauf, dass der Server eine TCP-Verbindung mit dieser Adresse und Portnummer startet. Falls sich der Client hinter einer Firewall befindet und keine eingehende TCP-Verbindung akzeptieren kann, kann der passive Modus verwendet werden. In diesem Modus sendet der Client mithilfe des Kontrollflusses einen PASV-Befehl an den Server und erhält dann vom Server seine IP-Adresse und Portnummer, die der Client dann verwendet, um einen Datenfluss von seinem beliebigen Port aus zu öffnen.

Es besteht die Möglichkeit, dass Daten an einen dritten Rechner übertragen werden. In diesem Fall organisiert der Benutzer einen Steuerkanal mit zwei Servern und einen direkten Datenkanal zwischen ihnen. Steuerbefehle laufen über den Benutzer und Daten werden direkt zwischen den Servern übertragen.

Bei der Datenübertragung über ein Netzwerk können vier Datendarstellungen verwendet werden:

  • ASCII – wird für Text verwendet. Die Daten werden bei Bedarf vor der Übertragung von der Zeichendarstellung auf dem sendenden Host in „XNUMX-Bit-ASCII“ und (bei Bedarf erneut) in die Zeichendarstellung auf dem empfangenden Host konvertiert. Insbesondere werden Zeilenumbrüche geändert. Daher eignet sich dieser Modus nicht für Dateien, die mehr als nur einfachen Text enthalten.
  • Binärmodus – das sendende Gerät sendet jede Datei Byte für Byte und der Empfänger speichert den Bytestrom nach dem Empfang. Die Unterstützung dieses Modus wurde für alle FTP-Implementierungen empfohlen.
  • EBCDIC – wird zur Übertragung von Klartext zwischen Hosts in EBCDIC-Kodierung verwendet. Ansonsten ähnelt dieser Modus dem ASCII-Modus.
  • Lokaler Modus – ermöglicht zwei Computern mit identischen Einstellungen, Daten in ihrem eigenen Format zu senden, ohne sie in ASCII zu konvertieren.

Die Datenübertragung kann in drei Modi erfolgen:

  • Stream-Modus – Daten werden als kontinuierlicher Stream gesendet, sodass FTP keine Verarbeitung durchführen muss. Stattdessen erfolgt die gesamte Verarbeitung über TCP. Der End-of-File-Indikator wird nicht benötigt, außer zum Aufteilen von Daten in Datensätze.
  • Blockmodus – FTP zerlegt die Daten in mehrere Blöcke (Header-Block, Anzahl der Bytes, Datenfeld) und überträgt sie dann an TCP.
  • Komprimierungsmodus – Daten werden mit einem einzigen Algorithmus komprimiert (normalerweise durch Kodierung von Lauflängen).

Ein FTP-Server ist ein Server, der die Möglichkeit bietet, das File Transfer Protocol zu verwenden. Er weist bestimmte Merkmale auf, die ihn von herkömmlichen Webservern unterscheiden:

  • Benutzerauthentifizierung erforderlich
  • Alle Vorgänge werden innerhalb der aktuellen Sitzung ausgeführt
  • Möglichkeit, verschiedene Aktionen mit dem Dateisystem auszuführen
  • Für jede Verbindung wird ein eigener Kanal verwendet

Der FTP-Client ist ein Programm, mit dem Sie über FTP eine Verbindung zu einem Remote-Server herstellen und dort auch die erforderlichen Aktionen mit Elementen des Dateisystems ausführen können. Der Client kann durchaus ein Browser sein, in dessen Adressleiste Sie die Adresse eingeben sollten, die den Pfad zu einem bestimmten Verzeichnis oder einer bestimmten Datei auf dem Remote-Server gemäß dem allgemeinen URL-Blockdiagramm darstellt:

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

Die Verwendung eines Webbrowsers in diesem Zusammenhang ermöglicht Ihnen jedoch nur die Anzeige oder den Download der gewünschten Dateien. Um alle Vorteile von FTP voll ausnutzen zu können, sollten Sie als Client eine spezielle Software verwenden.

Die FTP-Authentifizierung verwendet ein Benutzername/Passwort-Schema, um den Zugriff zu gewähren. Der Benutzername wird mit dem USER-Befehl an den Server gesendet und das Passwort wird mit dem PASS-Befehl gesendet. Wenn die vom Client bereitgestellten Informationen vom Server akzeptiert werden, sendet der Server eine Einladung an den Client und die Sitzung beginnt. Wenn der Server diese Funktion unterstützt, können sich Benutzer ohne Angabe von Anmeldeinformationen anmelden, der Server kann für solche Sitzungen jedoch nur eingeschränkten Zugriff gewähren.

Der Host, der den FTP-Dienst bereitstellt, kann anonymen FTP-Zugriff bereitstellen. Benutzer melden sich normalerweise mit „anonymous“ (auf einigen FTP-Servern kann die Groß-/Kleinschreibung beachtet werden) als Benutzernamen an. Obwohl Benutzer normalerweise aufgefordert werden, ihre E-Mail-Adresse anstelle eines Passworts anzugeben, findet tatsächlich keine Überprüfung statt. Viele FTP-Hosts, die Software-Updates bereitstellen, unterstützen den anonymen Zugriff.

Protokolldiagramm

Die Client-Server-Interaktion während einer FTP-Verbindung kann wie folgt visualisiert werden:

SFTP- und FTPS-Protokolle

Sicheres FTP

FTP sollte ursprünglich nicht sicher sein, da es für die Kommunikation zwischen mehreren militärischen Einrichtungen und Behörden gedacht war. Doch mit der Entwicklung und Verbreitung des Internets ist die Gefahr des unbefugten Zugriffs um ein Vielfaches gestiegen. Es bestand die Notwendigkeit, Server vor verschiedenen Arten von Angriffen zu schützen. Im Mai 1999 fassten die Autoren von RFC 2577 die Schwachstellen in der folgenden Liste von Problemen zusammen:

  • Versteckte Angriffe (Bounce-Angriffe)
  • Spoof-Angriffe
  • Brute-Force-Angriffe
  • Paketerfassung, Sniffing
  • Hafendiebstahl

Reguläres FTP verfügt nicht über die Möglichkeit, Daten in verschlüsselter Form zu übertragen, wodurch Benutzernamen, Passwörter, Befehle und andere Informationen leicht und problemlos von Angreifern abgefangen werden können. Die übliche Lösung für dieses Problem besteht darin, „sichere“, TLS-geschützte Versionen des anfälligen Protokolls (FTPS) oder ein anderes, sichereres Protokoll wie SFTP/SCP zu verwenden, das in den meisten Secure Shell-Protokollimplementierungen enthalten ist.

FTPS

FTPS (FTP + SSL) ist eine Erweiterung des Standard-Dateiübertragungsprotokolls, das zu seiner Grundfunktionalität die Erstellung verschlüsselter Sitzungen mithilfe des SSL-Protokolls (Secure Sockets Layer) hinzufügt. Heutzutage wird der Schutz durch das fortschrittlichere analoge TLS (Transport Layer Security) gewährleistet.

SSL

Das SSL-Protokoll wurde 1996 von Netscape Communications vorgeschlagen, um die Sicherheit und Privatsphäre von Internetverbindungen zu gewährleisten. Das Protokoll unterstützt Client- und Serverauthentifizierung, ist anwendungsunabhängig und transparent für HTTP-, FTP- und Telnet-Protokolle.

Das SSL-Handshake-Protokoll besteht aus zwei Phasen: Serverauthentifizierung und optionale Clientauthentifizierung. Im ersten Schritt antwortet der Server auf die Anfrage des Clients, indem er sein Zertifikat und seine Verschlüsselungsparameter sendet. Anschließend generiert der Client einen Hauptschlüssel, verschlüsselt ihn mit dem öffentlichen Schlüssel des Servers und sendet ihn an den Server. Der Server entschlüsselt den Hauptschlüssel mit seinem privaten Schlüssel und authentifiziert sich gegenüber dem Client, indem er eine durch den Hauptschlüssel des Clients authentifizierte Nachricht zurücksendet.

Nachfolgende Daten werden mit von diesem Hauptschlüssel abgeleiteten Schlüsseln verschlüsselt und authentifiziert. Im zweiten Schritt, der optional ist, sendet der Server eine Anfrage an den Client, und der Client authentifiziert sich gegenüber dem Server, indem er die Anfrage mit seiner eigenen digitalen Signatur und einem öffentlichen Schlüsselzertifikat zurücksendet.

SSL unterstützt eine Vielzahl kryptografischer Algorithmen. Beim Aufbau der Kommunikation wird das RSA-Public-Key-Kryptosystem verwendet. Nach dem Schlüsselaustausch werden viele verschiedene Chiffren verwendet: RC2, RC4, IDEA, DES und TripleDES. Außerdem kommt MD5 zum Einsatz – ein Algorithmus zum Erstellen eines Message Digest. Die Syntax für Public-Key-Zertifikate ist in X.509 beschrieben.

Einer der wichtigen Vorteile von SSL ist seine vollständige Unabhängigkeit von der Softwareplattform. Das Protokoll basiert auf den Grundsätzen der Portabilität und die Ideologie seiner Konstruktion hängt nicht von den Anwendungen ab, in denen es verwendet wird. Darüber hinaus ist es auch wichtig, dass andere Protokolle transparent über das SSL-Protokoll gelegt werden können; entweder um den Schutzgrad der Zielinformationsströme weiter zu erhöhen oder um die kryptografischen Fähigkeiten von SSL für eine andere, genau definierte Aufgabe anzupassen.

SSL-Verbindung

SFTP- und FTPS-Protokolle

Der von SSL bereitgestellte sichere Kanal hat drei Haupteigenschaften:

  • Der Kanal ist privat. Die Verschlüsselung aller Nachrichten erfolgt nach einem einfachen Dialog, der zur Ermittlung des geheimen Schlüssels dient.
  • Der Kanal ist authentifiziert. Die Serverseite der Konversation wird immer authentifiziert, während die Clientseite optional authentifiziert wird.
  • Der Kanal ist zuverlässig. Der Nachrichtentransport umfasst die Integritätsprüfung (mithilfe des MAC).

Funktionen von FTPS

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

  • Bei der impliziten Methode wird das Standard-SSL-Protokoll verwendet, um vor dem Senden von Daten eine Sitzung aufzubauen, was wiederum die Kompatibilität mit regulären FTP-Clients und -Servern beeinträchtigt. Aus Gründen der Abwärtskompatibilität mit Clients, die FTPS nicht unterstützen, wird für die Steuerverbindung der TCP-Port 990 und für die Datenübertragung 989 verwendet. Damit bleibt der Standardport 21 für das FTP-Protokoll erhalten. Diese Methode gilt als veraltet.
  • Explizit ist viel praktischer, da es Standard-FTP-Befehle verwendet, die Daten jedoch beim Antworten verschlüsselt, sodass Sie dieselbe Steuerverbindung für FTP und FTPS verwenden können. Der Client muss explizit eine sichere Datenübertragung vom Server anfordern und anschließend die Verschlüsselungsmethode genehmigen. Wenn der Client keine sichere Übertragung anfordert, hat der FTPS-Server das Recht, die ungesicherte Verbindung entweder aufrechtzuerhalten oder zu schließen. Unter RFC 2228 wurde ein Authentifizierungs- und Datensicherheits-Aushandlungsmechanismus hinzugefügt, der den neuen FTP-AUTH-Befehl umfasst. Obwohl dieser Standard keine expliziten Sicherheitsmechanismen definiert, legt er fest, dass eine sichere Verbindung vom Client mithilfe des oben beschriebenen Algorithmus initiiert werden muss. Wenn sichere Verbindungen vom Server nicht unterstützt werden, sollte der Fehlercode 504 zurückgegeben werden. FTPS-Clients können mit dem FEAT-Befehl Informationen über die vom Server unterstützten Sicherheitsprotokolle erhalten, der Server ist jedoch nicht verpflichtet, die Sicherheitsstufen offenzulegen unterstützt. Die gebräuchlichsten FTPS-Befehle sind AUTH TLS und AUTH SSL, die TLS- bzw. SSL-Sicherheit bieten.

SFTP

SFTP (Secure File Transfer Protocol) ist ein Dateiübertragungsprotokoll auf Anwendungsebene, das auf einem sicheren Kanal ausgeführt wird. Nicht zu verwechseln mit (Simple File Transfer Protocol), das die gleiche Abkürzung hat. Wenn FTPS einfach eine Erweiterung von FTP ist, dann ist SFTP ein separates und unabhängiges Protokoll, das SSH (Secure Shell) als Basis verwendet.

Secure Shell

Das Protokoll wurde von einer der IETF-Gruppen namens Secsh entwickelt. Die Arbeitsdokumentation für das neue SFTP-Protokoll wurde nicht zum offiziellen Standard, sondern wurde aktiv für die Anwendungsentwicklung genutzt. Anschließend wurden sechs Versionen des Protokolls veröffentlicht. Die schrittweise Erhöhung der darin enthaltenen Funktionalität führte jedoch dazu, dass am 14. August 2006 beschlossen wurde, die Arbeit an der Entwicklung des Protokolls aufgrund der Fertigstellung der Hauptaufgabe des Projekts (SSH-Entwicklung) und des Mangels einzustellen über ein ausreichendes Expertenniveau verfügen, um mit der Entwicklung eines vollwertigen Remote-Dateisystemprotokolls fortzufahren.

SSH ist ein Netzwerkprotokoll, das die Fernsteuerung des Betriebssystems und das Tunneln von TCP-Verbindungen (z. B. für die Dateiübertragung) ermöglicht. Die Funktionalität ähnelt den Telnet- und Rlogin-Protokollen, aber im Gegensatz zu diesen verschlüsselt es den gesamten Datenverkehr, einschließlich der übertragenen Passwörter. SSH ermöglicht die Auswahl verschiedener Verschlüsselungsalgorithmen. SSH-Clients und SSH-Server sind für die meisten Netzwerkbetriebssysteme verfügbar.

Mit SSH können Sie fast jedes andere Netzwerkprotokoll sicher in einer ungesicherten Umgebung übertragen. Somit können Sie über die Befehlsshell nicht nur remote an Ihrem Computer arbeiten, sondern auch einen Audiostream oder ein Video (z. B. von einer Webcam) über einen verschlüsselten Kanal übertragen. SSH kann auch die Komprimierung übertragener Daten für die anschließende Verschlüsselung nutzen, was beispielsweise für den Remote-Start von X WindowSystem-Clients praktisch ist.

Die erste Version des Protokolls, SSH-1, wurde 1995 vom Forscher Tatu Ulönen von der Technischen Universität Helsinki (Finnland) entwickelt. SSH-1 wurde geschrieben, um mehr Privatsphäre zu bieten als die Protokolle rlogin, telnet und rsh. 1996 wurde eine sicherere Version des Protokolls, SSH-2, entwickelt, die mit SSH-1 nicht kompatibel ist. Das Protokoll erfreute sich noch größerer Beliebtheit und hatte im Jahr 2000 etwa zwei Millionen Benutzer. Derzeit bedeutet der Begriff „SSH“ normalerweise SSH-2, weil Die erste Version des Protokolls wird aufgrund erheblicher Mängel mittlerweile praktisch nicht mehr verwendet. Im Jahr 2006 wurde das Protokoll von der IETF-Arbeitsgruppe als Internetstandard genehmigt.

Es gibt zwei gängige Implementierungen von SSH: private kommerzielle und kostenlose Open Source. Die kostenlose Implementierung heißt OpenSSH. Im Jahr 2006 nutzten 80 % der Computer im Internet OpenSSH. Die proprietäre Implementierung wird von SSH Communications Security, einer hundertprozentigen Tochtergesellschaft der Tectia Corporation, entwickelt und ist für die nichtkommerzielle Nutzung kostenlos. Diese Implementierungen enthalten fast den gleichen Befehlssatz.

Das SSH-2-Protokoll ist im Gegensatz zum Telnet-Protokoll resistent gegen Angriffe zum Abhören des Datenverkehrs („Sniffing“), jedoch nicht resistent gegen Man-in-the-Middle-Angriffe. Das SSH-2-Protokoll ist außerdem resistent gegen Session-Hijacking-Angriffe, da es unmöglich ist, einer bereits bestehenden Sitzung beizutreten oder diese zu kapern.

Um Man-in-the-Middle-Angriffe bei der Verbindung zu einem Host zu verhindern, dessen Schlüssel dem Client noch nicht bekannt ist, zeigt die Client-Software dem Benutzer einen „Schlüssel-Fingerabdruck“ an. Es wird empfohlen, den von der Client-Software angezeigten „Schlüssel-Snapshot“ sorgfältig mit dem Server-Schlüssel-Snapshot zu vergleichen, vorzugsweise über zuverlässige Kommunikationskanäle oder persönlich.

SSH-Unterstützung ist auf allen UNIX-ähnlichen Systemen verfügbar und die meisten verfügen über einen SSH-Client und -Server als Standarddienstprogramme. Es gibt viele Implementierungen von SSH-Clients für Nicht-UNIX-Betriebssysteme. Große Popularität erlangte das Protokoll nach der weit verbreiteten Entwicklung von Verkehrsanalysatoren und Methoden zur Störung des Betriebs lokaler Netzwerke als alternative Lösung zum unsicheren Telnet-Protokoll zur Verwaltung wichtiger Knoten.

Kommunikation über SSH

Um über SSH zu arbeiten, benötigen Sie einen SSH-Server und einen SSH-Client. Der Server wartet auf Verbindungen von Client-Rechnern und führt beim Verbindungsaufbau eine Authentifizierung durch und beginnt anschließend mit der Bedienung des Clients. Der Client wird verwendet, um sich bei einem Remote-Computer anzumelden und Befehle auszuführen.

SFTP- und FTPS-Protokolle

Vergleich mit FTPS

Der Hauptunterschied zwischen SFTP und Standard-FTP und FTPS besteht darin, dass SFTP absolut alle Befehle, Benutzernamen, Passwörter und andere vertrauliche Informationen verschlüsselt.

Sowohl FTPS- als auch SFTP-Protokolle verwenden eine Kombination aus asymmetrischen Algorithmen (RSA, DSA), symmetrischen Algorithmen (DES/3DES, AES, Twhofish usw.) sowie einem Schlüsselaustauschalgorithmus. Für die Authentifizierung verwendet FTPS (genauer gesagt SSL/TLS über FTP) X.509-Zertifikate, während SFTP (SSH-Protokoll) SSH-Schlüssel verwendet.

X.509-Zertifikate enthalten einen öffentlichen Schlüssel und einige Informationen über das Zertifikat des Besitzers. Diese Informationen ermöglichen andererseits die Überprüfung der Integrität des Zertifikats selbst, der Authentizität und des Zertifikatsinhabers. X.509-Zertifikate verfügen über einen entsprechenden privaten Schlüssel, der aus Sicherheitsgründen meist getrennt vom Zertifikat gespeichert wird.

Der SSH-Schlüssel enthält nur den öffentlichen Schlüssel (der entsprechende private Schlüssel wird separat gespeichert). Es enthält keine Informationen über den Besitzer des Schlüssels. Einige SSH-Implementierungen verwenden X.509-Zertifikate zur Authentifizierung, verifizieren jedoch nicht die gesamte Zertifikatskette, sondern es wird nur der öffentliche Schlüssel verwendet (was eine solche Authentifizierung unvollständig macht).

Abschluss

Das FTP-Protokoll spielt trotz seines ehrwürdigen Alters zweifellos immer noch eine wichtige Rolle bei der Speicherung und Verteilung von Informationen im Netzwerk. Es handelt sich um ein praktisches, multifunktionales und standardisiertes Protokoll. Auf seiner Basis wurden viele Aktenarchive aufgebaut, ohne die die technische Arbeit nicht so effektiv wäre. Darüber hinaus ist es einfach einzurichten und es gibt Server- und Client-Programme für fast alle aktuellen und nicht ganz so aktuellen Plattformen.

Seine geschützten Versionen wiederum lösen das Problem der Vertraulichkeit gespeicherter und übertragener Daten in der modernen Welt. Beide neuen Protokolle haben ihre Vor- und Nachteile und erfüllen leicht unterschiedliche Rollen. In den Bereichen, in denen ein Dateiarchiv benötigt wird, ist die Verwendung von FTPS vorzuziehen, insbesondere wenn dort bereits klassisches FTP verwendet wurde. SFTP ist aufgrund seiner Inkompatibilität mit dem alten Protokoll weniger verbreitet, aber es ist sicherer und bietet mehr Funktionalität, da es Teil des Fernverwaltungssystems ist.

Liste der Quellen

Source: habr.com

Kommentar hinzufügen