FTP

FTP
Név Fájlátviteli protokoll
Szint ( az OSI modell szerint ) Alkalmazott
Család TCP/IP
Létrehozva: 1971
Port/ID 21/TCP a parancsokhoz, 20/TCP az adatokhoz, 49152-65534/TCP dinamikus
A protokoll célja Fájl átvitel
Leírás RFC 959
Főbb megvalósítások (kliensek) FTP kliensek összehasonlítása
Alapvető megvalósítások ( szerverek ) FTP szerverek összehasonlítása
Bővíthetőség Hozzáadás. csapatok
 Médiafájlok a Wikimedia Commons oldalon

Az FTP ( English  File Transfer Protocol ) egy hálózaton keresztüli fájlok átvitelére szolgáló protokoll, amely 1971-ben jelent meg jóval a HTTP és még a TCP/IP előtt is , ennek köszönhetően az egyik legrégebbi alkalmazási protokoll. Kezdetben az FTP az NCP protokollon [1] dolgozott , ma már széles körben használják szoftverterjesztésre és távoli gazdagépekhez való hozzáférésre . A TFTP -vel ellentétben ez egy kvótaprotokoll használatával garantálja az átvitelt (vagy hibát) .

A protokoll kliens-szerver architektúrára épül, és különböző hálózati kapcsolatokat használ a parancsok és adatok átvitelére a kliens és a szerver között. Az FTP-felhasználók a felhasználónév és a jelszó szöveges átadásával hitelesíthetnek , vagy ha a szerveren engedélyezett, névtelenül csatlakozhatnak. Használhatja az SSH protokollt biztonságos átvitelhez, amely titkosítja (elrejti) a felhasználónevet és a jelszót, valamint a fájl tartalmát.

Az első FTP-kliens alkalmazások az interaktív parancssori eszközök voltak , amelyek szabványos parancsokat és szintaxist valósítottak meg. Azóta számos ma használatos operációs rendszerhez fejlesztettek ki grafikus felhasználói felületet . Ezek az interfészek az általános webtervező programok, például a Microsoft Expression Web összetevőitől a speciális FTP-kliensekig, például a FileZilla -ig terjednek .

A protokoll leírása

Különbség a HTTP-től

Ingatlan FTP http
Munkamenetek alapján Igen Nem
Beépített felhasználói hitelesítés Igen Nem
Eredetileg átvitelre szánták Nagy binárisok kis szöveges fájlok
Csatlakozási modell Kettős csatlakozás Egyetlen csatlakozás
Támogatja a szöveges és bináris átviteli módokat Igen Nem
Támogatja az adatátviteli típusokat ( MIME fejlécek) Nem Igen
Támogatja a fájlrendszer műveleteit (mkdir, rm, átnevezés stb.) Igen Nem

Az FTP protokoll meglehetősen szembetűnő tulajdonsága, hogy több (legalább dupla) kapcsolatot használ. Ebben az esetben az egyik csatorna a vezérlőcsatorna, amelyen keresztül a szerverhez parancsok érkeznek, és válaszait visszaküldik (általában a 21-es TCP porton keresztül), a többien pedig ténylegesen az adatok továbbítása történik, minden átvitelhez egy csatorna. Így egy munkamenet keretein belül több fájl is átvihető egyidejűleg az FTP protokollon keresztül, és mindkét irányban. Minden adatcsatornához megnyílik a saját TCP portja, melynek számát az átviteli módtól függően vagy a szerver, vagy a kliens választja meg [2] .

Az FTP protokoll (mint a HTTP) bináris átviteli móddal rendelkezik, amely csökkenti a forgalom többletterhelését és az adatcsere idejét nagy fájlok átvitelekor.

Az FTP protokollon keresztüli munka megkezdésekor a kliens belép a munkamenetbe, és minden művelet ezen a munkameneten belül megtörténik (vagyis a szerver emlékszik az aktuális állapotra). A HTTP protokoll nem „emlékszik” semmire - feladata az adatok megadása és a felejtés, ezért a HTTP használatakor az állapot emlékezése a protokollon kívüli módszerekkel történik [2] .

Az FTP az OSI-modell alkalmazási rétegén működik, és TCP/IP használatával fájlok átvitelére szolgál . Ehhez egy FTP-kiszolgálónak futnia kell, és várnia kell a bejövő kérésekre. Az ügyfélszámítógép a 21-es porton tud kommunikálni a szerverrel. Ez a kapcsolat (vezérlési folyamat) nyitva marad a munkamenet időtartama alatt. A második kapcsolatot (adatfolyamot) vagy a szerver nyithatja meg a 20-as portról a megfelelő kliens portjára (aktív mód), vagy a kliens bármely portról a megfelelő szerver portjára (passzív mód), ami szükséges az adatállomány átviteléhez. A vezérlőfolyamat a munkamenettel való együttműködésre szolgál – például parancsok és jelszavak cseréje a kliens és a szerver között telnet-szerű protokoll használatával. Például a "RETR fájlnév" átviszi a megadott fájlt a szerverről a kliensre. A kétportos struktúra miatt az FTP sávon kívüli protokollnak számít, szemben a sávon belüli HTTP -vel .

Csatlakozás és adatátvitel

A protokollt az RFC 959 határozza meg . A kiszolgáló a vezérlőfolyamatra három karakteres ASCII-állapotkódokkal válaszol, opcionális szöveges üzenettel. Például a "200" (vagy "200 OK") azt jelenti, hogy az utolsó parancs sikeres volt. A számok a válaszkódot, a szöveg pedig a pontosítást vagy kérést jelenti. A folyamatban lévő adatfolyam átvitel megszakítható a vezérlőfolyamon keresztül küldött megszakítási üzenettel.

Az FTP működhet aktív vagy passzív módban, ami meghatározza a kapcsolat létrehozásának módját. Aktív módban a kliens vezérlő TCP kapcsolatot hoz létre a szerverrel, és elküldi az IP címét és egy tetszőleges kliens port számát a szervernek, majd megvárja, hogy a szerver ezzel a címmel és portszámmal TCP kapcsolatot indítson. Ha az ügyfél tűzfal mögött van, és nem tudja fogadni a bejövő TCP-kapcsolatot, akkor passzív mód használható. Ebben a módban a kliens egy vezérlési folyamat segítségével PASV-parancsot küld a szervernek, majd megkapja az IP-címét és a portszámát a szervertől, amelyeket aztán a kliens arra használ, hogy egy tetszőleges kliensportról adatfolyamot nyisson meg. a kapott címre és portra. Mindkét módot 1998 szeptemberében frissítették az IPv6 támogatására. Ezalatt az idő alatt további változások történtek a passzív módban, frissítve az Enhanced Passive Mode-ra.

Hálózaton keresztüli adatátvitel során négy adatábrázolás használható:

A szöveges fájlok esetében különféle vezérlőformátumok és rekordszerkezeti beállítások állnak rendelkezésre. Ezeket a szolgáltatásokat úgy tervezték, hogy Telnet vagy ASA formázást tartalmazó fájlokkal működjenek .

Az adatátvitel a három mód bármelyikében hajtható végre:

Hitelesítés

Az FTP-hitelesítés felhasználónév/jelszó sémát használ a hozzáférés biztosításához. A felhasználónév a USER paranccsal, a jelszó pedig a PASS paranccsal kerül elküldésre a szervernek. Ha a kiszolgáló elfogadja a kliens által megadott információkat, a szerver meghívót küld a kliensnek, és megkezdődik a munkamenet. Ha a kiszolgáló támogatja ezt a funkciót, a felhasználók hitelesítő adatok megadása nélkül jelentkezhetnek be , de a szerver csak korlátozott hozzáférést biztosít az ilyen munkamenetekhez.

Az FTP-szolgáltatást nyújtó gazdagép anonim FTP-hozzáférést biztosíthat. A felhasználók általában "anonim" felhasználónévvel jelentkeznek be (egyes FTP-szervereken megkülönböztetik a kis- és nagybetűket). Bár a felhasználókat általában az e- mail címük megadására kérik jelszó helyett, valójában nem történik ellenőrzés. Számos szoftverfrissítést biztosító FTP-gazda támogatja az anonim hozzáférést.

FTP-ALG

Különösen azért, hogy az FTP protokoll a tűzfalakon keresztül működjön , egy NAT kiterjesztést készítettek FTP-ALG néven , amely lehetővé teszi a bejövő kapcsolatok közvetítését a szerverről a kliensre NAT-on keresztül. Egy ilyen kapcsolat során az FTP-ALG kicseréli a kliensről továbbított adatokat, jelezve a szerver felé a valós címet és portot, amelyre a szerver csatlakozhat, majd a kapcsolatot a szerverről erről a címről a kliens felé a címére sugározza. Az FTP-protokoll támogatására tett összes intézkedés és újítás ellenére a gyakorlatban az FTP-ALG funkció általában minden útválasztóban és útválasztóban le van tiltva a vírusfenyegetések elleni további biztonság érdekében.

NAT és tűzfal bejárás

Az FTP általában akkor továbbít adatokat, amikor a szerver csatlakozik az ügyfélhez, miután az ügyfél elküldte a PORT parancsot. Ez problémát okoz mind a NAT , mind a tűzfalak számára , amelyek nem teszik lehetővé az internetről a belső gazdagépekhez való csatlakozást . A NAT esetében további problémát jelent, hogy a PORT parancsban az IP-címek és a portszám megjelenítése a nyilvános IP-cím és a NAT-port helyett a belső gazdagép IP-címére és portjára vonatkozik. Ennek a problémának két megközelítése van. Az első az, hogy az FTP-kliens és az FTP-kiszolgáló a PASV parancsot használja, amely a kliens és a kiszolgáló közötti adatkapcsolatot hívja meg. A második megközelítés a PORT parancs NAT-értékeinek megváltoztatása egy alkalmazásréteg-átjáró segítségével .

Történelem

A protokoll első implementációja (1971) egy fejlécből (72 bites) és változó hosszúságú adatokból álló üzenetek cseréjét biztosította a kliens és a szerver között. Az üzenet fejlécében szerepelt az FTP szerverhez intézett kérés vagy az onnan érkező válasz, a továbbított adatok típusa és hossza. A lekérdezési paraméterek (például az elérési út és a fájlnév), a szerverről származó információk (például egy könyvtárban lévő fájlok listája) és maguk a fájlok adatként kerültek átadásra. Így a parancsokat és az adatokat ugyanazon a csatornán továbbították.

1972 - ben  a protokoll teljesen megváltozott, és a modernhez közeli formát öltött. A parancsok paraméterekkel a kliens és a szerver válaszaiból TELNET kapcsolaton (vezérlő csatorna) keresztül kerülnek továbbításra, az adatátvitelhez külön kapcsolat (adatcsatorna) jön létre.

A későbbi kiadások hozzáadták a passzív módban történő munkavégzés lehetőségét, az FTP-kiszolgálók közötti fájlok átvitelét, bevezették az információszerzési parancsokat, az aktuális könyvtár megváltoztatását, a könyvtárak létrehozását és törlését, valamint a fájlok egyedi néven történő mentését. Egy ideig léteztek parancsok az e-mailek FTP-n keresztüli küldésére, de később ezeket kizárták a protokollból.

1980- ban  az FTP protokoll elkezdte használni a TCP -t . A protokoll utolsó verziója 1985-ben jelent meg. 1997-ben megjelent a protokoll kiegészítése, amely lehetővé teszi az információk titkosítását és aláírását a vezérlőcsatornában és az adatcsatornában. 1999-ben kiadtak egy protokoll nemzetköziesítési kiegészítést, amely UTF-8 kódolás használatát javasolja a kiszolgálóparancsokhoz és -válaszokhoz, és meghatároz egy új LANG parancsot, amely beállítja a válasznyelvet.

Webböngésző támogatás

A legtöbb elterjedt webböngésző le tudja kérni az FTP-kiszolgálókon található fájlokat, bár előfordulhat, hogy nem támogatják az olyan protokoll-kiterjesztéseket, mint az FTPS . Ha HTTP-cím helyett FTP-címet ad meg, a távoli szerveren elérhető tartalom a többi webtartalomhoz hasonlóan jelenik meg. Egy teljesen működőképes FTP-kliens a Firefoxban FireFTP -bővítményként futtatható .

2020-tól a Chrome böngészőt (és esetleg másokat is) teljesen megfosztják az FTP protokoll támogatásától. [3]

Szintaxis

Az FTP URI szintaxist az RFC 1738 írja le, a következő formában: ftp://[<felhasználónév>[:<jelszó>]@]<host>[:<port>]/<útvonal> (a szögletes zárójelben lévő paraméterek nem kötelezőek ). Például:

ftp://public.ftp-servers.example.com/mydirectory/myfile.txt  (downlink) (downlink)

vagy:

ftp://user001:titkos jelszó@private.ftp-szerverek.example.com/mydirectory/myfile.txt  (lefelé mutató hivatkozás) (lefelé mutató hivatkozás)

A felhasználónév és jelszó megadásával kapcsolatos további információkért tekintse meg a böngésző dokumentációját. Alapértelmezés szerint a legtöbb webböngésző passzív (PASV) módot használ, amely jobban megkerüli a végfelhasználói tűzfalakat.

Biztonság

Az FTP-t nem úgy tervezték, hogy biztonságos legyen (különösen a mai szabványok szerint), és számos biztonsági réssel rendelkezik. 1999 májusában az RFC 2577 szerzői a következő listára redukálták a sebezhetőséget:

Az FTP nem tudja titkosítani a forgalmát, minden átvitel tiszta szöveg, így a felhasználóneveket, jelszavakat, parancsokat és adatokat bárki elolvashatja, aki a hálózaton keresztül el tudja fogni a csomagot . Ez a probléma sok olyan internetprotokoll-specifikációra jellemző (beleértve az SMTP -t , Telnet -et, POP-t, IMAP-t), amelyeket a titkosítási mechanizmusok, például a TLS és az SSL kifejlesztése előtt fejlesztettek ki. A probléma szokásos megoldása a sebezhető protokollok "biztonságos", TLS-biztonságos verzióinak használata ( FTPS for FTP, TelnetS for Telnet stb.), vagy más biztonságosabb protokoll, például az SFTP / SCP , amely a Secure Shell protokoll legtöbb megvalósításához tartozik. .

Biztonságos FTP

Számos biztonságos fájlátviteli módszer létezik, amelyeket néha "Biztonságos FTP-nek" is neveznek.

FTPS

Az explicit FTPS az FTP-szabvány kiterjesztése, amely lehetővé teszi az ügyfelek számára, hogy megköveteljék az FTP-munkamenet titkosítását. Ez az "AUTH TLS" parancs elküldésével valósítható meg. A szerver képes engedélyezni vagy elutasítani azokat a kapcsolatokat, amelyek nem kérnek TLS-t. Ezt a protokollbővítményt az RFC 4217 specifikáció határozza meg . Az implicit FTPS egy elavult FTP-szabvány, amely SSL- vagy TLS-kapcsolat használatát igényli. Ez a szabvány a normál FTP-től eltérő portokat használ.

SFTP

Az SFTP vagy "SSH File Transfer Protocol" nem kapcsolódik az FTP-hez, kivéve, hogy fájlokat is továbbít, és hasonló parancskészlettel rendelkezik a felhasználók számára. Az SFTP vagy biztonságos FTP egy olyan program, amely SSH -t (Secure Shell) használ a fájlok átvitelére. A szabványos FTP-től eltérően a parancsokat és az adatokat egyaránt titkosítja, így megakadályozza a jelszavak és bizalmas információk nyílt továbbítását a hálózaton keresztül. Az SFTP működésében hasonló az FTP-hez, de mivel más protokollt használ, a szabványos FTP-kliensek nem tudnak kapcsolatba lépni az SFTP-kiszolgálóval, és fordítva.

FTP SSH-n keresztül (nem SFTP)

Az SSH-n keresztüli FTP (nem SFTP) a szokásos FTP-munkamenet SSH -kapcsolaton keresztüli alagútkezelésének gyakorlatára utal . Mivel az FTP több TCP-kapcsolatot használ, az SSH-n keresztüli alagútkezelés különösen nehéz. Amikor sok SSH-kliens megpróbálja átvezetni a vezérlőcsatornát (az eredeti "kliens-szerver" kapcsolatot a 21-es porton), csak az a csatorna lesz biztonságos; adatátvitelkor az FTP szoftver mindkét végén új TCP-kapcsolatokat (adatcsatornákat) hoz létre, amelyek megkerülik az SSH-kapcsolatot, és így elveszítik az integritásvédelmet .

Ellenkező esetben az SSH-ügyfélszoftvernek rendelkeznie kell némi FTP-ismerettel az FTP-vezérlőfolyamat-üzenetek figyeléséhez és átírásához, valamint önállóan nyithat új átirányításokat az FTP-adatfolyamhoz.

Ezt a módot támogató szoftvercsomagok:

Az SSH feletti FTP-t néha biztonságos FTP-nek is nevezik, de nem szabad összetéveszteni más módszerekkel, például az SSL/TLS-sel (FTPS). Az SSH-t használó és az FTP-hez nem kapcsolódó egyéb fájlátviteli módszerek az SFTP és az SCP . Mindegyikben mind a hitelesítő adatokat, mind a fájladatokat mindig az SSH protokoll védi.

Alapvető parancsok

FTP válaszkódok

Az alábbiakban az FTP- kiszolgáló által visszaküldhető válaszkódok rövid leírása található . Ezeket a kódokat az IETF szabványosította az RFC 959 -ben . Mint korábban említettük, a válaszkód egy háromjegyű szám. Az első számjegy a három kimenetel egyikéért felelős: siker, kudarc vagy hibajelzés, vagy hiányos válasz.

A második számjegy a hiba típusát adja meg:

A harmadik számjegy végül meghatározza a hibát.

Példa

A példában az ügyfél által adott parancsok félkövérrel vannak kiemelve; normál betűtípus - szerver üzenetek. A megjegyzéseket két perjel választja el:

220 FTP szerver készen áll. 220 Hello World! USER névtelen 331 Névtelen bejelentkezés rendben, küldje el a teljes e-mail címét jelszóként PASS************ 230 Névtelenül naplózva. PASV 227 Passzív módba lépés (192,168,254,253,233,92) //Az ügyfélnek kapcsolatot kell nyitnia a továbbított IP-címmel LISTA 150 Itt jön a könyvtár lista. // A szerver elküldi a fájlok listáját egy könyvtárba 226 Telefonkönyv küldése OK. CWD bejövő 250 A címtár sikeresen módosítva. PASV 227 Passzív módba lépés (192,168,254,253,207,56) STOR példa.avi 150 Ok az adatok küldéséhez. // A kliens elküldi a fájl tartalmát 226 Fájl fogadása OK. KILÉPÉS 221 Viszlát.

A 192,168,254,253,207,56 argumentum azt jelenti, hogy a 192.168.254.253 IP-című gazdagépen a 207-es porton << 8 + 56 = 53048 << 8 + 56 = 53048 az 56-os vagy a 207*256+56-os 1486=53-as ifibe írásához a szerverhez kell kapcsolódni).

Sok FTP-szerver rendelkezik egy írható könyvtárral (bejövő, feltöltés stb.) a fájlok szerverre való feltöltéséhez. Ez lehetővé teszi a felhasználók számára, hogy friss adatokkal töltsék fel a szervereket.

FXP

Az FXP ( File eXchange Protocol  ) a fájlok közvetlen átvitelének módja két FTP-kiszolgáló között, anélkül, hogy fájlokat kellene letöltenie  a felhasználó számítógépére. Egy FXP-munkamenet során a kliens két FTP-kapcsolatot nyit meg két különböző szerverrel, és fájlt kér az első szerveren, megadva a második szerver IP-címét a PORT parancsban.

Az FXP szabvány támogatásának kétségtelen előnye, hogy az egyik FTP-kiszolgálóról a másikra fájlokat másolni kívánó végfelhasználókra már nem vonatkoznak saját internetkapcsolatuk sávszélesség-korlátai. Nem kell saját magának letöltenie egy fájlt ahhoz, hogy később feltöltse egy másik FTP-kiszolgálóra. Így a fájlátviteli idő csak a két távoli FTP szerver közötti kapcsolat sebességétől függ, ami a legtöbb esetben nyilvánvalóan magasabb, mint a „felhasználóé”.

Az FXP-t a támadók más szerverek megtámadására kezdték használni: a PORT parancs megadja a megtámadott szolgáltatás IP-címét és portját az áldozat számítógépén, és a RETR/STOR parancsok ehhez a porthoz az FTP-szerver, nem pedig a támadó nevében érik el. gép, amely lehetővé tette nagyszabású DDoS támadások lebonyolítását egyszerre több FTP szerver használatával, vagy az áldozat számítógépének biztonsági rendszerének megkerülését, ha az csak a kliens IP-jének ellenőrzésére támaszkodik, és a támadáshoz használt FTP szerver egy megbízható hálózat vagy átjáró. Ennek eredményeként ma már szinte minden szerver ellenőrzi, hogy a PORT parancsban megadott IP-cím megegyezik-e az FTP-kliens IP-címével, és alapértelmezés szerint megtiltja ott harmadik féltől származó IP-címek használatát. Így az FXP használata nem lehetséges, ha nyilvános FTP-szerverekkel dolgozik.

Lásd még

Szerverek

Linkek

Jegyzetek

  1. A levél rövid története archiválva : 2008. március 27.
  2. 1 2 27. fejezet FTP szerver konfigurálása . Letöltve: 2017. április 17. Az eredetiből archiválva : 2017. június 3.
  3. A Chrome 82 teljesen elveszíti az FTP támogatását. Archivált 2019. augusztus 16. a Wayback Machine -nél // 3DNews , 2019.08.16.