Jump to content

FTPS - detaillierter Ablauf


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Community!

 

Für die nähere Zukunft plane ich einen rudimentären FTPS-Client zu programmieren. Dazu muss ich allerdings erstmal wissen wie FTP over SSL/TLS denn genau funktioniert!

 

Meine bisherige Internet und Bib Recherche ist bisher eher mau, daher wende ich mich direkt an die Profis :)

 

1 Frage: Kann mir jemand gute Quellen nennen, die den/die exakten Ablauf(e) bei FTPS erklären?

2 Frage: Der Zielserver, auf den die Daten mal hochgeladen werden sollen hat aus Sicherheitsgründen nur Port 21 offen, spricht also für aktives FTP. Ist der Aufbau des Steuerkanals unter FTPS unter diesen Voraussetzungen überhaupt möglich, da FTPS soweit ich weiß Port 990 für den Steuerkanal und Port 989 für den Datenkanal nutzt (stimmt das so?).

Oder kann man die FTP-Verbindung auch trotz Verschlüsselung über die FTP Ports 21, 20 laufen lassen?

 

Ich bedanke mich für jegliche Unterstützung

 

LG

Link zu diesem Kommentar

Hey,

 

habe nun die RFC2 2228 und 4217 durch.

In letzterem werden beispielhaft Abläufe von FTP sowie FTP mit TLS Sessions gezeigt.

Allerdings sind das nur Ausschnitte, ich frage mich:

An welcher Stelle kommen bei 1. STOR.file, RETR, LIST, ... also die ganzen Transferkommandos ?? Wird dann, wie in 3. gezeigt, für jedes neue Transferkommando ein eigener Datenkanal (also Client Socket bei aktiv-FTP) erstellt und jedesmal aufs neue eine Zertifikat prüfung (TLSneg) und Verschlüsselung durchgeführt??

An welcher Stelle kommen bei 3. PBSZ 0 und PROT P, sowie USER <user> und PASS <pw> ??

 

 

1. Session-Aufbau bei FTP mit TLS

 

..............Client.................................Server

.....control..........data...................data...............control

===============================================

 

................................................................socket()

................................................................bind()

.....socket()

.....connect()..---------------------------------------------->.accept()

...............<----------------------------------------------..220

.....AUTH.TLS...---------------------------------------------->

...............<----------------------------------------------..234

.....TLSneg()..<---------------------------------------------->.TLSneg()

.....PBSZ.0.....---------------------------------------------->

...............<----------------------------------------------..200

.....PROT.P.....---------------------------------------------->

...............<----------------------------------------------..200

.....USER.fred..---------------------------------------------->

...............<----------------------------------------------..331

.....PASS.pass..---------------------------------------------->

...............<----------------------------------------------..230

.....CCC ....---------------------------------------------->

...............<----------------------------------------------..200

.....TLSshutdown()..<------------------------------------->.TLSshutdown.()

 

###############################################

Link zu diesem Kommentar

2. Ein Standard-Transfer mit FTP (aktiv) ohne Sicherung durch TLS

 

..............Client.................................Server

.....control..........data...................data...............control

===============================================

 

......................socket()

......................bind()

.....PORT.w,x,y,z,a,b.----------------------------------------->

.........<-----------------------------------------------------.200

.....STOR.file.------------------------------------------------>

.............................................socket()

.............................................bind()

.........<-----------------------------------------------------.150

......................accept().<-----------..connect()

......................write()...----------->.read()

......................close()...----------->.close()

.........<-----------------------------------------------------.226

 

###############################################

 

3. Ein Standard-Transfer mit FTP.(aktiv) über TLS

 

..............Client.................................Server

.....control..........data...................data...............control

===============================================

 

......................socket()

......................bind()

.....PORT.w,x,y,z,a,b.-------------------------------------------->

.........<--------------------------------------------------------.200

.....STOR.file.--------------------------------------------------->

.............................................socket()

.............................................bind()

.........<--------------------------------------------------------.150

......................accept()..<----------..connect()

......................TLSneg()..<---------->.TLSneg()

......................TLSwrite().---------->.TLSread()

......................TLSshutdown().------->.TLSshutdown()

......................close()....---------->.close()

.........<--------------------------------------------------------.226

..............Client.................................Server

###############################################

 

 

Hat jemand ne Quelle, in der das nochmal genau und verständlich beschrieben ist?

Link zu diesem Kommentar

Es sind die Profis gefragt :)

 

*

An welcher Stelle kommen bei 1. STOR.file, RETR, LIST, ... also die ganzen Transferkommandos ??

 

*

Wird dann, wie in 3. gezeigt, für jedes neue Transferkommando ein eigener Datenkanal (also Client Socket bei aktiv-FTP) erstellt und jedesmal aufs neue eine Zertifikat prüfung (TLSneg) und Verschlüsselung durchgeführt??

 

*

An welcher Stelle kommen bei 3. PBSZ 0 und PROT P, sowie USER <user> und PASS <pw> ??

 

*

2 Frage: Der Zielserver, auf den die Daten mal hochgeladen werden sollen hat aus Sicherheitsgründen nur Port 21 offen, spricht also für aktives FTP. Ist der Aufbau des Steuerkanals unter FTPS unter diesen Voraussetzungen überhaupt möglich, da FTPS soweit ich weiß Port 990 für den Steuerkanal und Port 989 für den Datenkanal nutzt (stimmt das so?).

Oder kann man die FTP-Verbindung auch trotz Verschlüsselung über die FTP Ports 21, 20 laufen lassen?

Link zu diesem Kommentar
  • 2 Jahre später...

Moin,

tja, da wirst Du mit dem jeweiligen Betreiber des FTPS-Servers sprechen müssen, ob der die Range der Ports gibt die dynamisch genutzt werden.

Diese Portrange must Du dann in der FW freigeben. So etwas ist immer unschön! 

 

Optimal wäre es natürlich, wenn Du Dich mit dem Betreiber auf einen festen Port einigen kannst, über den der Transfer stattfindet. Dann must Du nur einen Port freigeben. Evtl. sollte man auch intern beschränken welcher User die Ports nutzen darf.

 

Gruß

Dirk

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...