SFTP- og FTPS-protokoller

Forord

For bare en uke siden skrev jeg et essay om emnet som er angitt i tittelen, og ble møtt med det faktum at, la oss si, det er ikke så mye pedagogisk informasjon på Internett. Stort sett tørre fakta og oppsettinstruksjoner. Derfor bestemte jeg meg for å korrigere teksten litt og legge den ut som en artikkel.

Hva er FTP

FTP (File Transfer Protocol) er en protokoll for overføring av filer over et nettverk. Det er en av de grunnleggende Ethernet-protokollene. Dukket opp i 1971 og jobbet først i DARPA-nettverk. Foreløpig, som HTTP, er filoverføring basert på en modell som består av et sett med TCP/IP (Transmission Control Protocol/Internet Protocol) protokoller. Definert i RFC 959.

Protokollen definerer følgende:

  • Hvordan vil feilkontrollen bli utført?
  • Datapakkemetode (hvis emballasje brukes)
  • Hvordan indikerer avsenderenheten at den har fullført en melding?
  • Hvordan indikerer mottakerenheten at den har mottatt en melding?

Kommunikasjon mellom klient og server

La oss se nærmere på prosessene som skjer under FTP-drift. Forbindelsen initialiseres av brukerens protokolltolker. Sentralen styres via en kontrollkanal i TELNET-standarden. FTP-kommandoer genereres av brukerens protokolltolk og sendes til serveren. Serverens svar sendes også til brukeren via kontrollkanalen. Generelt har brukeren muligheten til å etablere kontakt med serverens protokolltolk og på andre måter enn brukerens tolk.

Hovedfunksjonen til FTP er at den bruker doble tilkoblinger. En av dem brukes til å sende kommandoer til serveren og skjer som standard via TCP-port 21, som kan endres. Kontrollforbindelsen eksisterer så lenge klienten kommuniserer med serveren. Kontrollkanalen skal være åpen ved overføring av data mellom maskiner. Hvis den er lukket, stopper dataoverføringen. Gjennom den andre skjer direkte dataoverføring. Den åpnes hver gang det skjer en filoverføring mellom klienten og serveren. Hvis flere filer overføres samtidig, åpner hver av dem sin egen overføringskanal.

FTP kan fungere i aktiv eller passiv modus, valget av hvilken avgjør hvordan forbindelsen etableres. I aktiv modus oppretter klienten en TCP-kontrollforbindelse med serveren og sender sin IP-adresse og et vilkårlig klientportnummer til serveren, og venter deretter på at serveren skal starte en TCP-forbindelse med denne adressen og portnummeret. I tilfelle klienten er bak en brannmur og ikke kan akseptere en innkommende TCP-tilkobling, kan passiv modus brukes. I denne modusen bruker klienten kontrollflyten til å sende en PASV-kommando til serveren, og mottar deretter fra serveren sin IP-adresse og portnummer, som klienten deretter bruker til å åpne en dataflyt fra sin vilkårlige port.

Det er mulig at data kan overføres til en tredje maskin. I dette tilfellet organiserer brukeren en kontrollkanal med to servere og organiserer en direkte datakanal mellom dem. Kontrollkommandoer går gjennom brukeren, og data går direkte mellom serverne.

Når du overfører data over et nettverk, kan fire datarepresentasjoner brukes:

  • ASCII – brukes til tekst. Dataene konverteres, om nødvendig, fra tegnrepresentasjonen på avsenderverten til "åtte-bits ASCII" før overføring, og (igjen, om nødvendig) til tegnrepresentasjonen på mottakerverten. Spesielt er nylinjetegn endret. Som et resultat er denne modusen ikke egnet for filer som inneholder mer enn bare ren tekst.
  • Binær modus - avsenderenheten sender hver fil byte for byte, og mottakeren lagrer strømmen av byte ved mottak. Støtte for denne modusen er anbefalt for alle FTP-implementeringer.
  • EBCDIC – brukes til å overføre ren tekst mellom verter i EBCDIC-koding. Ellers ligner denne modusen på ASCII-modus.
  • Lokal modus - lar to datamaskiner med identiske innstillinger sende data i sitt eget format uten å konvertere til ASCII.

Dataoverføring kan utføres i en av tre moduser:

  • Strømmodus - data sendes som en kontinuerlig strøm, og frigjør FTP fra å utføre noen behandling. I stedet gjøres all behandling av TCP. End-of-fil-indikatoren er ikke nødvendig bortsett fra for å separere data i poster.
  • Blokkmodus - FTP deler dataene inn i flere blokker (overskriftsblokk, antall byte, datafelt) og overfører dem deretter til TCP.
  • Komprimeringsmodus – data komprimeres ved hjelp av en enkelt algoritme (vanligvis ved å kode kjørelengder).

FTP-server er en server som gir muligheten til å bruke filoverføringsprotokollen. Den har visse funksjoner som skiller den fra konvensjonelle webservere:

  • Brukerautentisering kreves
  • Alle operasjoner utføres innenfor gjeldende økt
  • Evne til å utføre ulike handlinger med filsystemet
  • En egen kanal brukes for hver tilkobling

FTP-klient er et program som lar deg koble til en ekstern server via FTP og også utføre de nødvendige handlingene på den med elementer av filsystemet. Klienten kan godt være en nettleser, i adressefeltet som du skal skrive inn adressen til, som er banen til en bestemt katalog eller fil på den eksterne serveren, i samsvar med det generelle URL-blokkdiagrammet:

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

Imidlertid vil bruk av en nettleser i denne sammenhengen bare tillate deg å se eller laste ned filene av interesse. For å utnytte alle fordelene med FTP fullt ut, bør du bruke spesialisert programvare som klient.

FTP-autentisering bruker et brukernavn/passordskjema for å gi tilgang. Brukernavnet sendes til serveren med USER-kommandoen, og passordet sendes med PASS-kommandoen. Hvis informasjonen gitt av klienten godtas av serveren, vil serveren sende en invitasjon til klienten og økten starter. Brukere kan, hvis serveren støtter denne funksjonen, logge på uten å oppgi legitimasjon, men serveren kan bare gi begrenset tilgang for slike økter.

Verten som tilbyr FTP-tjenesten kan gi anonym FTP-tilgang. Brukere logger vanligvis på med "anonym" (kan skille mellom store og små bokstaver på enkelte FTP-servere) som brukernavn. Selv om brukere vanligvis blir bedt om å oppgi e-postadressen sin i stedet for et passord, utføres det faktisk ingen bekreftelse. Mange FTP-verter som tilbyr programvareoppdateringer støtter anonym tilgang.

Protokolldiagram

Klient-server-interaksjonen under en FTP-tilkobling kan visualiseres som følger:

SFTP- og FTPS-protokoller

Sikker FTP

FTP var opprinnelig ikke ment å være sikker, da den var ment for kommunikasjon mellom flere militære installasjoner og byråer. Men med utviklingen og spredningen av Internett har faren for uautorisert tilgang økt mange ganger. Det var behov for å beskytte servere mot ulike typer angrep. I mai 1999 oppsummerte forfatterne av RFC 2577 sårbarhetene i følgende liste over problemer:

  • Skjulte angrep (sprettangrep)
  • Spoof angrep
  • Brude kraftangrep
  • Pakkefangst, snusing
  • Port stjele

Vanlig FTP har ikke muligheten til å overføre data i kryptert form, som et resultat av at brukernavn, passord, kommandoer og annen informasjon enkelt og enkelt kan fanges opp av angripere. Den vanlige løsningen på dette problemet er å bruke "sikre", TLS-beskyttede versjoner av den sårbare protokollen (FTPS) eller en annen, sikrere protokoll, for eksempel SFTP/SCP, som følger med de fleste Secure Shell-protokollimplementeringene.

FTPS

FTPS (FTP + SSL) er en utvidelse av standard filoverføringsprotokoll som legger til sin grunnleggende funksjonalitet opprettelsen av krypterte økter ved hjelp av SSL (Secure Sockets Layer)-protokollen. I dag er beskyttelsen gitt av dens mer avanserte analoge TLS (Transport Layer Security).

SSL

SSL-protokollen ble foreslått av Netscape Communications i 1996 for å sikre sikkerheten og personvernet til Internett-tilkoblinger. Protokollen støtter klient- og serverautentisering, er applikasjonsuavhengig og er gjennomsiktig for HTTP-, FTP- og Telnet-protokoller.

SSL Handshake-protokollen består av to trinn: serverautentisering og valgfri klientautentisering. I det første trinnet svarer serveren på klientens forespørsel ved å sende sertifikatet og krypteringsparametrene. Klienten genererer deretter en hovednøkkel, krypterer den med serverens offentlige nøkkel og sender den til serveren. Serveren dekrypterer hovednøkkelen med sin private nøkkel og autentiserer seg selv til klienten ved å returnere en melding som er autentisert av klientens hovednøkkel.

Påfølgende data krypteres og autentiseres med nøkler som er hentet fra denne hovednøkkelen. I det andre trinnet, som er valgfritt, sender serveren en forespørsel til klienten, og klienten autentiserer seg til serveren ved å returnere forespørselen med sin egen digitale signatur og et offentlig nøkkelsertifikat.

SSL støtter en rekke kryptografiske algoritmer. Under etableringen av kommunikasjon brukes RSA offentlig nøkkel kryptosystem. Etter nøkkelutvekslingen brukes mange forskjellige chiffer: RC2, RC4, IDEA, DES og TripleDES. MD5 brukes også - en algoritme for å lage en meldingssammendrag. Syntaksen for offentlige nøkkelsertifikater er beskrevet i X.509.

En av de viktige fordelene med SSL er dens fullstendige programvareplattformuavhengighet. Protokollen er utviklet etter prinsippene for portabilitet, og ideologien for dens konstruksjon avhenger ikke av applikasjonene den brukes i. I tillegg er det også viktig at andre protokoller kan legges transparent over SSL-protokollen; enten for å ytterligere øke graden av beskyttelse av målinformasjonsflyter, eller for å tilpasse de kryptografiske egenskapene til SSL for en annen, veldefinert oppgave.

SSL-tilkobling

SFTP- og FTPS-protokoller

Den sikre kanalen levert av SSL har tre hovedegenskaper:

  • Kanalen er privat. Kryptering brukes for alle meldinger etter en enkel dialog som tjener til å bestemme den hemmelige nøkkelen.
  • Kanalen er autentisert. Serversiden av samtalen er alltid autentisert, mens klientsiden er valgfritt autentisert.
  • Kanalen er pålitelig. Meldingstransport inkluderer integritetskontroll (ved bruk av MAC).

Funksjoner av FTPS

Det er to implementeringer av FTPS, som bruker forskjellige metoder for å gi sikkerhet:

  • Den implisitte metoden innebærer å bruke standard SSL-protokoll for å etablere en økt før sending av data, som igjen bryter kompatibiliteten med vanlige FTP-klienter og -servere. For bakoverkompatibilitet med klienter som ikke støtter FTPS, brukes TCP-port 990 for kontrollforbindelsen og 989 for dataoverføring. Denne beholder standardport 21 for FTP-protokollen. Denne metoden anses som foreldet.
  • Eksplisitt er mye mer praktisk, siden det bruker standard FTP-kommandoer, men krypterer dataene når du svarer, noe som lar deg bruke samme kontrollforbindelse for både FTP og FTPS. Klienten må eksplisitt be om sikker dataoverføring fra serveren, og deretter godkjenne krypteringsmetoden. Hvis klienten ikke ber om en sikker overføring, har FTPS-serveren rett til å enten opprettholde eller lukke den usikrede tilkoblingen. En forhandlingsmekanisme for autentisering og datasikkerhet ble lagt til under RFC 2228 som inkluderer den nye FTP AUTH-kommandoen. Selv om denne standarden ikke eksplisitt definerer sikkerhetsmekanismer, spesifiserer den at en sikker tilkobling må initieres av klienten ved å bruke algoritmen beskrevet ovenfor. Hvis sikre tilkoblinger ikke støttes av serveren, skal en feilkode på 504 returneres. FTPS-klienter kan få informasjon om sikkerhetsprotokollene som støttes av serveren ved å bruke FEAT-kommandoen, men serveren er ikke pålagt å oppgi hvilke sikkerhetsnivåer den støtter. De vanligste FTPS-kommandoene er AUTH TLS og AUTH SSL, som gir henholdsvis TLS- og SSL-sikkerhet.

SFTP

SFTP (Secure File Transfer Protocol) er en filoverføringsprotokoll for applikasjonslag som kjører på toppen av en sikker kanal. For ikke å forveksle med (Simple File Transfer Protocol), som har samme forkortelse. Hvis FTPS bare er en utvidelse av FTP, er SFTP en separat og urelatert protokoll som bruker SSH (Secure Shell) som grunnlag.

Secure Shell

Protokollen ble utviklet av en av IETF-gruppene kalt Secsh. Arbeidsdokumentasjonen for den nye SFTP-protokollen ble ikke en offisiell standard, men begynte å bli aktivt brukt for applikasjonsutvikling. Deretter ble seks versjoner av protokollen utgitt. Den gradvise økningen i funksjonalitet i den førte imidlertid til at det 14. august 2006 ble besluttet å slutte å arbeide med utviklingen av protokollen på grunn av fullføringen av hovedoppgaven til prosjektet (SSH-utvikling) og mangelen på et tilstrekkelig ekspertnivå til å gå videre til utviklingen av en fullverdig ekstern filsystemprotokoll.

SSH er en nettverksprotokoll som tillater fjernkontroll av operativsystemet og tunnelering av TCP-tilkoblinger (for eksempel for filoverføring). Ligner i funksjonalitet til Telnet- og rlogin-protokollene, men i motsetning til dem krypterer den all trafikk, inkludert overførte passord. SSH tillater et utvalg av forskjellige krypteringsalgoritmer. SSH-klienter og SSH-servere er tilgjengelige for de fleste nettverksoperativsystemer.

SSH lar deg overføre nesten alle andre nettverksprotokoller på en sikker måte i et usikret miljø. Dermed kan du ikke bare jobbe eksternt på datamaskinen din gjennom kommandoskallet, men også overføre en lydstrøm eller video (for eksempel fra et webkamera) over en kryptert kanal. SSH kan også bruke komprimering av overførte data for påfølgende kryptering, noe som er praktisk for eksempel for fjernstart av X WindowSystem-klienter.

Den første versjonen av protokollen, SSH-1, ble utviklet i 1995 av forsker Tatu Ulönen fra Helsinki University of Technology (Finland). SSH-1 ble skrevet for å gi større personvern enn rlogin-, telnet- og rsh-protokollene. I 1996 ble det utviklet en sikrere versjon av protokollen, SSH-2, som er inkompatibel med SSH-1. Protokollen ble enda mer populær, og i 2000 hadde den omtrent to millioner brukere. For tiden betyr begrepet "SSH" vanligvis SSH-2, fordi Den første versjonen av protokollen er nå praktisk talt ikke brukt på grunn av betydelige mangler. I 2006 ble protokollen godkjent av IETFs arbeidsgruppe som internettstandard.

Det er to vanlige implementeringer av SSH: privat kommersiell og gratis åpen kildekode. Den gratis implementeringen kalles OpenSSH. I 2006 brukte 80 % av datamaskinene på Internett OpenSSH. Den proprietære implementeringen er utviklet av SSH Communications Security, et heleid datterselskap av Tectia Corporation, og er gratis for ikke-kommersiell bruk. Disse implementeringene inneholder nesten det samme settet med kommandoer.

SSH-2-protokollen, i motsetning til telnet-protokollen, er motstandsdyktig mot trafikkavlyttingsangrep ("sniffing"), men er ikke motstandsdyktig mot mann-i-midten-angrep. SSH-2-protokollen er også motstandsdyktig mot øktkapringangrep, siden det er umulig å bli med eller kapre en allerede etablert sesjon.

For å forhindre mann-i-midten-angrep når du kobler til en vert hvis nøkkel ennå ikke er kjent for klienten, viser klientprogramvaren brukeren et "nøkkelfingeravtrykk". Det anbefales å nøye sjekke "nøkkelbildet" vist av klientprogramvaren med servernøkkelbildet, fortrinnsvis oppnådd gjennom pålitelige kommunikasjonskanaler eller personlig.

SSH-støtte er tilgjengelig på alle UNIX-lignende systemer, og de fleste har en ssh-klient og server som standardverktøy. Det er mange implementeringer av SSH-klienter for ikke-UNIX-operativsystemer. Protokollen fikk stor popularitet etter den utbredte utviklingen av trafikkanalysatorer og metoder for å forstyrre driften av lokale nettverk, som en alternativ løsning til den usikre Telnet-protokollen for å administrere viktige noder.

Kommunikasjon ved hjelp av SSH

For å jobbe via SSH trenger du en SSH-server og en SSH-klient. Serveren lytter etter tilkoblinger fra klientmaskiner og, når en tilkobling er etablert, utfører autentisering, hvoretter den begynner å betjene klienten. Klienten brukes til å logge på en ekstern maskin og utføre kommandoer.

SFTP- og FTPS-protokoller

Sammenligning med FTPS

Det viktigste som skiller SFTP fra standard FTP og FTPS er at SFTP krypterer absolutt alle kommandoer, brukernavn, passord og annen konfidensiell informasjon.

Både FTPS- og SFTP-protokoller bruker en kombinasjon av asymmetriske algoritmer (RSA, DSA), symmetriske algoritmer (DES/3DES, AES, Twhofish, etc.), samt en nøkkelutvekslingsalgoritme. For autentisering bruker FTPS (eller for å være mer presis, SSL/TLS over FTP) X.509-sertifikater, mens SFTP (SSH-protokoll) bruker SSH-nøkler.

X.509-sertifikater inkluderer en offentlig nøkkel og noe informasjon om eierens sertifikat. Denne informasjonen gjør det derimot mulig å verifisere integriteten til selve sertifikatet, ektheten og eieren av sertifikatet. X.509-sertifikater har en tilsvarende privat nøkkel, som vanligvis lagres separat fra sertifikatet av sikkerhetsgrunner.

SSH-nøkkelen inneholder bare den offentlige nøkkelen (den tilsvarende private nøkkelen lagres separat). Den inneholder ingen informasjon om eieren av nøkkelen. Noen SSH-implementeringer bruker X.509-sertifikater for autentisering, men de bekrefter faktisk ikke hele sertifikatkjeden – bare den offentlige nøkkelen brukes (noe som gjør slik autentisering ufullstendig).

Konklusjon

FTP-protokollen spiller utvilsomt fortsatt en viktig rolle i lagring og distribusjon av informasjon på nettverket til tross for dens ærverdige alder. Det er en praktisk, multifunksjonell og standardisert protokoll. Mange filarkiver er bygget på grunnlaget, uten hvilke teknisk arbeid ikke ville vært så effektivt. I tillegg er det enkelt å sette opp, og server- og klientprogrammer finnes for nesten alle nåværende og ikke fullt så aktuelle plattformer.

På sin side løser dens beskyttede versjoner problemet med konfidensialitet av lagrede og overførte data i den moderne verden. Begge de nye protokollene har sine fordeler og ulemper og tjener litt forskjellige roller. I de områdene hvor det er behov for et filarkiv, er det å foretrekke å bruke FTPS, spesielt hvis klassisk FTP allerede er brukt der før. SFTP er mindre vanlig på grunn av dens inkompatibilitet med den gamle protokollen, men den er sikrere og har mer funksjonalitet siden den er en del av fjernstyringssystemet.

Liste over kilder

Kilde: www.habr.com

Legg til en kommentar