SFTP- og FTPS-protokoller

Forord

For bare en uge siden skrev jeg et essay om emnet angivet i titlen og blev konfronteret med det faktum, at lad os sige, at der ikke er så meget pædagogisk information på internettet. For det meste tørre fakta og opsætningsinstruktioner. Derfor besluttede jeg at rette lidt i teksten og poste den som en artikel.

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 Ethernet-protokoller. Dukkede op i 1971 og arbejdede oprindeligt i DARPA-netværk. I øjeblikket, ligesom HTTP, er filoverførsel baseret på en model bestående af et sæt TCP/IP (Transmission Control Protocol/Internet Protocol) protokoller. Defineret i RFC 959.

Protokollen definerer følgende:

  • Hvordan vil fejltjekket blive udført?
  • Datapakningsmetode (hvis der anvendes emballage)
  • Hvordan indikerer den afsendende enhed, at den har afsluttet en besked?
  • Hvordan indikerer den modtagende enhed, at den har modtaget en besked?

Kommunikation mellem klient og server

Lad os se nærmere på de processer, der opstår under FTP-drift. Forbindelsen initialiseres af brugerens protokolfortolker. Centralen styres via en kontrolkanal i TELNET-standarden. FTP-kommandoer genereres af brugerens protokolfortolker og sendes til serveren. Serverens svar sendes også til brugeren via kontrolkanalen. Generelt har brugeren mulighed for at etablere kontakt med serverens protokolfortolker og på andre måder end brugerens fortolker.

Hovedegenskaben ved FTP er, at den bruger dobbelte forbindelser. En af dem 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. Kontrolkanalen skal være åben ved overførsel af data mellem maskiner. Hvis den er lukket, stopper dataoverførslen. Gennem det andet sker der direkte dataoverførsel. Den åbner hver gang en filoverførsel finder sted mellem klienten og serveren. Hvis flere filer overføres samtidigt, åbner hver af dem sin egen transmissionskanal.

FTP kan fungere i aktiv eller passiv tilstand, hvis valg bestemmer, hvordan forbindelsen etableres. I aktiv tilstand opretter klienten en TCP-kontrolforbindelse med serveren og sender sin IP-adresse og et vilkårligt klientportnummer til serveren og venter derefter på, at serveren starter en TCP-forbindelse med denne adresse og portnummer. I tilfælde af at klienten er bag en firewall og ikke kan acceptere en indgående TCP-forbindelse, kan passiv tilstand bruges. I denne tilstand bruger klienten kontrolflowet til at sende en PASV-kommando til serveren og modtager derefter fra serveren sin IP-adresse og portnummer, som klienten derefter bruger til at åbne et dataflow fra sin vilkårlige port.

Det er muligt, at data kan overføres til en tredje maskine. I dette tilfælde organiserer brugeren en kontrolkanal med to servere og organiserer en direkte datakanal mellem dem. Kontrolkommandoer går gennem brugeren, og data går direkte mellem serverne.

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

  • ASCII – bruges til tekst. Dataene konverteres om nødvendigt fra tegnrepræsentationen på den afsendende vært til "otte-bit ASCII" før transmission og (igen, hvis det er nødvendigt) til tegnrepræsentationen på den modtagende vært. Især nye linjetegn ændres. Som et resultat er denne tilstand ikke egnet til filer, der indeholder mere end blot almindelig tekst.
  • Binær tilstand - afsenderenheden sender hver fil byte for byte, og modtageren gemmer strømmen af ​​bytes ved modtagelse. Understøttelse af denne tilstand er blevet anbefalet 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 - giver to computere med identiske indstillinger mulighed for at sende data i deres eget format uden at konvertere til ASCII.

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

  • Stream-tilstand - data sendes som en kontinuerlig strøm, hvilket frigør FTP fra at udføre enhver behandling. I stedet udføres al behandling af TCP. End-of-fil-indikatoren er ikke nødvendig, undtagen for at adskille data i poster.
  • Bloktilstand - FTP opdeler dataene i flere blokke (headerblok, antal bytes, datafelt) og sender dem derefter til TCP.
  • Komprimeringstilstand – data komprimeres ved hjælp af en enkelt algoritme (normalt ved at kode kørselslængder).

FTP-server er en server, der giver mulighed for at bruge File Transfer Protocol. Det har visse funktioner, der adskiller det fra konventionelle webservere:

  • Brugergodkendelse påkrævet
  • Alle handlinger udføres inden for den aktuelle session
  • Evne til at udføre forskellige handlinger med filsystemet
  • En separat kanal bruges til hver forbindelse

FTP-klient er et program, der giver dig mulighed for at oprette forbindelse til en ekstern server via FTP og også udføre de nødvendige handlinger på den med elementer af filsystemet. Klienten kan meget vel være en browser, i hvilken adresselinje du skal indtaste adressen, som er stien til en bestemt mappe eller fil på fjernserveren, i overensstemmelse med det generelle URL-blokdiagram:

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

Brug af en webbrowser i denne sammenhæng vil dog kun give dig mulighed for at se eller downloade de interesserede filer. For fuldt ud at drage fordel af alle fordelene ved FTP, bør du bruge specialiseret software som klient.

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.

Værten, der leverer FTP-tjenesten, 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 typisk bliver bedt om at angive deres e-mailadresse i stedet for en adgangskode, udføres der faktisk ingen verifikation. Mange FTP-værter, der leverer softwareopdateringer, understøtter anonym adgang.

Protokoldiagram

Klient-server-interaktionen under en FTP-forbindelse kan visualiseres som følger:

SFTP- og FTPS-protokoller

Sikker FTP

FTP var oprindeligt ikke beregnet til at være sikker, da det var beregnet til kommunikation mellem flere militære installationer og agenturer. Men med udviklingen og udbredelsen af ​​internettet er faren for uautoriseret adgang steget mange gange. Der var behov for at beskytte servere mod forskellige typer angreb. I maj 1999 opsummerede forfatterne af RFC 2577 sårbarhederne i følgende liste over problemer:

  • Skjulte angreb (bounce-angreb)
  • Spoof angreb
  • Brude kraftangreb
  • Pakkefangst, snusning
  • Port stjæle

Almindelig FTP har ikke mulighed for at overføre data i krypteret form, som et resultat af hvilket brugernavne, adgangskoder, kommandoer og anden information nemt og nemt kan opsnappes af angribere. Den sædvanlige løsning på dette problem er at bruge "sikre", TLS-beskyttede versioner af den sårbare protokol (FTPS) eller en anden, mere sikker protokol, såsom SFTP/SCP, der leveres med de fleste Secure Shell-protokolimplementeringer.

FTPS

FTPS (FTP + SSL) er en udvidelse af standard filoverførselsprotokollen, der tilføjer dens grundlæggende funktionalitet oprettelsen af ​​krypterede sessioner ved hjælp af SSL (Secure Sockets Layer) protokollen. I dag ydes beskyttelse af dets mere avancerede analoge TLS (Transport Layer Security).

SSL

SSL-protokollen blev foreslået af Netscape Communications i 1996 for at sikre sikkerheden og privatlivets fred for internetforbindelser. Protokollen understøtter klient- og servergodkendelse, er applikationsuafhængig og er gennemsigtig for HTTP-, FTP- og Telnet-protokoller.

SSL Handshake-protokollen består af to faser: servergodkendelse og valgfri klientgodkendelse. I det første trin reagerer serveren på klientens anmodning ved at sende dens certifikat- og krypteringsparametre. Klienten genererer derefter en hovednøgle, krypterer den med serverens offentlige nøgle og sender den til serveren. Serveren dekrypterer hovednøglen med dens private nøgle og autentificerer sig selv til klienten ved at returnere en meddelelse, der er autentificeret af klientens hovednøgle.

Efterfølgende data krypteres og autentificeres med nøgler afledt af denne hovednøgle. I det andet trin, som er valgfrit, sender serveren en anmodning til klienten, og klienten autentificerer sig selv til serveren ved at returnere anmodningen med sin egen digitale signatur og et offentligt nøglecertifikat.

SSL understøtter en række kryptografiske algoritmer. Under etableringen af ​​kommunikationen bruges RSA public key kryptosystem. Efter nøgleudvekslingen bruges mange forskellige cifre: RC2, RC4, IDEA, DES og TripleDES. MD5 bruges også - en algoritme til at lave en beskedsammenfatning. Syntaksen for offentlige nøglecertifikater er beskrevet i X.509.

En af de vigtige fordele ved SSL er dens fuldstændige software-platform-uafhængighed. Protokollen er udviklet efter principperne om portabilitet, og ideologien for dens konstruktion afhænger ikke af de applikationer, hvori den bruges. Derudover er det også vigtigt, at andre protokoller transparent kan overlejres oven på SSL-protokollen; enten for yderligere at øge graden af ​​beskyttelse af målinformationsstrømme eller for at tilpasse SSL's kryptografiske muligheder til en anden, veldefineret opgave.

SSL forbindelse

SFTP- og FTPS-protokoller

Den sikre kanal leveret af SSL har tre hovedegenskaber:

  • Kanalen er privat. Kryptering bruges til alle meddelelser efter en simpel dialog, der tjener til at bestemme den hemmelige nøgle.
  • Kanalen er godkendt. Serversiden af ​​samtalen er altid autentificeret, mens klientsiden er valgfrit autentificeret.
  • Kanalen er pålidelig. Beskedtransport inkluderer integritetskontrol (ved brug af MAC).

Funktioner af FTPS

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

  • Den implicitte metode involverer at bruge standard SSL-protokollen til at etablere en session før afsendelse af data, hvilket igen bryder kompatibiliteten med almindelige FTP-klienter og -servere. For bagudkompatibilitet med klienter, der ikke understøtter FTPS, bruges TCP-port 990 til kontrolforbindelsen, og 989 bruges til dataoverførsel. Denne bevarer standardport 21 til FTP-protokollen. Denne metode anses for at være forældet.
  • Eksplicit er meget mere praktisk, da det bruger standard FTP-kommandoer, men krypterer dataene, når de svarer, hvilket giver dig mulighed for at bruge den samme kontrolforbindelse til både FTP og FTPS. Klienten skal udtrykkeligt anmode om sikker dataoverførsel fra serveren og derefter godkende krypteringsmetoden. Hvis klienten ikke anmoder om en sikker overførsel, har FTPS-serveren ret til enten at opretholde eller lukke den usikrede forbindelse. En godkendelses- og datasikkerhedsforhandlingsmekanisme blev tilføjet under RFC 2228, som inkluderer den nye FTP AUTH-kommando. Selvom denne standard ikke eksplicit definerer sikkerhedsmekanismer, specificerer den, at en sikker forbindelse skal initieres af klienten ved hjælp af den ovenfor beskrevne algoritme. Hvis sikre forbindelser ikke understøttes af serveren, skal en fejlkode på 504 returneres. FTPS-klienter kan få information om de sikkerhedsprotokoller, der understøttes af serveren ved hjælp af FEAT-kommandoen, dog er serveren ikke forpligtet til at oplyse, hvilke sikkerhedsniveauer den bakker op. De mest almindelige FTPS-kommandoer er AUTH TLS og AUTH SSL, som giver henholdsvis TLS- og SSL-sikkerhed.

SFTP

SFTP (Secure File Transfer Protocol) er en applikationslags filoverførselsprotokol, der kører oven på en sikker kanal. Ikke at forveksle med (Simple File Transfer Protocol), som har samme forkortelse. Hvis FTPS blot er en udvidelse af FTP, så er SFTP en separat og ikke-relateret protokol, der bruger SSH (Secure Shell) som sin basis.

Secure Shell

Protokollen blev udviklet af en af ​​IETF-grupperne kaldet Secsh. Arbejdsdokumentationen for den nye SFTP-protokol blev ikke en officiel standard, men begyndte at blive brugt aktivt til applikationsudvikling. Efterfølgende blev seks versioner af protokollen frigivet. Den gradvise stigning i funktionaliteten i den førte dog til, at det den 14. august 2006 blev besluttet at stoppe arbejdet med udviklingen af ​​protokollen på grund af færdiggørelsen af ​​projektets hovedopgave (SSH-udvikling) og manglen på et tilstrækkeligt ekspertniveau til at gå videre til udviklingen af ​​en fuldgyldig fjernfilsystemprotokol.

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

SSH giver dig mulighed for sikkert at overføre næsten enhver anden netværksprotokol i et usikret miljø. Således kan du ikke kun arbejde eksternt på din computer gennem kommandoskallen, men også transmittere en lydstream eller video (for eksempel fra et webcam) over en krypteret kanal. SSH kan også bruge komprimering af transmitterede data til efterfølgende kryptering, hvilket er praktisk, for eksempel til fjernstart af X WindowSystem-klienter.

Den første version af protokollen, SSH-1, blev udviklet i 1995 af forsker Tatu Ulönen fra Helsinki University of Technology (Finland). SSH-1 blev skrevet for at give større privatliv end rlogin-, telnet- og rsh-protokollerne. I 1996 blev der udviklet en mere sikker version af protokollen, SSH-2, som er inkompatibel med SSH-1. Protokollen vandt endnu mere popularitet, og i 2000 havde den cirka to millioner brugere. I øjeblikket betyder udtrykket "SSH" normalt SSH-2, fordi Den første version af protokollen er nu praktisk talt ikke brugt på grund af væsentlige mangler. I 2006 blev protokollen godkendt af IETF-arbejdsgruppen som en internetstandard.

Der er to almindelige implementeringer af SSH: privat kommerciel og gratis open source. Den gratis implementering kaldes OpenSSH. I 2006 brugte 80% af computere på internettet OpenSSH. Den proprietære implementering er udviklet af SSH Communications Security, et helejet datterselskab af Tectia Corporation, og er gratis til ikke-kommerciel brug. Disse implementeringer indeholder næsten det samme sæt kommandoer.

SSH-2-protokollen er, i modsætning til telnet-protokollen, modstandsdygtig over for trafikaflytningsangreb ("sniffing"), men er ikke modstandsdygtig over for man-in-the-middle-angreb. SSH-2-protokollen er også modstandsdygtig over for sessionskapringsangreb, da det er umuligt at deltage i eller kapre en allerede etableret session.

For at forhindre man-in-the-middle-angreb, når der oprettes forbindelse til en vært, hvis nøgle endnu ikke er kendt af klienten, viser klientsoftwaren brugeren et "nøglefingeraftryk". Det anbefales omhyggeligt at kontrollere "nøgle-snapshot" vist af klientsoftwaren med servernøgle-snapshot, fortrinsvis opnået gennem pålidelige kommunikationskanaler eller personligt.

SSH-understøttelse er tilgængelig på alle UNIX-lignende systemer, og de fleste har en ssh-klient og -server som standardværktøjer. Der er mange implementeringer af SSH-klienter til ikke-UNIX OS'er. Protokollen vandt stor popularitet efter den udbredte udvikling af trafikanalysatorer og metoder til at forstyrre driften af ​​lokale netværk, som en alternativ løsning til den usikre Telnet-protokol til styring af vigtige noder.

Kommunikation ved hjælp af SSH

For at arbejde via SSH skal du bruge en SSH-server og en SSH-klient. Serveren lytter efter forbindelser fra klientmaskiner og, når en forbindelse er etableret, udfører den autentificering, hvorefter den begynder at servicere klienten. Klienten bruges til at logge ind på en ekstern maskine og udføre kommandoer.

SFTP- og FTPS-protokoller

Sammenligning med FTPS

Det vigtigste, der adskiller SFTP fra standard FTP og FTPS, er, at SFTP krypterer absolut alle kommandoer, brugernavne, adgangskoder og andre fortrolige oplysninger.

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

X.509-certifikater inkluderer en offentlig nøgle og nogle oplysninger om ejerens certifikat. Disse oplysninger giver på den anden side mulighed for at verificere integriteten af ​​selve certifikatet, ægtheden og ejeren af ​​certifikatet. X.509-certifikater har en tilsvarende privat nøgle, som normalt opbevares separat fra certifikatet af sikkerhedsmæssige årsager.

SSH-nøglen indeholder kun den offentlige nøgle (den tilsvarende private nøgle gemmes separat). Den indeholder ingen oplysninger om ejeren af ​​nøglen. Nogle SSH-implementeringer bruger X.509-certifikater til godkendelse, men de verificerer faktisk ikke hele certifikatkæden – kun den offentlige nøgle bruges (hvilket gør en sådan godkendelse ufuldstændig).

Konklusion

FTP-protokollen spiller utvivlsomt stadig en vigtig rolle i lagring og distribution af information på netværket på trods af dens ærværdige alder. Det er en bekvem, multifunktionel og standardiseret protokol. Mange filarkiver er bygget på dets grundlag, uden hvilke teknisk arbejde ikke ville være så effektivt. Derudover er det nemt at sætte op, og server- og klientprogrammer findes til næsten alle nuværende og knap så aktuelle platforme.

Til gengæld løser dens beskyttede versioner problemet med fortrolighed af lagrede og transmitterede data i den moderne verden. Begge nye protokoller har deres fordele og ulemper og tjener lidt forskellige roller. I de områder, hvor der er behov for et filarkiv, er det at foretrække at bruge FTPS, især hvis klassisk FTP allerede har været brugt der før. SFTP er mindre almindeligt på grund af dets inkompatibilitet med den gamle protokol, men det er mere sikkert og har mere funktionalitet, da det er en del af fjernstyringssystemet.

Liste over kilder

Kilde: www.habr.com

Tilføj en kommentar