SFTP és FTPS protokollok

Bevezető

Körülbelül egy héttel ezelőtt írtam egy dolgozatot a címben megjelölt témáról, és azt tapasztaltam, hogy, mondjuk úgy, a tudományos információk a neten nem igazán dúsak. Főként száraz tények és beállítási útmutatók találhatók. Ezért úgy döntöttem, hogy némileg módosítom a szöveget és publikálom cikként.

Mi az az FTP

Az FTP (File Transfer Protocol) – fájlátviteli protokoll az interneten. Egyike az Ethernet alap protokolljainak. 1971-ben jött létre, és eredetileg a DARPA hálózatokban működött. Jelenleg, akárcsak a HTTP, a fájlátvitel a TCP/IP (Transmission Control Protocol/Internet Protocol) protokollok halmazára épül. A RFC 959 határozza meg.

A protokoll a következőket határozza meg:

  • Hogyan történik a hibák ellenőrzése
  • Az adatok csomagolásának módja (ha csomagolásra szükség van)
  • Hogyan jelzi a küldő készülék, hogy befejezte az üzenetet
  • Hogyan jelzi a fogadó készülék, hogy megkapta az üzenetet

Kapcsolat a kliens és a szerver között

Nézzük meg részletesebben a FTP működésével kapcsolatos folyamatokat. A kapcsolatot a felhasználói protokoll értelmező inicializálja. Az adatforgalom irányítását a TELNET szabvány szerinti vezérlőcsatornán végzik. Az FTP parancsait a felhasználói protokoll értelmező generálja és továbbítja a szerverhez. A szerver válaszai szintén a vezérlőcsatornán keresztül érkeznek a felhasználóhoz. Általánosságban elmondható, hogy a felhasználó lehetőséget kap a szerver protokoll értelmezőjével való kapcsolattartásra más eszközökkel, mint a felhasználói protokoll értelmező.

Az FTP fő jellemzője, hogy kettős kapcsolaton alapul. Az egyik kapcsolat a szervernek küldött parancsok átadására szolgál, amely alapértelmezés szerint a 21-es TCP porton történik, de megváltoztatható. A vezérlő kapcsolat folyamatosan fennáll, amíg a kliens beszélget a szerverrel. A vezérlőcsatornát nyitva kell tartani, míg az adatok átvitele zajlik a gépek között. Az adatok átvitele leáll, ha ez a kapcsolat megszakad. A második kapcsolaton keresztül történik az adatok közvetlen átvitele. Ez minden alkalommal megnyílik, amikor fájlátvitel történik a kliens és a szerver között. Amennyiben egyszerre több fájp átvisznek, minden egyes fájlhoz külön átvitel nyílik.

Az FTP működhet aktív vagy passzív módban, attól függően, hogy melyik módot választjuk a kapcsolat létrehozásához. Aktív módban az ügyfél létrehoz egy irányító TCP-kapcsolatot a szerverrel, és elküldi a szervernek az IP-címét és egy véletlenszerű ügyfélportot, majd vár, amíg a szerver elindítja a TCP-kapcsolatot ezzel a címmel és portszámmal. Ha az ügyfél tűzfal mögött van, és nem tud bejövő TCP-kapcsolatot fogadni, akkor a passzív módot lehet használni. Ebben a módban az ügyfél a vezérlő csatornát használja, hogy parancsot küldjön a szervernek, majd megkapja a szervertől annak IP-címét és portszámát, amelyeket az ügyfél a saját véletlenszerű portjáról adatfolyam megnyitásához használ.

Előfordulhat olyan helyzet, amikor az adatok egy harmadik gépre kerülnek átvitelre. Ebben az esetben a felhasználó vezérlőcsatornát alakít ki két szerver közötti kapcsolattal, és közvetlen adatcsatornát szervez közöttük. A vezérlő parancsok a felhasználón keresztül mennek, míg az adatok közvetlenül a szerverek között.

Az adatok hálózaton történő átvitele során négyféle adatformátum használható:

  • ASCII – szöveg átvitelére használják. Az adatokat, ha szükséges, a küldő gépen karakterformátumból nyolcbites ASCII-ra konvertálják, majd (ha szükséges) a fogadó gép karakterformátumára. Különösen a sortörő karaktereket módosítják. Ennek következtében ez a mód nem alkalmas olyan fájlok átvitelére, amelyek nem csak sima szöveget tartalmaznak.
  • Bináris mód – a küldő eszköz byte-onként küldi el az egyes fájlokat, a fogadó pedig a bytefolyamot menti a fogadás során. Ennek a módnak a támogatása ajánlott minden FTP-implementáció számára.
  • EBCDIC – a normál szöveg EBCDIC kódolású átvitelére használják a gépek között. Egyébként ez a mód hasonló az ASCII-módhoz.
  • Helyi mód – lehetővé teszi, hogy két, azonos beállítású számítógép adatok küldését a saját formátumában végezze el ASCII-ba való konvertálás nélkül.

Az adatátvitel bármelyik három módban végrehajtható:

  • Folyamatos mód – az adatokat folyamatos adatfolyamként küldik el, mentesítve az FTP-t bármilyen feldolgozás végrehajtása alól. Ehelyett az összes feldolgozást a TCP végzi. A fájl végét jelző indikátor nem szükséges, kivéve az adatok rekordokra való felosztását.
  • Blokk üzemmód - az FTP az adatokat több blokkra osztja (fejléc blokk, byte-szám, adatmező), majd ezeket továbbítja a TCP-nek.
  • Tömörítési mód - az adatok egy algoritmus segítségével tömörülnek (általában a sorozatok hosszának kódolásával).

FTP szerver - olyan szerver, amely lehetővé teszi a fájlátviteli protokoll használatát. Különböző jellemzőkkel rendelkezik, amelyek megkülönböztetik a hagyományos webkiszolgálóktól:

  • Felhasználói autentikáció szükséges
  • Minden művelet a jelenlegi munkamenet keretein belül zajlik
  • Különböző műveletek végrehajtásának lehetősége a fájlrendszeren
  • Minden kapcsolatnak külön csatorna van fenntartva

FTP kliens - olyan program, amely lehetővé teszi a távoli szerverhez való csatlakozást FTP-n keresztül, és lehetőség van különböző műveletek végrehajtására a fájlrendszer elemeivel. A böngésző is lehet kliens, amelynek címsorába be kell írni a távoli szerveren található mappa vagy fájl címét, az URL általános blokkvázlatának megfelelően:

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

Azonban a webböngésző használata ilyen szempontból csak a fájlok megtekintésére vagy letöltésére korlátozódik. Az FTP teljes előnyeinek kihasználásához specializált szoftver használata ajánlott.

Az FTP autentikáció felhasználónév/jelszó sémát használ a hozzáférés biztosítására. A felhasználónevet a USER parancs küldi a szervernek, míg a jelszót a PASS parancs. Ha a kliens által megadott információt a szerver elfogadja, akkor a szerver meghívja a klienst, és elkezdődik a munkamenet. A felhasználók, ha a szerver támogatja ezt a lehetőséget, be tudnak lépni nélkülözve a hitelesítési adatokat, de a szerver csak korlátozott hozzáférést biztosíthat az ilyen munkamenetekhez.

A FTP szolgáltatást biztosító hoszt anonim hozzáférést is kínálhat az FTP-hez. A felhasználók általában "anonymous" néven (bizonyos FTP-szervereken lehet kis- és nagybetű érzékeny) jelentkeznek be. Habár gyakran kérik, hogy adják meg az e-mail címüket jelszó helyett, valójában nincs semmilyen ellenőrzés. Számos FTP-hoszt, amely szoftverfrissítéseket kínál, támogatja az anonim hozzáférést.

A protokoll séma

A kliens-szerver interakció az FTP-kapcsolat során a következő módon ábrázolható:

SFTP és FTPS protokollok

Biztonságos FTP

Az FTP eredetileg nem biztonságos kapcsolatra lett tervezve, mivel katonai objektumok és intézmények közötti kapcsolat fenntartására készült. Azonban az internet fejlődésével és elterjedésével a jogosulatlan hozzáférés veszélye sokszorosára nőtt. Felmerült a szükség a szerverek védelmére a különböző támadások ellen. 1999 májusában az RFC 2577 szerzői az alábbi sérülékenységeket gyűjtötték össze:

  • Rejtett támadások (bounce attacks)
  • Álcázott támadások (spoof attacks)
  • Bruteforce támadások (brute force attacks)
  • Csomagelfogás, sniffing (packet capture, sniffing)
  • Port ellopás (port stealing)

A normál FTP nem rendelkezik titkosítási lehetőséggel, így a felhasználónevek, jelszavak, parancsok és egyéb információk könnyen megszerezhetők a támadók által. A probléma megoldásának általános módja a "biztonságos", TLS-védett verziók használata (FTPS) vagy más, biztonságosabb protokoll, mint az SFTP/SCP, amelyet a Secure Shell protokoll többsége biztosít.

FTPS

Az FTPS (FTP + SSL) a szabványos fájlátviteli protokoll kiterjesztése, amely titkosított ülések létrehozását teszi lehetővé az SSL (Secure Sockets Layer — biztonságos socket szint) protokoll segítségével a funkcióján belül. Napjainkban a védelem a TLS (Transport Layer Security — szállítási szintű védelem) fejlettebb analógjával biztosított.

SSL

Az SSL protokollt a Netscape Communications ajánlotta 1996-ban az internetkapcsolatok biztonsága és titkossága érdekében. A protokoll támogatja a kliens és a szerver azonosítását, nem függ az alkalmazásoktól és átlátszó a HTTP, FTP és Telnet protokollok számára.

Az SSL kézfogás protokoll két lépésből áll: a szerver azonosítása és az opcionális kliens azonosítása. Az első lépésben a szerver a kliens kérésére válaszolva elküldi a tanúsítványát és a titkosítási paramétereket. Ezután a kliens generál egy mesterkulcsot, titkosítja azt a szerver nyilvános kulcsával, és elküldi a szervernek. A szerver a saját privát kulcsával dekódolja a mesterkulcsot, és megerősíti a hitelességét a kliensnek, visszaküldve neki egy üzenetet, amelyet a kliens mesterkulcsa hitelesít.

A következő adatok titkosítva és a fő kulcs alapján generált kulcsokkal ellátva kerülnek érvényesítésre. A második lépés, amely nem kötelező, a szerver kérést küld a kliensnek, a kliens pedig a saját digitális aláírását és a nyilvános kulcsú tanúsítványát visszaküldve megerősíti a szerver hitelességét.

Az SSL különböző kriptográfiai algoritmusokat támogat. A kapcsolat során RSA nyilvános kulcsú kriptoszisztémát használnak. A kulcsok cseréje után többféle titkosítót is használnak: RC2, RC4, IDEA, DES és TripleDES. Továbbá az MD5 is használatban van, amely a hírek üzeneteinek létrehozásához szükséges algoritmus. A nyilvános kulcsú tanúsítványok szintaxisa az X.509-ben van leírva.

Az SSL egyik jelentős előnye a teljes programplatform-függetlensége. A protokoll a hordozhatóság elvein alapul, és az az ideológia, amely szerint felépítették, nem függ attól az alkalmazástól, amelyben használják. Ezenkívül fontos, hogy az SSL protokolra más protokollok is transparensen rakhatók; vagy a célzott információs folyamatok védelmének fokozása érdekében, vagy az SSL kriptográfiai képességeinek adaptálása érdekében egy másik, meghatározott felahoz.

SSL-kapcsolat

SFTP és FTPS protokollok

Az SSL biztosított csatornájának három alapvető tulajdonsága van:

  • A csatorna privát. A titkosítást az összes üzenet esetében alkalmazzák, miután egyszeri párbeszéd formájában meghatározták a titkos kulcsot.
  • A csatorna hitelesített. A párbeszéd szerver oldala mindig hitelesítve van, míg a kliens oldali hitelesítés opcionális.
  • A csatorna megbízható. Az üzenetek továbbítása integritásellenőrzéssel történik (MAC bevonásával).

FTPS jellemzői

Kétféle FTPS megvalósítás létezik, amelyek különböző biztonsági megoldásokat alkalmaznak:

  • A rejtett módszer a standard SSL protokollt alkalmazza, ahol a session létrehozása előtt történik az adatküldés, ami viszont megsérti a kompatibilitást a szokásos FTP kliensekkel és szerverekkel. A FTPS-t nem támogató kliensek számára a vezérlő kapcsolat TCP-portot (990) használ, míg az adatátvitelhez (989) portot. Ez lehetővé teszi, hogy a szokásos 21-es port az FTP protokoll számára megmaradjon. Ezt a módszert elavultnak tekintik.
  • Az explicit mód sokkal kényelmesebb, mivel a standard FTP parancsokat használja, de a válaszként titkosítja az adatokat, így ugyanazt a vezérlőkapcsolatot használja FTP és FTPS esetén is. Az ügyfélnek kifejezetten kérnie kell a biztonságos adatátvitelt a szervertől, majd jóvá kell hagynia a titkosítás módját. Ha az ügyfél nem kér biztonságos átvitelt, az FTPS szervernek joga van megőrizni vagy lezárni a nem biztonságos kapcsolatot. Az azonosítás és az adatok védelme mechanizmusát az RFC 2228 határozta meg, amely egy új FTP parancsot, az AUTH-ot tartalmaz. Bár ez a szabvány nem határoz meg explicitly védelmi mechanizmusokat, arra kötelezi az ügyfelet, hogy a fenti algoritmusok segítségével indítson biztonságos kapcsolatot. Ha a szerver nem támogatja a biztonságos kapcsolatokat, akkor 504-es hibakódot kell visszaadni. Az FTPS ügyfelek információkat kaphatnak a szerver által támogatott védelmi protokollokról az FEAT parancs segítségével, azonban a szerver nem kötelezhető arra, hogy felfedje, milyen biztonsági szinteket támogat. A legismertebb FTPS parancsok az AUTH TLS és AUTH SSL, amelyek a TLS és SSL védelmét biztosítják.

SFTP

Az SFTP (Secure File Transfer Protocol) – fájlok átvitelére szolgáló alkalmazási szintű protokoll, amely biztonságos csatorna felett működik. Ne keverjük össze a (Simple File Transfer Protocol) néven ismert, hasonló rövidítéssel. Míg az FTPS pusztán az FTP kiterjesztése, az SFTP egy különálló és azzal nem összefüggő protokoll, amely az SSH (Secure Shell – biztonságos héj) alapját használja.

Secure Shell

A protokollt az IETF egyik Secsh nevű csoportja fejlesztette ki. Az új SFTP protokollhoz írt munkadokumentáció nem vált hivatalos szabvánnyá, de aktívan alkalmazni kezdték az alkalmazások fejlesztésében. Később hat verziót adtak ki a protokollból. Azonban a funkcionalitás fokozatos növelése oda vezetett, hogy 2006. augusztus 14-én úgy döntöttek, hogy beszüntetik a protokoll fejlesztését, mivel a projekt fő célját (az SSH fejlesztését) teljesítették, és nem állt rendelkezésre elegendő szintű szaktudás a távoli fájlrendszer protokolljának kifejlesztéséhez.

Az SSH egy hálózati protokoll, amely lehetővé teszi a távoli operációs rendszer vezérlését és a TCP-kapcsolatok alagútba helyezését (például fájlok átvitelére). Funkcionalitásában hasonló a Telnet és rlogin protokollokhoz, de ezzel ellentétben titkosítja a teljes forgalmat, beleértve az átadott jelszavakat is. Az SSH különböző titkosítási algoritmusok kiválasztását teszi lehetővé. Az SSH-ügyfelek és SSH-szerverek a legtöbb hálózati operációs rendszerhez elérhetőek.

Az SSH biztonságosan képes küldeni szinte bármely más hálózati protokollt védtelen környezetben. Így nemcsak távolról dolgozhatunk számítógépeken parancssori felületen, hanem hang- vagy videófolyamot is továbbíthatunk titkosított csatornán (például webkameráról). Az SSH a továbbított adatok tömörítését is megengedi a további titkosítás érdekében, ami kényelmes, például az X WindowSystem ügyfeleinek távoli indításához.

A protokoll első verzióját, az SSH-1-et 1995-ben Tatu Ylönen, a Helsingi Műszaki Egyetem kutatója fejlesztette ki. Az SSH-1-et azért írták, hogy nagyobb magánéletet biztosítson, mint a rlogin, telnet és rsh protokollok. 1996-ban egy biztonságosabb verzió, az SSH-2 került kifejlesztésre, amely nem volt kompatibilis az SSH-1-el. A protokoll egyre népszerűbbé vált, és 2000-re körülbelül kétmillió felhasználóval rendelkezett. Ma az „SSH” kifejezés általában az SSH-2-t jelenti, mivel az első verzió jelentős hiányosságai miatt ma már szinte nem alkalmazzák. 2006-ban a protokollt az IETF munkacsoportja internetes szabványként hagyta jóvá.

Két elterjedt SSH-implementáció létezik: egy privát kereskedelmi és egy ingyenes szabad. Az ingyenes implementációt OpenSSH-nak hívják. 2006-ra az interneten lévő számítógépek 80%-a OpenSSH-t használt. A privát implementációt a SSH Communications Security fejleszti, amely a Tectia Corporation 100%-os leányvállalata, és ingyenes a nem kereskedelmi felhasználásra. Ezek az implementációk gyakorlatilag azonos parancssort tartalmaznak.

Az SSH-2 protokoll, ellentétben a telnet protokollal, ellenáll a forgalom lehallgatására irányuló támadásoknak („sniffing”), de nem védett az „ember a középen” támadások ellen. Az SSH-2 protokoll szintén ellenáll a session hijacking típusú támadásoknak, mivel lehetetlen csatlakozni egy már létrejött session-höz vagy azt elfogni.

Az „ember a középen” támadások megelőzése érdekében, amikor egy olyan hosthoz csatlakozik a kliens, amelynek kulcsa még nem ismert, a kliens szoftver megjeleníti a felhasználónak a „kulcssablont” (angolul: key fingerprint). Ajánlott alaposan ellenőrizni a kliens szoftver által megjelenített „kulcssablont” a szerver kulcssablonjaival, lehetőleg megbízható kommunikációs csatornákon keresztül vagy személyesen.

Az SSH támogatása minden UNIX-szerű rendszerben megvalósult, és a legtöbbjükben a szabványos segédprogramok között megtalálható a ssh kliens és szerver. Számos SSH-kliens megvalósítás létezik nem UNIX operációs rendszerekhez is. A protokoll népszerűségét az indokolja, hogy széles körben elterjedtek a forgalom elemzők és a helyi hálózatok működésének megszakításának módjai, mint alternatíva a nem biztonságos Telnet protokollra a fontos csomópontok irányításához.

Kapcsolat SSH használatával

SSH használatához SSH-szerverre és SSH-kliensre van szükség. A szerver figyeli a kliensgépektől érkező kapcsolódásokat, és a kapcsolat létrejöttekor végrehajtja az azonosítást, majd megkezdi a kliens kiszolgálását. A kliens távoli gépre való belépésre és parancsok végrehajtására szolgál.

SFTP és FTPS protokollok

Összehasonlítás az FTPS-sel

A legfőbb különbség az SFTP és a hagyományos FTP és FTPS között az, hogy az SFTP teljes mértékben titkosít minden parancsot, felhasználónevet, jelszót és egyéb bizalmas információt.

Mindkét protokoll, az FTPS és az SFTP, aszimmetrikus algoritmusok kombinációját (RSA, DSA), szimmetrikus algoritmusokat (DES/3DES, AES, Twhofish stb.) és kulcscserélő algoritmusokat használ. Az FTPS (vagy pontosabban, az SSL/TLS a FTP protokollon) X.509 tanúsítványokat használ az azonosításhoz, míg az SFTP (SSH protokoll) SSH kulcsokat alkalmaz.

Az X.509 tanúsítvány tartalmaz egy nyilvános kulcsot és néhány információt a tanúsítvány tulajdonosáról. Ez az információ lehetővé teszi a tanúsítvány hitelességének, épségének és a tanúsítvány tulajdonosának ellenőrzését. Az X.509 tanúsítványhoz tartozik egy megfelelő magánkulcs, amely általában a biztonságos tárolás érdekében külön van tárolva a tanúsítványtól.

Az SSH kulcs csak a nyilvános kulcsot tartalmazza (a megfelelő privát kulcs külön tárolódik). Nem tartalmaz semmilyen információt a kulcs tulajdonosáról. Néhány SSH implementáció X.509 tanúsítványokat használ az azonosításhoz, de valójában nem ellenőrzik az egész tanúsítványsorozatot — csak a nyilvános kulcs kerül felhasználásra (ami így az azonosítást hiányossá teszi).

Zárás

Az FTP protokoll kétségtelenül fontos szerepet játszik az információ tárolásában és terjesztésében az interneten, mal eltelt sok idő. Ez egy kényelmes, multifunkcionális és szabványosított protokoll. Számos fájlarchívum épül rá, amelyek nélkül a technikai munka nem lenne annyira hatékony. Továbbá, könnyen beállítható, és szerver és kliens programok gyakorlatilag minden releváns és kevéssé használt platformra léteznek.

Ezek védett verziói megoldják a tárolt és átadott adatok magánéletének problémáját a modern világban. Mindkét új protokollnak vannak előnyei és hátrányai, és kissé eltérő szerepet töltenek be. Azokban a területekben, ahol kifejezetten fájlarchívumra van szükség, a FTPS előnyösebb, különösen, ha korábban klasszikus FTP-t használtak. Az SFTP kevésbé elterjedt, mivel nem kompatibilis a régi protokollal, de biztonságosabb, és nagyobb funkcionalitással rendelkezik, mivel a távoli vezérlési rendszer része.

Irodalomjegyzék

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster