SFTP- och FTPS-protokoll

Förord

För bara en vecka sedan skrev jag en uppsats om ämnet som anges i titeln och ställdes inför det faktum att, låt oss säga, det inte finns så mycket pedagogisk information på Internet. Mestadels torra fakta och installationsinstruktioner. Därför bestämde jag mig för att korrigera texten något och lägga upp den som en artikel.

Vad är FTP

FTP (File Transfer Protocol) är ett protokoll för överföring av filer över ett nätverk. Det är ett av de grundläggande Ethernet-protokollen. Dök upp 1971 och arbetade till en början i DARPA-nätverk. För närvarande, liksom HTTP, är filöverföring baserad på en modell som består av en uppsättning TCP/IP-protokoll (Transmission Control Protocol/Internet Protocol). Definierat i RFC 959.

Protokollet definierar följande:

  • Hur kommer felkontrollen att gå till?
  • Datapaketeringsmetod (om förpackning används)
  • Hur indikerar den sändande enheten att den har avslutat ett meddelande?
  • Hur indikerar den mottagande enheten att den har tagit emot ett meddelande?

Kommunikation mellan klient och server

Låt oss ta en närmare titt på de processer som sker under FTP-drift. Anslutningen initieras av användarens protokolltolkare. Växeln styrs via en kontrollkanal i TELNET-standarden. FTP-kommandon genereras av användarens protokolltolkare och skickas till servern. Serverns svar skickas också till användaren via kontrollkanalen. Generellt sett har användaren möjlighet att etablera kontakt med serverns protokolltolkare och på andra sätt än användarens tolk.

Huvudfunktionen hos FTP är att den använder dubbla anslutningar. En av dem används för att skicka kommandon till servern och sker som standard via TCP-port 21, som kan ändras. Kontrollanslutningen existerar så länge klienten kommunicerar med servern. Styrkanalen måste vara öppen vid överföring av data mellan maskiner. Om den är stängd stoppas dataöverföringen. Genom den andra sker direkt dataöverföring. Den öppnas varje gång en filöverföring sker mellan klienten och servern. Om flera filer överförs samtidigt öppnar var och en av dem sin egen överföringskanal.

FTP kan fungera i aktivt eller passivt läge, vars val avgör hur anslutningen upprättas. I aktivt läge skapar klienten en TCP-kontrollanslutning med servern och skickar sin IP-adress och ett godtyckligt klientportnummer till servern och väntar sedan på att servern ska starta en TCP-anslutning med denna adress och portnummer. Om klienten befinner sig 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 kontrollflödet för att skicka ett PASV-kommando till servern och tar sedan emot från servern sin IP-adress och portnummer, som klienten sedan använder för att öppna ett dataflöde från sin godtyckliga port.

Det är möjligt att data kan överföras till en tredje maskin. I detta fall organiserar användaren en kontrollkanal med två servrar och organiserar en direkt datakanal mellan dem. Kontrollkommandon går genom användaren och data går direkt mellan servrarna.

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

  • ASCII – används för text. Data omvandlas, om nödvändigt, från teckenrepresentationen på den sändande värden till "åtta-bitars ASCII" före överföring, och (igen, om nödvändigt) till teckenrepresentationen på den mottagande värden. I synnerhet ändras nyradstecken. Som ett resultat är detta läge inte lämpligt för filer som innehåller mer än bara vanlig text.
  • Binärt läge - den sändande enheten skickar varje fil byte för byte, och mottagaren lagrar strömmen av byte vid mottagandet. Stöd för detta läge har rekommenderats för alla FTP-implementeringar.
  • EBCDIC – används för att överföra vanlig text mellan värdar i EBCDIC-kodning. Annars liknar det här läget ASCII-läget.
  • Lokalt läge - tillåter två datorer med identiska inställningar att skicka data i sitt eget format utan att konvertera till ASCII.

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

  • Strömningsläge - data skickas som en kontinuerlig ström, vilket frigör FTP från att utföra någon bearbetning. Istället görs all bearbetning av TCP. Filens slutindikator behövs inte förutom för att separera data i poster.
  • Blockläge - FTP delar upp data i flera block (huvudblock, antal byte, datafält) och överför dem sedan till TCP.
  • Komprimeringsläge – data komprimeras med en enda algoritm (vanligtvis genom att koda körlängder).

FTP-server är en server som ger möjlighet att använda File Transfer Protocol. Den har vissa funktioner som skiljer den från konventionella webbservrar:

  • Användarautentisering krävs
  • Alla operationer utförs inom den aktuella sessionen
  • Möjlighet att utföra olika åtgärder med filsystemet
  • En separat kanal används för varje anslutning

FTP-klient är ett program som låter dig ansluta till en fjärrserver via FTP och även utföra nödvändiga åtgärder på den med delar av filsystemet. Klienten kan mycket väl vara en webbläsare, i adressfältet för vilken du ska ange adressen, som är sökvägen till en specifik katalog eller fil på fjärrservern, i enlighet med det allmänna URL-blockdiagrammet:

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

Om du använder en webbläsare i detta sammanhang kan du dock bara se eller ladda ner filerna av intresse. För att fullt ut kunna utnyttja alla fördelar med FTP bör du använda specialiserad programvara som klient.

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 referenser, men servern kan bara ge begränsad åtkomst för sådana sessioner.

Värden som tillhandahåller FTP-tjänsten kan tillhandahålla 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ändare vanligtvis uppmanas att ange sin e-postadress istället för ett lösenord, utförs ingen verifiering. Många FTP-värdar som tillhandahåller programuppdateringar stöder anonym åtkomst.

Protokolldiagram

Klient-server-interaktionen under en FTP-anslutning kan visualiseras enligt följande:

SFTP- och FTPS-protokoll

Säker FTP

FTP var ursprungligen inte tänkt att vara säker, eftersom den var avsedd för kommunikation mellan flera militära installationer och byråer. Men med utvecklingen och spridningen av internet har risken för obehörig åtkomst ökat många gånger. Det fanns ett behov av att skydda servrar från olika typer av attacker. I maj 1999 sammanfattade författarna till RFC 2577 sårbarheterna i följande lista med problem:

  • Dolda attacker (studsattacker)
  • Spoofattacker
  • Brute force attacker
  • Paketfångning, sniffning
  • Portstöld

Vanlig FTP har inte möjlighet att överföra data i krypterad form, vilket gör att användarnamn, lösenord, kommandon och annan information enkelt och enkelt kan fångas upp av angripare. Den vanliga lösningen på detta problem är att använda "säkra", TLS-skyddade versioner av det sårbara protokollet (FTPS) eller ett annat, säkrare protokoll, såsom SFTP/SCP, som tillhandahålls med de flesta Secure Shell-protokollimplementeringarna.

FTP

FTPS (FTP + SSL) är en förlängning av standardfilöverföringsprotokollet som lägger till dess grundläggande funktionalitet skapandet av krypterade sessioner med SSL-protokollet (Secure Sockets Layer). Idag tillhandahålls skyddet av dess mer avancerade analoga TLS (Transport Layer Security).

SSL

SSL-protokollet föreslogs av Netscape Communications 1996 för att säkerställa säkerheten och integriteten för Internetanslutningar. Protokollet stöder klient- och serverautentisering, är applikationsoberoende och är transparent för HTTP-, FTP- och Telnet-protokoll.

SSL Handshake-protokollet består av två steg: serverautentisering och valfri klientautentisering. I det första steget svarar servern på klientens begäran genom att skicka dess certifikat och krypteringsparametrar. Klienten genererar sedan en huvudnyckel, krypterar den med serverns publika nyckel och skickar den till servern. Servern dekrypterar huvudnyckeln med sin privata nyckel och autentiserar sig till klienten genom att returnera ett meddelande som autentiserats av klientens huvudnyckel.

Efterföljande data krypteras och autentiseras med nycklar härledda från denna huvudnyckel. I det andra steget, som är valfritt, skickar servern en begäran till klienten, och klienten autentiserar sig till servern genom att returnera begäran med sin egen digitala signatur och ett certifikat för publik nyckel.

SSL stöder en mängd olika kryptografiska algoritmer. Under upprättandet av kommunikationen används RSA:s publika nyckelkryptosystem. Efter nyckelutbytet används många olika chiffer: RC2, RC4, IDEA, DES och TripleDES. MD5 används också - en algoritm för att skapa ett meddelandesammandrag. Syntaxen för certifikat med publika nyckel beskrivs i X.509.

En av de viktiga fördelarna med SSL är dess fullständiga mjukvaruplattformsoberoende. Protokollet är utvecklat enligt principerna för portabilitet, och ideologin för dess konstruktion beror inte på de applikationer där det används. Dessutom är det också viktigt att andra protokoll transparent kan läggas ovanpå SSL-protokollet; antingen för att ytterligare öka skyddsgraden för målinformationsflöden, eller för att anpassa SSLs kryptografiska kapacitet för någon annan, väldefinierad uppgift.

SSL-anslutning

SFTP- och FTPS-protokoll

Den säkra kanalen som tillhandahålls av SSL har tre huvudegenskaper:

  • Kanalen är privat. Kryptering används för alla meddelanden efter en enkel dialog som tjänar till att fastställa den hemliga nyckeln.
  • Kanalen är autentiserad. Serversidan av konversationen är alltid autentiserad, medan klientsidan är valfritt autentiserad.
  • Kanalen är pålitlig. Meddelandetransport inkluderar integritetskontroll (med MAC).

Funktioner i FTPS

Det finns två implementeringar av FTPS som använder olika metoder för att tillhandahålla säkerhet:

  • Den implicita metoden innebär att man använder standard SSL-protokollet för att upprätta en session innan data skickas, vilket i sin tur bryter kompatibiliteten med vanliga FTP-klienter och servrar. För bakåtkompatibilitet med klienter som inte stöder FTPS, används TCP-port 990 för kontrollanslutningen och 989 för dataöverföring. Denna behåller standardport 21 för FTP-protokollet. Denna metod anses vara föråldrad.
  • Explicit är mycket bekvämare, eftersom det använder vanliga FTP-kommandon, men krypterar data när du svarar, vilket gör att du kan använda samma kontrollanslutning för både FTP och FTPS. Klienten måste uttryckligen begära säker dataöverföring från servern och sedan godkänna krypteringsmetoden. Om klienten inte begär en säker överföring har FTPS-servern rätt att antingen behålla eller stänga den osäkrade anslutningen. En förhandlingsmekanism för autentisering och datasäkerhet lades till under RFC 2228 som inkluderar det nya FTP AUTH-kommandot. Även om denna standard inte uttryckligen definierar säkerhetsmekanismer, specificerar den att en säker anslutning måste initieras av klienten med hjälp av algoritmen som beskrivs ovan. Om säkra anslutningar inte stöds av servern ska en felkod på 504 returneras. FTPS-klienter kan få information om säkerhetsprotokollen som stöds av servern med hjälp av FEAT-kommandot, dock behöver servern inte avslöja vilka säkerhetsnivåer den stödjer. De vanligaste FTPS-kommandona är AUTH TLS och AUTH SSL, som tillhandahåller TLS- respektive SSL-säkerhet.

SFTP

SFTP (Secure File Transfer Protocol) är ett filöverföringsprotokoll för applikationslager som körs ovanpå en säker kanal. Ej att förväxla med (Simple File Transfer Protocol), som har samma förkortning. Om FTPS helt enkelt är en förlängning av FTP, så är SFTP ett separat och icke-relaterat protokoll som använder SSH (Secure Shell) som grund.

Secure Shell

Protokollet utvecklades av en av IETF-grupperna som heter Secsh. Arbetsdokumentationen för det nya SFTP-protokollet blev inte en officiell standard utan började användas aktivt för applikationsutveckling. Därefter släpptes sex versioner av protokollet. Den gradvisa ökningen av funktionaliteten i det ledde dock till att det den 14 augusti 2006 beslutades att sluta arbeta med utvecklingen av protokollet på grund av slutförandet av projektets huvuduppgift (SSH-utveckling) och bristen av en tillräcklig expertnivå för att gå vidare till utvecklingen av ett fullfjädrat fjärrfilsystemprotokoll .

SSH är ett nätverksprotokoll som tillåter fjärrkontroll av operativsystemet och tunnling av TCP-anslutningar (till exempel för filöverföring). Liknar funktionaliteten till Telnet- och rlogin-protokollen, men till skillnad från dem krypterar det all trafik, inklusive överförda lösenord. SSH tillåter ett urval av olika krypteringsalgoritmer. SSH-klienter och SSH-servrar är tillgängliga för de flesta nätverksoperativsystem.

SSH låter dig säkert överföra nästan alla andra nätverksprotokoll i en osäkrad miljö. Således kan du inte bara arbeta på distans på din dator via kommandoskalet, utan också överföra en ljudström eller video (till exempel från en webbkamera) över en krypterad kanal. SSH kan också använda komprimering av överförda data för efterföljande kryptering, vilket är praktiskt till exempel för att fjärrstarta X WindowSystem-klienter.

Den första versionen av protokollet, SSH-1, utvecklades 1995 av forskaren Tatu Ulönen från Helsingfors tekniska högskola (Finland). SSH-1 skrevs för att ge större integritet än rlogin-, telnet- och rsh-protokollen. 1996 utvecklades en säkrare version av protokollet, SSH-2, som är inkompatibelt med SSH-1. Protokollet blev ännu mer populärt och år 2000 hade det cirka två miljoner användare. För närvarande betyder termen "SSH" vanligtvis SSH-2, eftersom Den första versionen av protokollet används nu praktiskt taget inte på grund av betydande brister. 2006 godkändes protokollet av IETF:s arbetsgrupp som en Internetstandard.

Det finns två vanliga implementeringar av SSH: privat kommersiell och fri öppen källkod. Den fria implementeringen kallas OpenSSH. År 2006 använde 80 % av datorerna på Internet OpenSSH. Den proprietära implementeringen är utvecklad av SSH Communications Security, ett helägt dotterbolag till Tectia Corporation, och är gratis för icke-kommersiellt bruk. Dessa implementeringar innehåller nästan samma uppsättning kommandon.

SSH-2-protokollet är, till skillnad från telnet-protokollet, motståndskraftigt mot trafikavlyssningsattacker ("sniffning"), men är inte motståndskraftigt mot man-in-the-middle-attacker. SSH-2-protokollet är också motståndskraftigt mot sessionskapningsattacker, eftersom det är omöjligt att gå med i eller kapa en redan etablerad session.

För att förhindra man-in-the-middle-attacker vid anslutning till en värd vars nyckel ännu inte är känd för klienten, visar klientprogramvaran användaren ett "nyckelfingeravtryck". Det rekommenderas att noggrant kontrollera "nyckelögonblicksbilden" som visas av klientprogramvaran med servernyckelöversiktsbilden, helst erhållen genom tillförlitliga kommunikationskanaler eller personligen.

SSH-stöd är tillgängligt på alla UNIX-liknande system, och de flesta har en ssh-klient och -server som standardverktyg. Det finns många implementeringar av SSH-klienter för icke-UNIX OS. Protokollet fick stor popularitet efter den omfattande utvecklingen av trafikanalysatorer och metoder för att störa driften av lokala nätverk, som en alternativ lösning till det osäkra Telnet-protokollet för att hantera viktiga noder.

Kommunikation med SSH

För att arbeta via SSH behöver du en SSH-server och en SSH-klient. Servern lyssnar efter anslutningar från klientdatorer och, när en anslutning upprättats, utför autentisering, varefter den börjar serva klienten. Klienten används för att logga in på en fjärrdator och utföra kommandon.

SFTP- och FTPS-protokoll

Jämförelse med FTPS

Det viktigaste som skiljer SFTP från standard FTP och FTPS är att SFTP krypterar absolut alla kommandon, användarnamn, lösenord och annan konfidentiell information.

Både FTPS- och SFTP-protokollen använder en kombination av asymmetriska algoritmer (RSA, DSA), symmetriska algoritmer (DES/3DES, AES, Twhofish, etc.), såväl som en nyckelutbytesalgoritm. För autentisering använder FTPS (eller för att vara mer exakt, SSL/TLS över FTP) X.509-certifikat, medan SFTP (SSH-protokoll) använder SSH-nycklar.

X.509-certifikat inkluderar en publik nyckel och viss information om ägarens certifikat. Denna information tillåter å andra sidan att verifiera integriteten av själva certifikatet, äktheten och ägaren till certifikatet. X.509-certifikat har en motsvarande privat nyckel, som vanligtvis lagras separat från certifikatet av säkerhetsskäl.

SSH-nyckeln innehåller endast den publika nyckeln (motsvarande privata nyckel lagras separat). Den innehåller ingen information om nyckelns ägare. Vissa SSH-implementationer använder X.509-certifikat för autentisering, men de verifierar faktiskt inte hela certifikatkedjan – bara den publika nyckeln används (vilket gör sådan autentisering ofullständig).

Slutsats

FTP-protokollet spelar utan tvekan fortfarande en viktig roll i lagring och distribution av information på nätverket trots sin ärevördiga ålder. Det är ett bekvämt, multifunktionellt och standardiserat protokoll. Många filarkiv har byggts på dess grund, utan vilka tekniskt arbete inte skulle vara så effektivt. Dessutom är det lätt att sätta upp och server- och klientprogram finns för nästan alla nuvarande och inte så aktuella plattformar.

I sin tur löser dess skyddade versioner problemet med konfidentialitet för lagrade och överförda data i den moderna världen. Båda nya protokollen har sina för- och nackdelar och fyller lite olika roller. I de områden där ett filarkiv behövs är det att föredra att använda FTPS, speciellt om klassisk FTP redan har använts där tidigare. SFTP är mindre vanligt på grund av dess inkompatibilitet med det gamla protokollet, men det är säkrare och har mer funktionalitet eftersom det är en del av fjärrhanteringssystemet.

Lista över källor

Källa: will.com

Lägg en kommentar