Protokoller SFTP og FTPS

Forord

For literally a week ago, I was writing a paper on the topic indicated in the title and encountered the situation that, let's say, there isn't much informative content online. Mostly dry facts and setup instructions. Therefore, I decided to slightly modify the text and publish it as an article.

Hvad er FTP

FTP (File Transfer Protocol) – er en protokol til overførsel af filer over et netværk. Det er en af de grundlæggende protokoller i Ethernet. Den blev introduceret i 1971 og arbejdede oprindeligt i DARPA-netværk. I dag, ligesom HTTP, er filoverførsel baseret på en model, der består af en række TCP/IP (Transmission Control Protocol/Internet Protocol) protokoller. Defineret i RFC 959.

Protokollen definerer følgende:

  • Hvordan fejlkontrol vil blive udført
  • Dataindpakningsmetode (hvis indpakning anvendes)
  • Hvordan senderen meddeler, at den har afsluttet meddelelsen
  • Hvordan modtageren meddeler, at den har modtaget meddelelsen

Interaktion mellem klient og server

Lad os se nærmere på de processer, der foregår under FTP. Forbindelsen initieres af brugerens protokollinterpreter. Styringen af kommunikationen sker over kontrolkanalen efter TELNET-standarden. FTP-kommandoer genereres af brugerens protokollinterpreter og sendes til serveren. Serverens svar sendes også til brugeren via kontrolkanalen. Generelt har brugeren mulighed for at etablere kontakt med serverens protokollinterpreter ved hjælp af andre midler end brugerens protokollinterpreter.

Den grundlæggende egenskab ved FTP er, at det bruger en dobbelt forbindelse. Den ene bruges til at sende kommandoer til serveren og sker som standard via TCP-port 21, som kan ændres. Kontrolforbindelsen eksisterer, så længe klienten kommunikerer med serveren. Kontrollkanalen skal være åben, når der overføres data mellem maskiner. Hvis den lukkes, stopper dataoverførslen. Gennem den anden forbindelse sker den direkte dataoverførsel. Den åbnes hver gang, der foretages en filoverførsel mellem klienten og serveren. Hvis flere filer overføres samtidigt, åbnes der en dedikeret overførselskanal for hver af dem.

FTP kan arbejde i aktiv eller passiv tilstand, afhængigt af hvordan forbindelsen oprettes. I aktiv tilstand etablerer klienten en styrende TCP-forbindelse til serveren og sender sin IP-adresse og et vilkårligt nummer for klientens port til serveren, hvorefter den venter på, at serveren opretter en TCP-forbindelse til denne adresse og portnummer. Hvis klienten befinder sig bag en firewall og ikke kan modtage en indgående TCP-forbindelse, kan den passiv tilstand anvendes. I denne tilstand bruger klienten kontrolstrømmen til at sende serveren en PASV-kommando og får derefter serverens IP-adresse og portnummer, som klienten derefter bruger til at åbne en datastream fra sin vilkårlige port.

Der kan opstå situationer, hvor data kan overføres til en tredje maskine. I dette tilfælde opretter brugeren en kontrolkanal med to servere og organiserer en direkte datakanal mellem dem. Kontrolkommandoer går gennem brugeren, mens dataoverførslen sker direkte mellem serverne.

Ved dataoverførsel over netværket kan der anvendes fire datavisninger:

  • ASCII - bruges til tekst. Data konverteres, hvis nødvendigt, fra det symbolske format på afsendende vært til 'otte-bit ASCII' før overførsel, og (igen, hvis nødvendigt) til det symbolske format for den modtagende vært. Især ændres linjeskifttegn. Som følge heraf er denne tilstand ikke egnet til filer, der indeholder andet end almindelig tekst.
  • Binær tilstand - afsenderen sender hver fil byte for byte, og modtageren gemmer byte-strømmen ved modtagelse. Understøttelse af denne tilstand anbefales til alle FTP-implementeringer.
  • EBCDIC - bruges til at overføre almindelig tekst mellem værter i EBCDIC-kodning. Ellers ligner denne tilstand ASCII-tilstanden.
  • Lokal tilstand - tillader to computere med identiske indstillinger at sende data i deres eget format uden konvertering til ASCII.

Dataoverførsel kan finde sted i en hvilken som helst af de tre tilstande:

  • Strømtilstand - data sendes som en kontinuerlig strøm, hvilket frigør FTP fra at udføre nogen form for behandling. I stedet udføres al behandling af TCP. En filslutindikator er ikke nødvendig, undtagen ved opdeling af data i pladser.
  • Blockmodus – FTP opdeler data i flere blokke (blokheader, antal bytes, datakilde) og sender dem derefter via TCP.
  • Komprimeringsmodus – data komprimeres med en fælles algoritme (normalt ved kodning af sekvenslængder).

FTP-server – det er en server, der muliggør brugen af filoverførselsprotokollen. Den har visse egenskaber, der adskiller den fra almindelige webservere:

  • Brugerautentificering er nødvendig
  • Alle operationer udføres inden for den aktuelle session
  • Muligheden for at udføre forskellige handlinger med filsystemet
  • Der anvendes en separat kanal for hver forbindelse

FTP-klient – det er et program, der giver mulighed for at oprette forbindelse til en fjernserver via FTP og også udføre de nødvendige handlinger med filsystemets elementer. En klient kan meget vel være en browser, hvor adresselinjen skal indeholde adressen, der repræsenterer stien til et bestemt katalog eller en fil på den fjernserver, i overensstemmelse med den generelle blokdiagram for URL:

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

Men brugen af en webbrowser i denne sammenhæng vil kun tillade visning eller download af ønskede filer. For at udnytte alle fordelene ved FTP fuldt ud bør der anvendes specialiseret software som klient.

FTP-autentificering bruger et brugernavn/adgangskode-system til at give adgang. Brugernavnet sendes til serveren med kommandoen USER, og adgangskoden med kommandoen PASS. Hvis de oplysninger, klienten sender, accepteres af serveren, vil serveren sende en invitation til klienten, og sessionen begynder. Brugere kan, hvis serveren understøtter denne funktion, logge ind uden at give legitimationsoplysninger, men serveren kan kun give begrænset adgang til sådanne sessioner.

Værten, der leverer FTP-tjenesten, kan give anonym adgang til FTP. Brugere logger normalt ind som "anonymous" (kan være skelnen mellem store og små bogstaver på nogle FTP-servere) som brugernavn. Selvom brugerne normalt bedes sende deres e-mailadresse i stedet for en adgangskode, udføres der faktisk ingen kontrol. Mange FTP-værter, der tilbyder softwareopdateringer, understøtter anonym adgang.

Protokolskema

Interaktionen mellem 'klient-server' ved FTP-forbindelse kan illustreres som følger:

Protokoller SFTP og FTPS

Sikker FTP

FTP blev oprindeligt ikke designet som en sikker løsning, da det var beregnet til kommunikation mellem flere militære objekter og institutioner. Men med udviklingen og udbredelsen af internettet er risikoen for uautoriseret adgang steget betydeligt. Der opstod behov for at beskytte servere mod forskellige former for angreb. I maj 1999 opsummerede forfatterne af RFC 2577 sårbarhederne i følgende liste over problemer:

  • Skjulte angreb (bounce attacks)
  • Spoof-angreb (spoof attacks)
  • Brute force angreb (brute force attacks)
  • Pakkeoptagelse, sniffing (packet capture, sniffing)
  • Porttyveri (port stealing)

Standard FTP har ikke mulighed for at overføre data i krypteret form, hvilket betyder, at brugernavne, adgangskoder, kommandoer og anden information nemt kan opfanges af ondsindede aktører. En almindelig løsning på dette problem er at bruge 'sikre', TLS-beskyttede versioner af den sårbare protokol (FTPS) eller en anden, mere sikker protokol som SFTP/SCP, der tilbydes med de fleste implementeringer af Secure Shell-protokollen.

FTPS

FTPS (FTP + SSL) er en udvidelse af den standard filoverførselsprotokol, der tilføjer muligheden for at etablere krypterede sessioner ved hjælp af SSL-protokollen (Secure Sockets Layer - sikre socketlag). I dag sikres beskyttelsen af dens mere avancerede pendant TLS (Transport Layer Security - transportlagsbeskyttelse).

SSL

SSL-protokollen blev tilbudt af Netscape Communications i 1996 for at sikre sikkerhed og fortrolighed af internetforbindelser. Protokollen understøtter autentificering af både klient og server, er uafhængig af applikationer og er gennemsigtig for HTTP, FTP og Telnet protokoller.

SSL-handshake-protokollen består af to trin: autentificering af serveren og valgfri autentificering af klienten. I den første fase sender serveren sit certifikat og krypteringsparametre som svar på klientens anmodning. Derefter genererer klienten en master-nøgle, krypterer den med serverens offentlige nøgle og sender den til serveren. Serveren dekrypterer master-nøglen med sin private nøgle og bekræfter sin autentiskhed over for klienten ved at returnere en meddelelse, der er underskrevet med klientens master-nøgle.

De følgende data krypteres og verificeres med nøgler, der er opnået ud fra denne master-nøgle. I det andet trin, som ikke er obligatorisk, sender serveren en anmodning til klienten, som bekræfter serverens autenticitets ved at returnere anmodningen med sin egen digitale signatur og offentlige nøglecertifikat.

SSL understøtter forskellige kryptografiske algoritmer. Ved oprettelse af forbindelse anvendes RSA offentlige nøgle kryptosystemet. Efter nøgleudveksling bruges mange forskellige krypteringsmetoder: RC2, RC4, IDEA, DES og TripleDES. MD5 anvendes også - en algoritme til at generere besked-digests. Syntaksen for offentlige nøglecertifikater er beskrevet i X.509.

En af de vigtigste fordele ved SSL er dets fulde software- og platformuafhængighed. Protokollen er udviklet på principperne for portabilitet, og ideologien bag dens konstruktion er ikke afhængig af de applikationer, den anvendes i. Desuden er det vigtigt, at andre protokoller kan pålægges oven på SSL-protokollen; enten for at øge beskyttelsen af de specifikke informationsstrømme yderligere, eller for at tilpasse SSL's kryptografiske evner til en bestemt opgave.

SSL-forbindelse

Protokoller SFTP og FTPS

Den sikrede kanal, der tilbydes af SSL, har tre grundlæggende egenskaber:

  • Kanal er privat. Kryptering bruges til alle meddelelser efter den simple dialog, der bruges til at fastlægge den hemmelige nøgle.
  • Kanal er autentificeret. Serversiden af dialogen autentificeres altid, mens klienten autentificeres valgfrit.
  • Kanal er pålidelig. Transport af meddelelser inkluderer integritetskontrol (med MAC involveret).

FTPS-funktioner

Der er to implementeringer af FTPS, der bruger forskellige metoder til at sikre sikkerhed:

  • Den implicitte metode forudsætter anvendelsen af den standard SSL-protokol med oprettelse af session før overførsel af data, hvilket i sig selv bryder kompatibiliteten med almindelige FTP-klienter og servere. For at sikre bagudkompatibilitet med klienter, der ikke understøtter FTPS, bruges TCP-port 990 til kontrolforbindelsen, mens 989 bruges til dataoverførsel. Dette gør det muligt at bevare standardport 21 til FTP-protokollen. Denne metode anses for at være forældet.
  • Explicit – er meget mere praktisk, da det bruger standard FTP-kommandoer, men krypterer data ved svar, hvilket gør det muligt at bruge den samme styresammenkobling til både FTP og FTPS. Klienten skal eksplicit anmode om beskyttet dataoverførsel fra serveren og derefter godkende krypteringsmetoden. Hvis klienten ikke anmoder om beskyttet overførsel, har FTPS-serveren ret til både at bevare og lukke den ubeskyttede forbindelse. Mekanismen til identifikation og databeskyttelse blev tilføjet under RFC 2228, som inkluderer en ny FTP-kommando AUTH. Selvom denne standard ikke specifikt definerer beskyttelsesmekanismer, angiver den, at en beskyttet forbindelse skal initieres af klienten ved hjælp af den ovenfor beskrevne algoritme. Hvis de beskyttede forbindelser ikke understøttes af serveren, skal der returneres en fejlkode 504. FTPS-klienter kan få information om de sikkerhedsprotokoller, som serveren understøtter, ved hjælp af kommandoen FEAT, men serveren er ikke forpligtet til at afsløre, hvilke sikkerhedsniveauer den understøtter. De mest almindelige FTPS-kommandoer er AUTH TLS og AUTH SSL, som henholdsvis sikrer TLS og SSL.

SFTP

SFTP (Secure File Transfer Protocol) – er en applikationslag-protokol til filoverførsel, der arbejder over en sikker kanal. Må ikke forveksles med (Simple File Transfer Protocol), som har den samme forkortelse. Mens FTPS blot er en udvidelse af FTP, er SFTP en separat og uafhængig protokol, der bruger SSH (Secure Shell - sikker skal) som base.

Secure Shell

Udviklingen af protokollen blev håndteret af en af IETF-grupperne ved navn Secsh. Arbejdende dokumentation for den nye SFTP-protokol blev ikke til en officiel standard, men blev aktivt anvendt til udvikling af applikationer. Senere blev der udgivet seks versioner af protokollen. Imidlertid førte den gradvise opbygning af funktionalitet i den til, at det den 14. august 2006 blev besluttet at stoppe arbejdet med udviklingen af protokollen på grund af opfyldelsen af projektets hovedmål (udviklingen af SSH) og mangel på tilstrækkeligt ekspertise niveau til at gå videre med udviklingen af en fuldgyldig fjernfil-system protokol.

SSH er en netværksprotokol, der muliggør fjernstyring af operativsystemet og tunneling af TCP-forbindelser (for eksempel til filoverførsel). Den er funktionelt sammenlignelig med protokollerne Telnet og rlogin, men i modsætning til dem krypterer den al trafik, inklusive de overførte adgangskoder. SSH tillader valg af forskellige krypteringsalgoritmer. SSH-klienter og SSH-servere er tilgængelige for de fleste netværksoperativsystemer.

SSH muliggør sikker overførsel af praktisk talt enhver anden netværksprotokol i en usikret miljø. På denne måde kan man ikke kun arbejde fjern på computeren gennem kommandolinjen, men også overføre lydstreaming eller video (for eksempel fra et webcam) gennem en krypteret forbindelse. Derudover kan SSH bruge komprimering af de overførte data til efterfølgende kryptering, hvilket er nyttigt for eksempel ved fjernstart af X Window System-klienter.

Den første version af protokollen, SSH-1, blev udviklet i 1995 af forskeren Tatu Ylönen fra Helsinki Teknologiske Universitet (Finland). SSH-1 blev skrevet for at sikre større fortrolighed end protokollerne rlogin, telnet og rsh. I 1996 blev en mere sikker version af protokollen, SSH-2, udviklet, som ikke er kompatibel med SSH-1. Protokollen blev endnu mere populær, og i 2000 havde den omkring to millioner brugere. I dag referer termen "SSH" normalt til SSH-2, da den første version af protokollen på grund af betydelige mangler nu stort set ikke anvendes. I 2006 blev protokollen godkendt af IETF's arbejdsgruppe som en internetstandard.

Der findes to udbredte implementeringer af SSH: en privat kommerciel og en gratis open source. Den frie implementering kaldes OpenSSH. Indtil 2006 anvendte 80 % af internettets computere netop OpenSSH. Den private implementering udvikles af SSH Communications Security, som er et 100 % datterselskab af Tectia Corporation, og den er gratis til ikke-kommerciel brug. Disse implementeringer indeholder praktisk talt det samme sæt af kommandoer.

Protokol SSH-2, i modsætning til telnet-protokollen, er modstandsdygtig over for trafikaflytning ("sniffing"), men ikke modstandsdygtig over for "mand-i-midt"-angreb. Protokol SSH-2 er også resistent over for session-hijacking, da det er umuligt at tilslutte sig en allerede etableret session eller opfange den.

For at forhindre "mand-i-midt"-angreb ved forbindelse til en vært, hvis nøgle endnu ikke er kendt af klienten, viser klientsoftwaren brugeren en "nøglefingeraftryk" ("key fingerprint"). Det anbefales nøje at tjekke det viste nøglefingeraftryk mod serverens fingeraftryk, helst opnået via pålidelige kommunikationskanaler eller personligt.

SSH-support er implementeret i alle UNIX-lignende systemer, og de fleste af dem har både SSH-klient og server som standardværktøjer. Der findes mange implementeringer af SSH-klienter til ikke-UNIX-operativsystemer. Protokollen blev populær efter den brede udvikling af trafikanalysatorer og metoder til at forstyrre lokale netværk som en alternativ, usikker protokol til Telnet til styring af vigtige knudepunkter.

Kommunikation ved brug af SSH

For at arbejde med SSH kræves en SSH-server og en SSH-klient. Serveren lytter efter forbindelser fra klientmaskiner og ved etablering af forbindelsen udfører den autentifikation, hvorefter klienten begynder sin behandling. Klienten bruges til at logge ind på en fjernmaskine og udføre kommandoer.

Protokoller SFTP og FTPS

Sammenligning med FTPS

Det vigtigste, der adskiller SFTP fra standard FTP og FTPS, er, at SFTP krypterer alle kommandoer, brugernavne, adgangskoder og anden fortrolig information.

Både FTPS og SFTP bruger en kombination af asymmetrisk algoritmer (RSA, DSA), symmetrisk algoritmer (DES/3DES, AES, Twhofish osv.), samt en nøgleudvekslingsalgoritme. Til autentifikation bruger FTPS (eller, for at være mere præcis, SSL/TLS over FTP) X.509-certifikater, mens SFTP (SSH-protokollen) bruger SSH-nøgler.

X.509-certifikater indeholder en offentlig nøgle og visse oplysninger om certifikatindehaveren. Disse oplysninger gør det muligt at verificere integriteten af certifikatet, ægtheden og ejeren af certifikatet. X.509-certifikater har en tilhørende privat nøgle, som normalt opbevares adskilt fra certifikatet af sikkerhedsmæssige årsager.

SSH-nøglen indeholder kun den offentlige nøgle (den tilsvarende private nøgle opbevares separat). Den indeholder ingen oplysninger om nøgleejeren. Nogle SSH-implementeringer bruger X.509-certifikater til autentifikation, men de kontrollerer faktisk ikke hele certifikatkæden — kun den offentlige nøgle anvendes (hvilket gør en sådan autentifikation ufuldstændig).

Konklusion

FTP-protokollen spiller stadig en vigtig rolle i opbevaring og distribution af information på nettet, på trods af sin lange anciennitet. Det er en praktisk, multifunktionel og standardiseret protokol. Mange filarkiver, som er afgørende for effektivt teknisk arbejde, er bygget på den. Desuden er den nem at konfigurere, og server- og klientprogrammer findes praktisk talt til alle relevante og mindre relevante platforme.

Dets sikre versioner løser imidlertid problemet med fortrolighed af gemte og overførte data i den moderne verden. Begge nye protokoller har deres fordele og ulemper og opfylder lidt forskellige roller. I de områder, hvor et filarkiv er nødvendigt, er det bedst at bruge FTPS, især hvis den klassiske FTP allerede er blevet anvendt der. SFTP er mindre udbredt på grund af sin inkompatibilitet med den gamle protokol, men den er mere sikker og har større funktionalitet, da den er en del af systemet til fjernadministration.

Liste over kilder

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster