FTP

FTP
Navn Filoverførselsprotokol
Niveau (ifølge OSI-modellen ) Anvendt
Familie TCP/IP
Oprettet i 1971
Port/ID 21/TCP for kommandoer, 20/TCP for data, 49152-65534/TCP dynamisk
Formål med protokollen Filoverførsel
Specifikation RFC 959
Vigtigste implementeringer (klienter) Sammenligning af FTP-klienter
Kerneimplementeringer ( servere ) Sammenligning af FTP-servere
Udvidelsesmuligheder Tilføje. kommandoer
 Mediefiler på Wikimedia Commons

FTP ( English  File Transfer Protocol ) er en protokol til overførsel af filer over et netværk , der dukkede op i 1971 længe før HTTP og endda før TCP/IP , på grund af hvilket det er en af ​​de ældste applikationsprotokoller. Oprindeligt fungerede FTP oven på NCP -protokollen [1] , i dag er den meget brugt til softwaredistribution og adgang til fjernværter . I modsætning til TFTP garanterer den transmission (eller en fejl) gennem brug af en kvoteprotokol .

Protokollen er bygget på en klient-server- arkitektur og bruger forskellige netværksforbindelser til at overføre kommandoer og data mellem klienten og serveren. FTP-brugere kan godkende ved at sende et brugernavn og en adgangskode i klartekst , eller, hvis det er tilladt på serveren, kan de oprette forbindelse anonymt. Du kan bruge SSH-protokollen til en sikker overførsel, der krypterer (skjuler) brugernavnet og adgangskoden samt indholdet af filen.

De første FTP-klientapplikationer var interaktive kommandolinjeværktøjer , der implementerede standardkommandoer og syntaks. Siden da er der udviklet grafiske brugergrænseflader til mange operativsystemer, der bruges i dag. Disse grænseflader spænder fra komponenter i et generelt webdesignprogram som Microsoft Expression Web til specialiserede FTP-klienter som FileZilla .

Beskrivelse af protokollen

Forskel fra HTTP

Ejendom FTP HTTP
Baseret på arbejdssessioner Ja Ikke
Indbygget brugergodkendelse Ja Ikke
Oprindeligt beregnet til transmission Store binære filer små tekstfiler
Tilslutningsmodel Dobbelt tilslutning Enkelt forbindelse
Understøtter tekst og binære overførselstilstande Ja Ikke
Understøtter overførselsdatatyper ( MIME - headers) Ikke Ja
Understøtter filsystemoperationer (mkdir, rm, omdøb osv.) Ja Ikke

Et ret slående træk ved FTP-protokollen er, at den bruger flere (mindst dobbelte) forbindelser. I dette tilfælde er en kanal kontrolkanalen, hvorigennem kommandoer modtages til serveren, og dens svar returneres (normalt via TCP-port 21), og dataene faktisk transmitteres gennem resten, en kanal for hver transmission. Derfor kan flere filer inden for rammerne af en session overføres samtidigt via FTP-protokollen og i begge retninger. For hver datakanal åbnes dens egen TCP-port, hvis nummer vælges enten af ​​serveren eller af klienten, afhængigt af transmissionstilstanden [2] .

FTP-protokollen (som HTTP) har en binær overførselstilstand , som reducerer trafikoverhead og reducerer dataudvekslingstiden ved overførsel af store filer.

Starter arbejdet gennem FTP-protokollen, klienten går ind i sessionen, og alle operationer udføres inden for denne session (med andre ord husker serveren den aktuelle tilstand). HTTP-protokollen "husker" ikke noget - dens opgave er at give data og glemmer derfor at huske tilstanden, når du bruger HTTP, udføres af metoder uden for protokollen [2] .

FTP fungerer på OSI-modellens applikationslag og bruges til at overføre filer ved hjælp af TCP/IP . For at gøre dette skal en FTP-server køre og vente på indgående anmodninger. Klientcomputeren kan kommunikere med serveren på port 21. Denne forbindelse (flow of control) forbliver åben i hele sessionen. Den anden forbindelse (datastrøm) kan åbnes enten af ​​serveren fra port 20 til porten på den tilsvarende klient (aktiv tilstand), eller af klienten fra en hvilken som helst port til porten på den tilsvarende server (passiv tilstand), som er nødvendigt for at overføre datafilen. Kontrolflowet bruges til at arbejde med sessionen - for eksempel udveksling af kommandoer og adgangskoder mellem klienten og serveren ved hjælp af en telnet-lignende protokol. For eksempel vil "RETR filnavn" overføre den angivne fil fra serveren til klienten. På grund af denne to-ports struktur betragtes FTP som en out-of-band protokol i modsætning til in-band HTTP .

Forbindelse og dataoverførsel

Protokollen er defineret i RFC 959 . Serveren reagerer på kontrolflowet med tre-tegns ASCII-statuskoder med en valgfri tekstbesked. For eksempel betyder "200" (eller "200 OK"), at den sidste kommando var vellykket. Tallene repræsenterer svarkoden, og teksten repræsenterer præciseringen eller anmodningen. En igangværende datastrømtransmission kan afbrydes af en afbrydelsesmeddelelse sendt over kontrolstrømmen.

FTP kan fungere i aktiv eller passiv tilstand, som bestemmer, hvordan forbindelsen etableres. I aktiv tilstand opretter klienten en kontrol-TCP-forbindelse med serveren og sender sin IP-adresse og et vilkårligt klientportnummer til serveren, hvorefter den venter på, at serveren starter en TCP-forbindelse med denne adresse og portnummer. Hvis klienten er bag en firewall og ikke kan acceptere en indgående TCP-forbindelse, kan passiv tilstand bruges. I denne tilstand bruger klienten et kontrolflow til at sende en PASV-kommando til serveren og modtager derefter sin IP-adresse og portnummer fra serveren, som derefter bruges af klienten til at åbne et dataflow fra en vilkårlig klientport til den modtagne adresse og port. Begge tilstande blev opdateret i september 1998 for at understøtte IPv6. I løbet af denne tid blev der foretaget yderligere ændringer i passiv tilstand, som opdaterede den til forbedret passiv tilstand.

Ved overførsel af data over et netværk kan fire repræsentationer af data bruges:

For tekstfiler findes forskellige kontrolformater og indstillinger for registreringsstruktur. Disse funktioner er designet til at fungere med filer, der indeholder Telnet- eller ASA-formatering.

Dataoverførsel kan udføres i en af ​​tre tilstande:

Godkendelse

FTP-godkendelse bruger et brugernavn/adgangskodeskema til at give adgang. Brugernavnet sendes til serveren med USER-kommandoen, og adgangskoden sendes med PASS-kommandoen. Hvis oplysningerne fra klienten accepteres af serveren, sender serveren en invitation til klienten, og sessionen begynder. Brugere kan, hvis serveren understøtter denne funktion, logge på uden at angive legitimationsoplysninger , men serveren kan kun give begrænset adgang til sådanne sessioner.

En vært, der leverer en FTP-tjeneste, kan give anonym FTP-adgang. Brugere logger typisk på med "anonym" (kan være forskel på store og små bogstaver på nogle FTP-servere) som deres brugernavn. Selvom brugere normalt bliver bedt om at angive deres e-mailadresse i stedet for en adgangskode, foretages der faktisk ingen verifikation. Mange FTP-værter, der leverer softwareopdateringer, understøtter anonym adgang.

FTP-ALG

Specielt for at FTP-protokollen skulle fungere gennem firewalls, blev der lavet en udvidelse NAT , kaldet FTP-ALG , som giver dig mulighed for at udsende indgående forbindelser fra serveren til klienten gennem NAT. Under en sådan forbindelse erstatter FTP-ALG de transmitterede data fra klienten, hvilket viser serveren den sande adresse og port, som serveren kan oprette forbindelse til, og sender derefter forbindelsen fra serveren fra denne adresse til klienten til dens adresse. På trods af alle de foranstaltninger og innovationer, der er truffet for at understøtte FTP-protokollen, er FTP-ALG-funktionen i praksis normalt deaktiveret i alle routere og routere for at give yderligere sikkerhed mod virustrusler.

NAT og firewall-gennemgang

FTP overfører normalt data, når serveren er forbundet til klienten, efter at klienten har sendt PORT-kommandoen. Dette skaber et problem for både NAT og firewalls , som ikke tillader forbindelser fra internettet til interne værter . For NAT er et yderligere problem, at repræsentationen af ​​IP-adresserne og portnummeret i PORT-kommandoen refererer til IP-adressen og porten på den interne vært i stedet for den offentlige IP-adresse og NAT-port. Der er to tilgange til dette problem. Den første er, at FTP-klienten og FTP-serveren bruger PASV-kommandoen, som kalder en dataforbindelse etableret fra klienten til serveren. Den anden tilgang er at ændre NAT-værdierne for PORT-kommandoen ved hjælp af en applikationslagsgateway .

Historie

Den første implementering af protokollen (1971) sørgede for udvekslingen mellem klienten og serveren af ​​meddelelser bestående af en header (72 bit) og data af variabel længde. Meddelelseshovedet indeholdt en anmodning til FTP-serveren eller et svar fra den, typen og længden af ​​de transmitterede data. Forespørgselsparametre (for eksempel stien og filnavnet), information fra serveren (for eksempel en liste over filer i en mappe) og selve filerne blev sendt som data. Således blev kommandoer og data transmitteret over samme kanal.

I 1972  blev protokollen fuldstændig ændret og fik en form tæt på den moderne. Kommandoer med parametre fra klient- og serversvar sendes over en TELNET -forbindelse (kontrolkanal), en separat forbindelse (datakanal) oprettes til dataoverførsel.

Efterfølgende udgaver tilføjede muligheden for at arbejde i passiv tilstand, overføre filer mellem FTP-servere, introducerede kommandoer til at få information, ændre den aktuelle mappe, oprette og slette mapper, gemme filer under et unikt navn. I nogen tid var der kommandoer til at sende e-mail via FTP, men senere blev de udelukket fra protokollen.

I 1980  begyndte FTP-protokollen at bruge TCP . Den sidste version af protokollen blev udgivet i 1985. I 1997 dukkede en tilføjelse til protokollen op, der giver dig mulighed for at kryptere og signere information i kontrolkanalen og datakanalen. I 1999 blev et protokolinternationaliseringstillæg udgivet, der anbefaler at bruge UTF-8- kodning til serverkommandoer og -svar, og definerer en ny LANG-kommando, der indstiller svarsproget.

Understøttelse af webbrowser

De fleste almindelige webbrowsere kan hente filer placeret på FTP-servere, selvom de muligvis ikke understøtter protokoludvidelser som FTPS . Når en FTP-adresse er angivet i stedet for en HTTP-adresse, præsenteres det tilgængelige indhold på fjernserveren på samme måde som andet webindhold. En fuldt funktionel FTP-klient kan køres i Firefox som en FireFTP- udvidelse .

Fra 2020 bliver Chrome-browseren (og muligvis andre) fuldstændigt frataget understøttelse af FTP-protokollen. [3]

Syntaks

FTP URI- syntaksen er beskrevet i RFC 1738 i formen: ftp://[<brugernavn>[:<adgangskode>]@]<host>[:<port>]/<sti> (parametre i firkantede parenteser er valgfrie ). For eksempel:

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

eller:

ftp://user001:[email protected]/mydirectory/myfile.txt  (downlink) (downlink)

Se browserdokumentationen for at få flere oplysninger om angivelse af brugernavn og adgangskode. Som standard bruger de fleste webbrowsere passiv (PASV) tilstand, som bedre omgår slutbrugers firewalls.

Sikkerhed

FTP er ikke designet til at være sikker (især efter nutidens standarder) og har adskillige sikkerhedssårbarheder. I maj 1999 reducerede forfatterne af RFC 2577 sårbarhederne til følgende liste over problemer:

FTP kan ikke kryptere sin trafik, alle transmissioner er klar tekst, så brugernavne, adgangskoder, kommandoer og data kan læses af alle, der kan opsnappe pakken over netværket. Dette problem er fælles for mange internetprotokolspecifikationer (herunder SMTP , Telnet , POP, IMAP), der blev udviklet før krypteringsmekanismer såsom TLS og SSL blev udviklet. Den sædvanlige løsning på dette problem er at bruge "sikre", TLS-sikre versioner af sårbare protokoller ( FTPS til FTP, TelnetS for Telnet osv.) eller en anden mere sikker protokol som SFTP / SCP , der leveres med de fleste implementeringer af Secure Shell -protokollen ...

Sikker FTP

Der er flere sikre filoverførselsmetoder, som nogle gange omtales som "Sikker FTP".

FTPS

Eksplicit FTPS er en udvidelse af FTP-standarden, der tillader klienter at kræve, at en FTP-session krypteres. Dette implementeres ved at sende kommandoen "AUTH TLS". Serveren har mulighed for at tillade eller afvise forbindelser, der ikke anmoder om TLS. Denne protokoludvidelse er defineret i RFC 4217 - specifikationen . Implicit FTPS er en forældet standard for FTP, der kræver brug af en SSL- eller TLS-forbindelse. Denne standard skulle bruge andre porte end normal FTP.

SFTP

SFTP, eller "SSH File Transfer Protocol", er ikke relateret til FTP, bortset fra at den også overfører filer og har et lignende sæt kommandoer til brugere. SFTP, eller sikker FTP, er et program, der bruger SSH (Secure Shell) til at overføre filer. I modsætning til standard FTP krypterer den både kommandoer og data, hvilket forhindrer adgangskoder og følsomme oplysninger i at blive transmitteret åbent på tværs af netværket. SFTP svarer i funktionalitet til FTP, men fordi den bruger en anden protokol, kan standard FTP-klienter ikke kontakte en SFTP-server og omvendt.

FTP over SSH (ikke SFTP)

FTP over SSH (ikke SFTP) refererer til praksis med at tunnelere en almindelig FTP-session over en SSH - forbindelse. Fordi FTP bruger flere TCP-forbindelser, er tunnelering over SSH særligt vanskelig. Når mange SSH-klienter forsøger at tunnelere kontrolkanalen (den originale "klient-server"-forbindelse på port 21), vil kun den kanal være sikret; ved overførsel af data vil FTP-softwaren i begge ender etablere nye TCP-forbindelser (datakanaler), som vil omgå SSH-forbindelsen og dermed miste integritetsbeskyttelsen .

Ellers skal SSH-klientsoftwaren have en vis viden om FTP for at overvåge og omskrive FTP-kontrolflowmeddelelser og selvstændigt åbne nye omdirigeringer til FTP-dataflow.

Softwarepakker, der understøtter denne tilstand:

FTP over SSH omtales nogle gange som sikker FTP, men bør ikke forveksles med andre metoder såsom SSL/TLS (FTPS). Andre filoverførselsmetoder, der bruger SSH og ikke er relateret til FTP, er SFTP og SCP . I hver af dem er både legitimationsoplysninger og fildata altid beskyttet af SSH-protokollen.

Grundlæggende kommandoer

FTP-svarkoder

Nedenfor er en kort beskrivelse af de svarkoder, der kan returneres af FTP -serveren . Disse koder er blevet standardiseret af IETF i RFC 959 . Svarkoden er som tidligere nævnt et trecifret tal. Det første ciffer er ansvarligt for et af tre udfald: succes, fiasko eller en indikation af en fejl eller et ufuldstændigt svar.

Det andet ciffer angiver fejltypen:

Det tredje ciffer angiver endelig fejlen.

Eksempel

I eksemplet er kommandoerne givet af klienten fremhævet med fed skrift; almindelig skrifttype - servermeddelelser. Noter er adskilt af to skråstreger:

220 FTP server klar. 220 Hej verden! BRUGER anonym 331 Anonym login ok, send din fulde e-mailadresse som din adgangskode PASSERE************ 230 Logget anonymt. PASV 227 Indtastning af passiv tilstand (192,168,254,253,233,92) //Kunden skal åbne en forbindelse til den transmitterede IP LISTE 150 Her kommer telefonbogen. // Serveren sender en liste over filer til en mappe 226 Directory send OK. CWD indkommende 250 Directory blev ændret. PASV 227 Går ind i passiv tilstand (192.168.254.253.207.56) STOR eksempel.avi 150 Ok for at sende data. // Klienten sender indholdet af filen 226 Fil modtagelse OK. AFSLUT 221 Farvel.

Argumentet 192,168,254,253,207,56 betyder, at der forventes en forbindelse til serveren på en vært med IP-adressen 192.168.254.253 på port 207 << 8 + 56 = 53048 for at skrive 56 eller 207*2506+586 i den yngre).

Mange FTP-servere har en mappe (kaldet indgående, upload osv.), der kan skrives til upload af filer til serveren. Dette giver brugerne mulighed for at udfylde servere med friske data.

FXP

FXP ( File eXchange Protocol  ) er en måde at overføre filer mellem to FTP-servere direkte, uden at downloade  filer til brugerens computer. Under en FXP-session åbner klienten to FTP-forbindelser til to forskellige servere, og anmoder om en fil på den første server og angiver IP-adressen på den anden server i PORT-kommandoen.

Den utvivlsomme fordel ved at understøtte FXP-standarden er, at slutbrugere, der ønsker at kopiere filer fra en FTP-server til en anden, ikke længere er underlagt båndbreddegrænsen for deres egen internetforbindelse. Der er ingen grund til at downloade en fil til dig selv for at uploade den til en anden FTP-server senere. Filoverførselstiden vil således kun afhænge af forbindelseshastigheden mellem to eksterne FTP-servere, som i de fleste tilfælde naturligvis er højere end "brugerens".

FXP begyndte at blive brugt af angribere til at angribe andre servere: PORT-kommandoen angiver IP-adressen og porten for den angrebne tjeneste på offerets computer, og RETR/STOR-kommandoerne får adgang til denne port på vegne af FTP-serveren og ikke den angribende maskine, som gjorde det muligt at arrangere store DDoS - angreb ved hjælp af mange FTP-servere på én gang, eller omgå sikkerhedssystemet på offerets computer, hvis det kun er afhængigt af at kontrollere klientens IP-adresse, og FTP-serveren, der blev brugt til angrebet, er placeret på en betroet netværk eller gateway. Som et resultat kontrollerer næsten alle servere nu, at den IP-adresse, der er angivet i PORT-kommandoen, svarer til FTP-klientens IP-adresse, og forbyder som standard brugen af ​​tredjeparts IP-adresser der. Brugen af ​​FXP er således ikke mulig, når du arbejder med offentlige FTP-servere.

Se også

Servere

Links

Noter

  1. A Brief History of Mail Arkiveret 27. marts 2008.
  2. 1 2 Kapitel 27. Konfiguration af en FTP-server . Hentet 17. april 2017. Arkiveret fra originalen 3. juni 2017.
  3. Chrome 82 mister fuldstændig understøttelse af FTP Arkiveret 16. august 2019 på Wayback Machine // 3DNews , 16/08/2019