FTP | |
---|---|
Nimi | File Transfer Protocol |
Taso ( OSI-mallin mukaan ) | Sovellettu |
Perhe | TCP/IP |
Luotu vuonna | 1971 |
Portti/ID | 21/TCP komennoille, 20/TCP datalle, 49152-65534/TCP dynaaminen |
Protokollan tarkoitus | Tiedostonsiirto |
Erittely | RFC 959 |
Tärkeimmät toteutukset (asiakkaat) | FTP-asiakkaiden vertailu |
Ydintoteutukset ( palvelimet ) | FTP-palvelimien vertailu |
Laajennettavuus | Lisätä. joukkueet |
Mediatiedostot Wikimedia Commonsissa |
FTP ( englanninkielinen File Transfer Protocol ) on protokolla tiedostojen siirtämiseen verkon kautta , joka ilmestyi vuonna 1971 kauan ennen HTTP :tä ja jopa ennen TCP/IP :tä, minkä ansiosta se on yksi vanhimmista sovellusprotokollista. Aluksi FTP toimi NCP -protokollan [1] päällä , nykyään sitä käytetään laajasti ohjelmistojen jakeluun ja etäisäntien käyttöön . Toisin kuin TFTP , se takaa lähetyksen (tai virheen) käyttämällä kiintiöprotokollaa .
Protokolla on rakennettu asiakas-palvelin- arkkitehtuurille ja käyttää erilaisia verkkoyhteyksiä komentojen ja tietojen siirtämiseen asiakkaan ja palvelimen välillä. FTP-käyttäjät voivat todentaa antamalla käyttäjätunnuksen ja salasanan tekstimuodossa tai, jos palvelimella sallitaan, he voivat muodostaa yhteyden anonyymisti. Voit käyttää SSH-protokollaa suojattuun siirtoon, joka salaa (piilottaa) käyttäjätunnuksen ja salasanan sekä tiedoston sisällön.
Ensimmäiset FTP-asiakassovellukset olivat interaktiivisia komentorivityökaluja , jotka toteuttivat vakiokomentoja ja -syntaksia. Siitä lähtien graafisia käyttöliittymiä on kehitetty moniin nykyisin käytössä oleviin käyttöjärjestelmiin. Nämä käyttöliittymät vaihtelevat yleisen web-suunnitteluohjelman osista, kuten Microsoft Expression Web , erikoistuneisiin FTP-asiakkaisiin, kuten FileZilla .
Omaisuus | FTP | http |
---|---|---|
Työtuntien perusteella | Joo | Ei |
Sisäänrakennettu käyttäjän todennus | Joo | Ei |
Alunperin tarkoitettu lähetettäväksi | Suuret binaarit | pieniä tekstitiedostoja |
Kytkentämalli | Kaksoisliitäntä | Yksittäinen yhteys |
Tukee teksti- ja binäärisiirtotiloja | Joo | Ei |
Tukee siirtotietotyyppejä ( MIME- otsikot) | Ei | Joo |
Tukee tiedostojärjestelmän toimintoja (mkdir, rm, uudelleennimeäminen jne.) | Joo | Ei |
FTP-protokollan melko silmiinpistävä ominaisuus on, että se käyttää useita (ainakin kaksinkertaisia) yhteyksiä. Tässä tapauksessa yksi kanava on ohjauskanava, jonka kautta komennot vastaanotetaan palvelimelle ja sen vastaukset palautetaan (yleensä TCP-portin 21 kautta), ja tiedot itse asiassa välitetään muun kautta, yksi kanava jokaista lähetystä kohti. Siksi yhden istunnon puitteissa voidaan siirtää useita tiedostoja samanaikaisesti FTP-protokollan kautta ja molempiin suuntiin. Kullekin datakanavalle avataan oma TCP-portti, jonka numeron valitsee joko palvelin tai asiakas, riippuen lähetystilasta [2] .
FTP-protokollassa (kuten HTTP:ssä) on binäärisiirtotila , joka vähentää liikennettä ja tiedonsiirtoaikaa suuria tiedostoja siirrettäessä.
Aloittaessaan työn FTP-protokollan kautta asiakas siirtyy istuntoon ja kaikki toiminnot suoritetaan tämän istunnon aikana (toisin sanoen palvelin muistaa nykyisen tilan). HTTP-protokolla ei "muista" mitään - sen tehtävänä on antaa tietoja ja unohtaa, joten tilan muistaminen HTTP:tä käytettäessä suoritetaan protokollan ulkopuolisilla menetelmillä [2] .
FTP toimii OSI-mallin sovelluskerroksessa ja sitä käytetään tiedostojen siirtämiseen TCP/IP :tä käyttäen . Tätä varten FTP-palvelimen on oltava käynnissä ja odottaa saapuvia pyyntöjä. Asiakastietokone voi kommunikoida palvelimen kanssa portissa 21. Tämä yhteys (ohjauskulku) pysyy auki koko istunnon ajan. Toinen yhteys (datavirta) voidaan avata joko palvelimella portista 20 vastaavan asiakkaan porttiin (aktiivinen tila) tai asiakkaan toimesta mistä tahansa portista vastaavan palvelimen porttiin (passiivinen tila), joka on tarvitaan datatiedoston siirtämiseen. Ohjauskulkua käytetään työskentelyyn istunnon kanssa - esimerkiksi komentojen ja salasanojen vaihto asiakkaan ja palvelimen välillä telnet-tyyppistä protokollaa käyttäen. Esimerkiksi "RETR filename" siirtää määritetyn tiedoston palvelimelta asiakkaalle. Tämän kaksiporttisen rakenteen vuoksi FTP:tä pidetään kaistan ulkopuolisena protokollana, toisin kuin kaistansisäinen HTTP .
Protokolla on määritelty RFC 959 :ssä . Palvelin vastaa ohjausvuon kolmimerkkisillä ASCII-tilakoodeilla valinnaisella tekstiviestillä. Esimerkiksi "200" (tai "200 OK") tarkoittaa, että viimeinen komento onnistui. Numerot edustavat vastauskoodia ja teksti selvennystä tai pyyntöä. Meneillään oleva datavirran lähetys voidaan keskeyttää ohjausvirran kautta lähetetyllä keskeytysviestillä.
FTP voi toimia aktiivisessa tai passiivisessa tilassa, mikä määrittää, kuinka yhteys muodostetaan. Aktiivitilassa asiakas luo ohjaus-TCP-yhteyden palvelimeen ja lähettää palvelimelle IP-osoitteensa ja mielivaltaisen asiakasporttinumeron, minkä jälkeen se odottaa palvelimen aloittavan TCP-yhteyden tällä osoitteella ja porttinumerolla. Jos asiakas on palomuurin takana eikä voi hyväksyä saapuvaa TCP-yhteyttä, passiivista tilaa voidaan käyttää. Tässä tilassa asiakas käyttää ohjausvirtaa PASV-komennon lähettämiseen palvelimelle ja vastaanottaa sitten IP-osoitteensa ja porttinumeronsa palvelimelta, joita asiakas käyttää sitten avatakseen tietovirran mielivaltaisesta asiakasportista. vastaanotettuun osoitteeseen ja porttiin. Molemmat tilat päivitettiin syyskuussa 1998 tukemaan IPv6:ta. Tänä aikana passiiviseen tilaan tehtiin lisää muutoksia, jolloin se päivitettiin Enhanced Passive Mode -tilaan.
Kun dataa siirretään verkon yli, voidaan käyttää neljää tiedon esitystapaa:
Tekstitiedostoille tarjotaan erilaisia ohjausmuotoja ja tietuerakenneasetuksia. Nämä ominaisuudet on suunniteltu toimimaan Telnet- tai ASA-muotoilua sisältävien tiedostojen kanssa.
Tiedonsiirto voidaan suorittaa missä tahansa kolmesta tilasta:
FTP-todennus käyttää käyttäjätunnus-/salasanamallia pääsyn myöntämiseen. Käyttäjätunnus lähetetään palvelimelle USER-komennolla ja salasana lähetetään PASS-komennolla. Jos palvelin hyväksyy asiakkaan antamat tiedot, palvelin lähettää asiakkaalle kutsun ja istunto alkaa. Jos palvelin tukee tätä ominaisuutta, käyttäjät voivat kirjautua sisään antamatta tunnistetietoja , mutta palvelin voi myöntää vain rajoitetun käyttöoikeuden tällaisille istunnoille.
FTP-palvelun tarjoava isäntä voi tarjota anonyymin FTP-käytön. Käyttäjät kirjautuvat yleensä sisään "anonyymi" (joissakin FTP-palvelimissa voi olla isot ja pienet kirjaimet erotteleva) käyttäjänimellään. Vaikka käyttäjiä pyydetään yleensä antamaan sähköpostiosoitteensa salasanan sijaan, varmennusta ei tehdä. Monet ohjelmistopäivityksiä tarjoavat FTP-isännät tukevat anonyymiä pääsyä.
Erityisesti FTP-protokollan toimimiseksi palomuurien läpi tehtiin NAT -laajennus , nimeltään FTP-ALG , jonka avulla voit lähettää saapuvia yhteyksiä palvelimelta asiakkaalle NAT:n kautta. Tällaisen yhteyden aikana FTP-ALG korvaa asiakkaalta lähetetyt tiedot, ilmoittaen palvelimelle todellisen osoitteen ja portin, johon palvelin voi muodostaa yhteyden, ja lähettää sitten yhteyden palvelimelta tästä osoitteesta asiakkaalle sen osoitteeseen. Kaikista FTP-protokollaa tukevista toimenpiteistä ja innovaatioista huolimatta käytännössä FTP-ALG-toiminto on yleensä poistettu käytöstä kaikissa reitittimissä ja reitittimissä lisäsuojauksen aikaansaamiseksi virusuhkia vastaan.
FTP yleensä siirtää tietoja, kun palvelin on yhteydessä asiakkaaseen, sen jälkeen kun asiakas on lähettänyt PORT-komennon. Tämä aiheuttaa ongelmia sekä NAT :lle että palomuurille , jotka eivät salli yhteyksiä Internetistä sisäisiin isänteihin . NAT:lle lisäongelmana on, että IP-osoitteiden ja portin numeron esitys PORT-komennossa viittaa sisäisen isännän IP-osoitteeseen ja porttiin julkisen IP-osoitteen ja NAT-portin sijaan. Tähän ongelmaan on olemassa kaksi lähestymistapaa. Ensimmäinen on, että FTP-asiakas ja FTP-palvelin käyttävät PASV-komentoa, joka kutsuu asiakkaalta palvelimelle muodostetun datayhteyden. Toinen tapa on muuttaa PORT-komennon NAT-arvoja sovelluskerroksen yhdyskäytävän avulla .
Protokollan ensimmäinen toteutus (1971) tarjosi viestien vaihdon asiakkaan ja palvelimen välillä, jotka koostuivat otsikosta (72 bittiä) ja muuttuvan pituisista tiedoista. Viestin otsikko sisälsi pyynnön FTP-palvelimelle tai sen vastauksen, lähetetyn tiedon tyypin ja pituuden. Tietona välitettiin kyselyparametrit (esimerkiksi polku ja tiedoston nimi), palvelimen tiedot (esimerkiksi luettelo hakemiston tiedostoista) ja itse tiedostot. Siten komennot ja tiedot lähetettiin saman kanavan kautta.
Vuonna 1972 protokollaa muutettiin täysin ja se sai muodon, joka on lähellä nykyaikaista. Asiakkaan ja palvelimen vastauksista tulevat komennot parametreineen välitetään TELNET - yhteyden (ohjauskanavan) kautta, tiedonsiirtoa varten luodaan erillinen yhteys (datakanava).
Myöhemmät versiot lisäsivät mahdollisuuden työskennellä passiivisessa tilassa, siirtää tiedostoja FTP-palvelimien välillä, ottamalla käyttöön komennot tietojen hankkimiseksi, nykyisen hakemiston muuttamiseen, hakemistojen luomiseen ja poistamiseen, tiedostojen tallentamiseen ainutlaatuisella nimellä. Jonkin aikaa oli olemassa komentoja sähköpostin lähettämiseen FTP:n kautta, mutta myöhemmin ne jätettiin protokollan ulkopuolelle.
Vuonna 1980 FTP-protokolla alkoi käyttää TCP :tä . Protokollan viimeinen versio julkaistiin vuonna 1985. Vuonna 1997 protokollaan ilmestyi lisäys, jonka avulla voit salata ja allekirjoittaa tietoja ohjauskanavassa ja datakanavassa. Vuonna 1999 julkaistiin protokollan kansainvälistymislisäosa, joka suosittelee UTF-8- koodauksen käyttöä palvelinkomentoille ja -vastauksille ja määrittelee uuden LANG-komennon, joka määrittää vastauskielen.
Yleisimmät verkkoselaimet voivat noutaa FTP-palvelimilla olevia tiedostoja, vaikka ne eivät välttämättä tue protokollalaajennuksia, kuten FTPS . Kun FTP-osoite määritetään HTTP-osoitteen sijaan, etäpalvelimen saatavilla oleva sisältö esitetään samalla tavalla kuin muu verkkosisältö. Täysin toimiva FTP-asiakas voidaan ajaa Firefoxissa FireFTP - laajennuksena .
Vuodesta 2020 alkaen Chrome-selain (ja mahdollisesti muut) menetetään kokonaan tuesta FTP-protokollalle. [3]
SyntaksiFTP URI -syntaksi on kuvattu RFC 1738:ssa muodossa: ftp://[<käyttäjänimi>[:<salasana>]@]<isäntä>[:<portti>]/<polku> (hakasulkeissa olevat parametrit ovat valinnaisia ). Esimerkiksi:
ftp://public.ftp-servers.example.com/mydirectory/myfile.txt (downlink) (downlink)
tai:
ftp://user001:[email protected]/mydirectory/myfile.txt (downlink) (downlink)
Lisätietoja käyttäjätunnuksen ja salasanan määrittämisestä on selaimen ohjeissa. Oletuksena useimmat verkkoselaimet käyttävät passiivista (PASV) tilaa, joka ohittaa paremmin loppukäyttäjien palomuurit.
FTP:tä ei ole suunniteltu turvalliseksi (etenkään nykystandardien mukaan), ja siinä on lukuisia tietoturva-aukkoja. Toukokuussa 1999 RFC 2577 :n tekijät vähensivät haavoittuvuudet seuraavaan ongelmaluetteloon:
FTP ei voi salata liikennettä, kaikki lähetykset ovat selkeää tekstiä, joten käyttäjätunnukset, salasanat, komennot ja tiedot voivat lukea kuka tahansa, joka voi siepata paketin verkon kautta. Tämä ongelma on yhteinen monille Internet-protokollan määrityksille (mukaan lukien SMTP , Telnet , POP, IMAP), jotka on kehitetty ennen salausmekanismien, kuten TLS ja SSL, kehittämistä. Tavallinen ratkaisu tähän ongelmaan on käyttää "suojattuja", TLS-suojattuja versioita haavoittuvista protokollista ( FTPS FTP:lle, TelnetS Telnetille jne.) tai muuta turvallisempaa protokollaa, kuten SFTP / SCP , joka toimitetaan useimpien Secure Shell -protokollan toteutusten mukana. .
On olemassa useita suojattuja tiedostonsiirtomenetelmiä, joita joskus kutsutaan "Suojatuksi FTP:ksi".
Explicit FTPS on FTP-standardin laajennus, jonka avulla asiakkaat voivat vaatia FTP-istunnon salausta. Tämä toteutetaan lähettämällä "AUTH TLS" -komento. Palvelimella on mahdollisuus sallia tai hylätä yhteydet, jotka eivät pyydä TLS:ää. Tämä protokollalaajennus on määritelty RFC 4217 -spesifikaatiossa . Implisiittinen FTPS on vanhentunut FTP-standardi, joka edellyttää SSL- tai TLS-yhteyden käyttöä. Tämä standardi oli käyttää eri portteja kuin normaali FTP.
SFTP tai "SSH File Transfer Protocol" ei liity FTP:hen, paitsi että se myös siirtää tiedostoja ja sisältää samanlaisia komentoja käyttäjille. SFTP tai suojattu FTP on ohjelma, joka käyttää SSH :ta (Secure Shell) tiedostojen siirtoon. Toisin kuin tavallinen FTP, se salaa sekä komennot että tiedot estäen salasanojen ja arkaluonteisten tietojen välittämisen avoimesti verkon yli. SFTP on toiminnaltaan samanlainen kuin FTP, mutta koska se käyttää eri protokollaa, tavalliset FTP-asiakkaat eivät voi ottaa yhteyttä SFTP-palvelimeen ja päinvastoin.
FTP SSH:n yli (ei SFTP) viittaa käytäntöön tunneloida tavallinen FTP-istunto SSH - yhteyden kautta. Koska FTP käyttää useita TCP-yhteyksiä, tunnelointi SSH:n yli on erityisen vaikeaa. Kun monet SSH-asiakkaat yrittävät tunneloida ohjauskanavaa (alkuperäinen "asiakas-palvelin"-yhteys portissa 21), vain tämä kanava suojataan; siirrettäessä tietoja molemmissa päissä oleva FTP-ohjelmisto muodostaa uusia TCP-yhteyksiä (tietokanavia), jotka ohittavat SSH-yhteyden ja menettävät siten eheyssuojauksen .
Muussa tapauksessa SSH-asiakasohjelmistolla on oltava FTP-tietoa, jotta se voi valvoa ja kirjoittaa uudelleen FTP-ohjausvirtasanomia ja avata itsenäisesti uusia uudelleenohjauksia FTP-tietovirralle.
Tätä tilaa tukevat ohjelmistopaketit:
FTP yli SSH:n kutsutaan joskus suojatuksi FTP:ksi, mutta sitä ei pidä sekoittaa muihin menetelmiin, kuten SSL/TLS:ään (FTPS). Muita SSH:ta käyttäviä tiedostonsiirtomenetelmiä, jotka eivät liity FTP:hen, ovat SFTP ja SCP . Jokaisessa niistä sekä tunnistetiedot että tiedostotiedot on aina suojattu SSH-protokollalla.
Alla on lyhyt kuvaus vastauskoodeista, jotka FTP- palvelin voi palauttaa . IETF on standardoinut nämä koodit RFC 959 :ssä . Kuten aiemmin mainittiin, vastauskoodi on kolminumeroinen luku. Ensimmäinen numero vastaa yhdestä kolmesta lopputuloksesta: onnistuminen, epäonnistuminen tai osoitus virheestä tai epätäydellinen vastaus.
Toinen numero määrittää virheen tyypin:
Kolmas numero lopulta määrittää virheen.
Esimerkissä asiakkaan antamat komennot on korostettu lihavoituna; tavallinen fontti - palvelinviestit. Muistiinpanot on erotettu kahdella kauttaviivalla:
220 FTP-palvelin valmiina. 220 Hei maailma! KÄYTTÄJÄ anonyymi 331 Anonyymi kirjautuminen ok, lähetä täydellinen sähköpostiosoitteesi salasanaksi KULKEA************ 230 Kirjattu anonyymisti. PASV 227 Passiiviseen tilaan siirtyminen (192,168,254,253,233,92) //Asiakkaan on avattava yhteys lähetettyyn IP-osoitteeseen LISTA 150 Tässä tulee hakemistolistaus. // Palvelin lähettää tiedostoluettelon hakemistoon 226 Luettelon lähetys OK. CWD saapuu 250 Hakemiston muutos onnistui. PASV 227 Passiiviseen tilaan siirtyminen (192,168,254,253,207,56) STOR esimerkki.avi 150 Ok lähettää tietoja. // Asiakas lähettää tiedoston sisällön 226 Tiedoston vastaanotto OK. LOPETTAA 221 Hyvästi.Argumentti 192,168,254,253,207,56 tarkoittaa, että yhteyden palvelimeen odotetaan muodostuvan isännässä, jonka IP-osoite on 192.168.254.253, portissa 207 << 8 + 56 = 53048 kirjoittaaksesi 56 tai 207*256+56 in=53 nuorempiin).
Monilla FTP-palvelimilla on hakemisto (kutsutaan saapuvaksi, lähetettäväksi jne.), johon voidaan kirjoittaa tiedostojen lataamista palvelimelle. Tämän ansiosta käyttäjät voivat täyttää palvelimia tuoreella tiedolla.
FXP ( File eXchange Protocol ) on tapa siirtää tiedostoja suoraan kahden FTP-palvelimen välillä lataamatta tiedostoja käyttäjän tietokoneelle. FXP-istunnon aikana asiakas avaa kaksi FTP-yhteyttä kahdelle eri palvelimelle ja pyytää tiedostoa ensimmäiselle palvelimelle ja määrittää toisen palvelimen IP-osoitteen PORT-komennossa.
FXP-standardin tuen kiistaton etu on se, että loppukäyttäjiä, jotka haluavat kopioida tiedostoja yhdeltä FTP-palvelimelta toiselle, ei enää koske oman Internet-yhteytensä kaistanleveysrajoitus. Sinun ei tarvitse ladata tiedostoa itsellesi, jotta voit ladata sen myöhemmin toiselle FTP-palvelimelle. Siten tiedostonsiirtoaika riippuu vain kahden etä-FTP-palvelimen välisestä yhteysnopeudesta, joka useimmissa tapauksissa on selvästi suurempi kuin "käyttäjän" nopeus.
Hyökkääjät alkoivat käyttää FXP:tä hyökätäkseen muihin palvelimiin: PORT-komento määrittää hyökkäyksen kohteena olevan palvelun IP-osoitteen ja portin uhrin tietokoneessa, ja RETR/STOR-komennot käyttävät tätä porttia FTP-palvelimen puolesta, eivät hyökkääjän puolesta. kone, joka mahdollisti laajamittaisten DDoS - hyökkäysten järjestämisen käyttämällä useita FTP-palvelimia kerralla tai ohittaa uhrin tietokoneen turvajärjestelmän, jos se luottaa vain asiakkaan IP-osoitteen tarkistamiseen ja hyökkäykseen käytetty FTP-palvelin sijaitsee luotettu verkko tai yhdyskäytävä. Tämän seurauksena lähes kaikki palvelimet tarkistavat nyt, että PORT-komennossa määritetty IP-osoite vastaa FTP-asiakkaan IP-osoitetta, ja oletusarvoisesti kieltävät kolmannen osapuolen IP-osoitteiden käytön siellä. Näin ollen FXP:n käyttö ei ole mahdollista julkisten FTP-palvelimien kanssa työskennellessä.
URI- järjestelmät | |
---|---|
Virallinen | |
epävirallinen |
TCP /IP-perusprotokollat OSI -mallin kerroksittain | |
---|---|
Fyysinen | |
kanavoitu | |
verkkoon | |
Kuljetus | |
istunto | |
Edustus | |
Sovellettu | |
Muuta sovellettu | |
Luettelo TCP- ja UDP-porteista |