FTP

FTP
namn Filöverföringsprotokoll
Nivå (enligt OSI-modellen ) Applicerad
Familj TCP/IP
Skapad i 1971
Port/ID 21/TCP för kommandon, 20/TCP för data, 49152-65534/TCP dynamisk
Syftet med protokollet Filöverföring
Specifikation RFC 959
Huvudsakliga implementeringar (klienter) Jämförelse av FTP-klienter
Kärnimplementationer ( servrar ) Jämförelse av FTP-servrar
Expanderbarhet Lägg till. lag
 Mediafiler på Wikimedia Commons

FTP ( English  File Transfer Protocol ) är ett protokoll för överföring av filer över ett nätverk som dök upp 1971 långt före HTTP och även före TCP/IP , på grund av vilket det är ett av de äldsta applikationsprotokollen. Till en början fungerade FTP ovanpå NCP- protokollet [1] , idag används det flitigt för distribution av programvara och åtkomst till fjärrvärdar . Till skillnad från TFTP garanterar den överföring (eller ett fel) genom användning av ett kvotprotokoll .

Protokollet är byggt på en klient-server- arkitektur och använder olika nätverksanslutningar för att överföra kommandon och data mellan klienten och servern. FTP-användare kan autentisera genom att skicka ett användarnamn och lösenord i klartext , eller, om det tillåts på servern, kan de ansluta anonymt. Du kan använda SSH-protokollet för en säker överföring som krypterar (döljer) användarnamnet och lösenordet, samt innehållet i filen.

De första FTP-klientapplikationerna var interaktiva kommandoradsverktyg som implementerade standardkommandon och syntax. Sedan dess har grafiska användargränssnitt utvecklats för många operativsystem som används idag. Dessa gränssnitt sträcker sig från komponenter i ett allmänt webbdesignprogram som Microsoft Expression Web till specialiserade FTP-klienter som FileZilla .

Beskrivning av protokollet

Skillnad från HTTP

Fast egendom FTP http
Baserat på arbetspass Ja Inte
Inbyggd användarautentisering Ja Inte
Ursprungligen avsedd för överföring Stora binärer små textfiler
Anslutningsmodell Dubbel anslutning Enkel anslutning
Stöder text och binära överföringslägen Ja Inte
Stöder överföringsdatatyper ( MIME- rubriker) Inte Ja
Stöder filsystemoperationer (mkdir, rm, byt namn, etc.) Ja Inte

En ganska slående egenskap hos FTP-protokollet är att det använder flera (minst dubbla) anslutningar. I detta fall är en kanal kontrollkanalen, genom vilken kommandon tas emot till servern och dess svar returneras (vanligtvis via TCP-port 21), och data överförs faktiskt genom resten, en kanal för varje överföring. Därför, inom ramen för en session, kan flera filer överföras samtidigt via FTP-protokollet, och i båda riktningarna. För varje datakanal öppnas en egen TCP-port, vars nummer väljs antingen av servern eller av klienten, beroende på överföringsläget [2] .

FTP-protokollet (som HTTP) har ett binärt överföringsläge, vilket minskar trafikkostnader och minskar datautbytestid vid överföring av stora filer.

När du börjar arbeta genom FTP-protokollet går klienten in i sessionen och alla operationer utförs inom denna session (med andra ord, servern kommer ihåg det aktuella tillståndet). HTTP-protokollet "minns" ingenting - dess uppgift är att ge data och glömma därför att komma ihåg tillståndet när du använder HTTP utförs av metoder utanför protokollet [2] .

FTP fungerar på applikationslagret i OSI-modellen och används för att överföra filer med TCP/IP . För att göra detta måste en FTP-server vara igång och vänta på inkommande förfrågningar. Klientdatorn kan kommunicera med servern på port 21. Denna anslutning (kontrollflöde) förblir öppen under hela sessionen. Den andra anslutningen (dataström) kan öppnas antingen av servern från port 20 till porten på motsvarande klient (aktivt läge), eller av klienten från valfri port till porten på motsvarande server (passivt läge), vilket är nödvändig för att överföra datafilen. Kontrollflödet används för att arbeta med sessionen – till exempel utbyte av kommandon och lösenord mellan klienten och servern med hjälp av ett telnet-liknande protokoll. Till exempel kommer "RETR filnamn" att överföra den angivna filen från servern till klienten. På grund av denna tvåportsstruktur anses FTP vara ett out-of-band-protokoll, i motsats till in-band HTTP .

Anslutning och dataöverföring

Protokollet är definierat i RFC 959 . Servern svarar på kontrollflödet med tre tecken ASCII-statuskoder med ett valfritt textmeddelande. Till exempel betyder "200" (eller "200 OK") att det senaste kommandot lyckades. Siffrorna representerar svarskoden och texten representerar förtydligandet eller begäran. En pågående dataströmsöverföring kan avbrytas av ett avbrottsmeddelande som skickas över styrströmmen.

FTP kan fungera i aktivt eller passivt läge, vilket avgör hur anslutningen upprättas. I aktivt läge skapar klienten en kontroll TCP-anslutning med servern och skickar sin IP-adress och ett godtyckligt klientportnummer till servern, varefter den väntar på att servern ska starta en TCP-anslutning med denna adress och portnummer. Om klienten ligger bakom en brandvägg och inte kan acceptera en inkommande TCP-anslutning kan passivt läge användas. I det här läget använder klienten ett kontrollflöde för att skicka ett PASV-kommando till servern och tar sedan emot sin IP-adress och portnummer från servern, som sedan används av klienten för att öppna ett dataflöde från en godtycklig klientport till den mottagna adressen och porten. Båda lägena uppdaterades i september 1998 för att stödja IPv6. Under denna tid gjordes ytterligare ändringar i passivt läge, vilket uppdaterade det till förbättrat passivt läge.

Vid överföring av data över ett nätverk kan fyra representationer av data användas:

För textfiler finns olika kontrollformat och inställningar för poststruktur. Dessa funktioner har utformats för att fungera med filer som innehåller Telnet- eller ASA-formatering.

Dataöverföring kan utföras i något av tre lägen:

Autentisering

FTP-autentisering använder ett användarnamn/lösenordsschema för att ge åtkomst. Användarnamnet skickas till servern med kommandot USER, och lösenordet skickas med kommandot PASS. Om informationen som tillhandahålls av klienten accepteras av servern kommer servern att skicka en inbjudan till klienten och sessionen börjar. Användare kan, om servern stöder den här funktionen, logga in utan att ange inloggningsuppgifter , men servern kan bara ge begränsad åtkomst för sådana sessioner.

En värd som tillhandahåller en FTP-tjänst kan ge anonym FTP-åtkomst. Användare loggar vanligtvis in med "anonym" (kan vara skiftlägeskänslig på vissa FTP-servrar) som användarnamn. Även om användarna vanligtvis uppmanas att ange sin e-postadress istället för ett lösenord, görs faktiskt ingen verifiering. Många FTP-värdar som tillhandahåller programuppdateringar stöder anonym åtkomst.

FTP-ALG

Speciellt för att FTP-protokollet skulle fungera genom brandväggar gjordes en förlängning NAT , kallad FTP-ALG , som låter dig sända inkommande anslutningar från servern till klienten genom NAT. Under en sådan anslutning ersätter FTP-ALG de överförda data från klienten och indikerar för servern den verkliga adressen och porten som servern kan ansluta till, och sänder sedan anslutningen från servern från denna adress till klienten till sin adress. Trots alla åtgärder och innovationer som vidtagits för att stödja FTP-protokollet är FTP-ALG-funktionen i praktiken vanligtvis inaktiverad i alla routrar och routrar för att ge ytterligare säkerhet mot virushot.

Genomgång av NAT och brandvägg

FTP överför normalt data när servern är ansluten till klienten, efter att klienten har skickat kommandot PORT. Detta skapar problem för både NAT och brandväggar , som inte tillåter anslutningar från Internet till interna värdar . För NAT är ett ytterligare problem att representationen av IP-adresserna och portnumret i PORT-kommandot hänvisar till IP-adressen och porten för den interna värden, istället för den offentliga IP-adressen och NAT-porten. Det finns två tillvägagångssätt för detta problem. Den första är att FTP-klienten och FTP-servern använder PASV-kommandot, som anropar en dataanslutning som upprättats från klienten till servern. Det andra tillvägagångssättet är att ändra NAT-värdena för PORT-kommandot med hjälp av en applikationslager-gateway .

Historik

Den första implementeringen av protokollet (1971) tillhandahöll utbyte mellan klienten och servern av meddelanden bestående av en rubrik (72 bitar) och data med variabel längd. Meddelandehuvudet inkluderade en begäran till FTP-servern eller ett svar från den, typen och längden på de överförda data. Frågeparametrar (till exempel sökväg och filnamn), information från servern (till exempel en lista över filer i en katalog) och själva filerna skickades som data. Således överfördes kommandon och data över samma kanal.

1972 ändrades  protokollet totalt och fick en form som liknar den moderna. Kommandon med parametrar från klient- och serversvar sänds över en TELNET- anslutning (kontrollkanal), en separat anslutning (datakanal) skapas för dataöverföring.

Efterföljande utgåvor lade till möjligheten att arbeta i passivt läge, överföra filer mellan FTP-servrar, introducerade kommandon för att få information, ändra den aktuella katalogen, skapa och ta bort kataloger, spara filer under ett unikt namn. Under en tid fanns kommandon för att skicka e-post via FTP, men senare uteslöts de från protokollet.

1980 började  FTP-protokollet använda TCP . Den senaste versionen av protokollet släpptes 1985. 1997 dök ett tillägg till protokollet upp som låter dig kryptera och signera information i kontrollkanalen och datakanalen. 1999 släpptes ett protokollinternationaliseringstillägg som rekommenderar användning av UTF-8- kodning för serverkommandon och -svar, och definierar ett nytt LANG-kommando som ställer in svarsspråket.

Stöd för webbläsare

De flesta vanliga webbläsare kan hämta filer som finns på FTP-servrar, även om de kanske inte stöder protokolltillägg som FTPS . När en FTP-adress anges istället för en HTTP-adress, presenteras det tillgängliga innehållet på fjärrservern på samma sätt som annat webbinnehåll. En fullt fungerande FTP-klient kan köras i Firefox som en FireFTP- tillägg .

Från och med 2020 kommer webbläsaren Chrome (och eventuellt andra) att helt berövas stöd för FTP-protokollet. [3]

Syntax

FTP URI- syntaxen beskrivs i RFC 1738, i formen: ftp://[<användarnamn>[:<lösenord>]@]<värd>[:<port>]/<sökväg> (parametrar inom hakparenteser är valfria ). Till exempel:

ftp://public.ftp-servers.example.com/minkatalog/minfil.txt  (nedlänk) (nedlänk)

eller:

ftp://user001:[email protected]/minkatalog/minfil.txt  (nedlänk) (nedlänk)

Mer information om hur du anger ett användarnamn och lösenord finns i webbläsarens dokumentation. Som standard använder de flesta webbläsare passivt (PASV) läge, som bättre kringgår slutanvändarnas brandväggar.

Säkerhet

FTP designades inte för att vara säker (särskilt enligt dagens standarder) och har många säkerhetsbrister. I maj 1999 reducerade författarna till RFC 2577 sårbarheterna till följande lista med problem:

FTP kan inte kryptera sin trafik, alla överföringar är klartext, så användarnamn, lösenord, kommandon och data kan läsas av alla som kan fånga upp paketet över nätverket. Det här problemet är vanligt för många Internetprotokollspecifikationer (inklusive SMTP , Telnet , POP, IMAP) som utvecklades innan krypteringsmekanismer som TLS och SSL utvecklades. Den vanliga lösningen på detta problem är att använda "säkra", TLS-säkra versioner av sårbara protokoll ( FTPS för FTP, TelnetS för Telnet, etc.) eller ett annat säkrare protokoll som SFTP / SCP som tillhandahålls med de flesta implementeringar av Secure Shell- protokollet ...

Säker FTP

Det finns flera säkra filöverföringsmetoder som ibland kallas "Säker FTP".

FTPS

Explicit FTPS är en förlängning av FTP-standarden som tillåter klienter att kräva att en FTP-session krypteras. Detta implementeras genom att skicka kommandot "AUTH TLS". Servern har möjlighet att tillåta eller avvisa anslutningar som inte begär TLS. Denna protokollförlängning definieras i RFC 4217- specifikationen . Implicit FTPS är en föråldrad standard för FTP som kräver användning av en SSL- eller TLS-anslutning. Denna standard var att använda andra portar än normal FTP.

SFTP

SFTP, eller "SSH File Transfer Protocol", är inte relaterat till FTP, förutom att det också överför filer och har en liknande uppsättning kommandon för användare. SFTP, eller säker FTP, är ett program som använder SSH (Secure Shell) för att överföra filer. Till skillnad från standard FTP, krypterar den både kommandon och data, vilket förhindrar att lösenord och känslig information överförs öppet över nätverket. SFTP liknar sin funktionalitet till FTP, men eftersom det använder ett annat protokoll kan standard FTP-klienter inte kontakta en SFTP-server och vice versa.

FTP över SSH (inte SFTP)

FTP över SSH (inte SFTP) hänvisar till övningen att tunnla en vanlig FTP-session över en SSH- anslutning. Eftersom FTP använder flera TCP-anslutningar är tunnling över SSH särskilt svårt. När många SSH-klienter försöker tunnla kontrollkanalen (den ursprungliga "klient-server"-anslutningen på port 21), kommer bara den kanalen att säkras; vid överföring av data kommer FTP-programvaran i vardera änden att etablera nya TCP-anslutningar (datakanaler) som kommer att kringgå SSH-anslutningen och därmed förlora integritetsskyddet .

Annars måste SSH-klientmjukvaran ha viss kunskap om FTP för att övervaka och skriva om FTP-kontrollflödesmeddelanden och autonomt öppna nya omdirigeringar för FTP-dataflöde.

Programvarupaket som stöder detta läge:

FTP över SSH kallas ibland säker FTP, men bör inte förväxlas med andra metoder som SSL/TLS (FTPS). Andra filöverföringsmetoder som använder SSH och som inte är relaterade till FTP är SFTP och SCP . I var och en av dem är både autentiseringsuppgifter och fildata alltid skyddade av SSH-protokollet.

Grundläggande kommandon

FTP-svarskoder

Nedan följer en kort beskrivning av de svarskoder som kan returneras av FTP -servern . Dessa koder har standardiserats av IETF i RFC 959 . Som tidigare nämnts är svarskoden ett tresiffrigt nummer. Den första siffran är ansvarig för ett av tre utfall: framgång, misslyckande eller en indikation på ett fel, eller ett ofullständigt svar.

Den andra siffran anger typen av fel:

Den tredje siffran anger slutligen felet.

Exempel

I exemplet är kommandona som ges av klienten markerade med fet stil; vanliga teckensnitt - servermeddelanden. Anteckningar separeras med två snedstreck:

220 FTP-server klar. 220 Hej världen! ANVÄNDARE anonym 331 Anonym login ok, skicka din fullständiga e-postadress som ditt lösenord PASSERA************ 230 Loggade anonymt. PASV 227 Gå in i passivt läge (192,168,254,253,233,92) //Kunden måste öppna en anslutning till den överförda IP-adressen LISTA 150 Här kommer katalogförteckningen. // Servern skickar en lista med filer till en katalog 226 Katalogsändning OK. CWD inkommande 250 Katalog har ändrats. PASV 227 Gå in i passivt läge (192,168,254,253,207,56) STOR exempel.avi 150 Ok för att skicka data. // Klienten skickar innehållet i filen 226 Filmottagning OK. SLUTA MED 221 Adjö.

Argumentet 192,168,254,253,207,56 betyder att en anslutning till servern förväntas på en värd med IP-adress 192.168.254.253 på port 207 << 8 + 56 = 53048 för att skriva 56 eller 207*2506+586 i den yngre).

Många FTP-servrar har en katalog (kallas inkommande, uppladdning, etc.) skrivbar för uppladdning av filer till servern. Detta tillåter användare att fylla servrar med färsk data.

FXP

FXP ( File eXchange Protocol  ) är ett sätt att överföra filer mellan två FTP-servrar direkt, utan att ladda ner  filer till användarens dator. Under en FXP-session öppnar klienten två FTP-anslutningar till två olika servrar och begär en fil på den första servern, och specificerar IP-adressen för den andra servern i PORT-kommandot.

Den otvivelaktiga fördelen med att stödja FXP-standarden är att slutanvändare som vill kopiera filer från en FTP-server till en annan inte längre är föremål för bandbreddsgränsen för sin egen internetanslutning. Du behöver inte ladda ner en fil själv för att ladda upp den till en annan FTP-server senare. Således kommer filöverföringstiden endast att bero på anslutningshastigheten mellan två fjärranslutna FTP-servrar, som i de flesta fall uppenbarligen är högre än "användarens".

FXP började användas av angripare för att attackera andra servrar: PORT-kommandot anger IP-adressen och porten för den attackerade tjänsten på offrets dator, och RETR/STOR-kommandona får åtkomst till denna port på uppdrag av FTP-servern, och inte den attackerande maskin, som gjorde det möjligt att arrangera storskaliga DDoS - attacker med många FTP-servrar samtidigt, eller kringgå säkerhetssystemet på offrets dator om den bara förlitar sig på att kontrollera klientens IP och FTP-servern som används för attacken är placerad på en pålitligt nätverk eller gateway. Som ett resultat kontrollerar nästan alla servrar nu att IP-adressen som anges i PORT-kommandot matchar IP-adressen för FTP-klienten och förbjuder som standard användning av tredje parts IP-adresser där. Det är alltså inte möjligt att använda FXP när man arbetar med offentliga FTP-servrar.

Se även

Servrar

Länkar

Anteckningar

  1. A Brief History of Mail Arkiverad 27 mars 2008.
  2. 1 2 Kapitel 27. Konfigurera en FTP-server . Hämtad 17 april 2017. Arkiverad från originalet 3 juni 2017.
  3. Chrome 82 kommer helt att förlora stödet för FTP Arkiverad 16 augusti 2019 på Wayback Machine // 3DNews , 08/16/2019