Forord
For berre ei veke sidan skreiv eg eit oppgåveskriv om emnet som er nemnt i overskrifta, og eg oppdaga at det, skal vi seie, ikkje er så mykje lærerik informasjon på nett. For det meste enkle fakta og instruksar om oppsett. Difor bestemte eg meg for å gjere nokre justeringar av teksten og publisere den som ein artikkel.
Kva er FTP
FTP (File Transfer Protocol) er ein protokoll for filoverføring over nettverket. Det er ein av dei grunnleggjande protokollane for Ethernet. Den blei oppretta i 1971 og fungerte først i DARPA-nettverk. No, som med HTTP, er filoverføring basert på ein modell beståande av ei samling av protokollar TCP/IP (Transmission Control Protocol/Internet Protocol). Definert i RFC 959.
Protokollen definerer følgjande:
- Kva måte feilsjekking vil bli utført
- Metode for datainnpakking (hvis innpakking blir brukt)
- Korleis senderen signaliserer at den har fullført meldinga
- Korleis mottakaren signaliserer at han har motteke meldinga
Interaksjon mellom klient og server
La oss sjå nærare på prosessane som skjer under FTP-arbeid. Tilkoplinga blir initialisert av brukaren sin protokolltolkar. Kontroll av utvekslinga skjer gjennom kontrollkanalen i TELNET-standarden. FTP-kommandoar blir generert av brukaren sin protokolltolkar og sendt til serveren. Serverens svar blir også sendt til brukaren gjennom kontrollkanalen. Generelt kan brukaren få tilknyttning til serverens protokolltolkar ved hjelp av midlar ulike frå brukaren sin.
Den viktigaste særtrekkinga til FTP er at den bruker dobbel tilkopling. Eine blir brukt for å sende kommandoar til serveren og skjer som standard gjennom TCP-port 21, som kan endrast. Kontrolltilkoplinga eksisterer heile tida så lenge klienten kommuniserer med serveren. Kontrollkanalen må vere open under datatransfer mellom datamaskinene. I tilfelle den blir stengt, opphøyrer datatransporten. Den andre kjernen blir brukt for den direkte datatransporten. Den vert opna kvar gong det blir sendt ein fil mellom klient og server. I tilfelle fleire filer blir sendt samtidig, blir det opna ein eigen transportkanal for kvar enkelt fil.
FTP kan fungere i aktiv eller passiv modus, og valget avhengig av hvilken forbindelse som blir opprettet. I aktiv modus oppretter klienten en styrings-TCP-forbindelse med serveren og sender serveren sin IP-adresse og et vilkårlig nummer for klientporten, hvoretter den venter på at serveren skal starte en TCP-forbindelse med denne adressen og portnummeret. Hvis klienten er bak en brannmur og ikke kan motta innkommende TCP-forbindelser, kan passiv modus benyttes. I denne modusen bruker klienten kontrollstrømmen for å sende en PASV-kommando til serveren, og mottar deretter IP-adressen og portnummeret fra serveren, som deretter brukes av klienten til å åpne en datakanal fra sin vilkårlige port.
Det kan oppstå situasjoner der data kan overføres til en tredje maskin. I så fall organiserer brukeren en kontrollkanal med to servere og oppretter en direkte datakanal mellom dem. Kontrollkommandoene går gjennom brukeren, mens dataene overføres direkte mellom serverne.
Ved dataoverføring over nettverket kan det brukes fire datavisninger:
- ASCII - brukes for tekst. Dataene konverteres, om nødvendig, fra det symbolsk uttrykte formatet på senderverten til "åttebiters ASCII", og (igjen, om nødvendig) til det symbolske formatet til mottakerverten. Spesielt blir linjeskifttegn endret. Følgelig er denne modusen ikke egnet for filer som inneholder mer enn bare vanlig tekst.
- Binær modus - avsenderen sender hver fil byte for byte, mens mottakeren lagrer byte-strømmen ved mottak. Støtte for denne modusen har blitt anbefalt for alle FTP-implementasjoner.
- EBCDIC - brukes for å overføre vanlig tekst mellom verter i EBCDIC-koding. Ellers er denne modusen lik ASCII-modusen.
- Lokal modus - tillater to datamaskiner med identiske oppsett å sende data i sitt eget format uten konvertering til ASCII.
Dataoverføring kan utføres i en av tre moduser:
- Strømmodus - dataene sendes i form av en kontinuerlig strøm, og frigjør FTP fra å utføre noen form for behandling. I stedet utføres all behandling av TCP. En filsluttindikator er ikke nødvendig, bortsett fra når dataene skal deles inn i poster.
- Blokker-modus – FTP deler data i flere blokker (blokkoverskrift, antall byte, datafelter) og sender dem deretter via TCP.
- Komprimeringsmodus – data komprimeres med en enkelt algoritme (vanligvis kode for lange serier).
FTP-server – er en server som tillater bruk av filoverføringsprotokollen. Den har spesifikke egenskaper som skiller den fra vanlige webservere:
- Brukerautentisering er nødvendig
- Alle operasjoner utføres i løpet av den nåværende sesjonen
- Muligheter for å utføre ulike handlinger med filsystemet
- Det brukes en separat kanal for hver tilkobling
FTP-klient – er et program som lar deg koble til en ekstern server via FTP og utføre nødvendige handlinger med filsystemelementene. En nettleser kan fungere som klient, ved at adressen som skrives inn i adressefeltet, representerer stien til et bestemt katalog eller en fil på den eksterne serveren, i henhold til den generelle blokkskjemaet for URL:
ftp://user:pass@address:port/directory/file
Bruk av nettleser for dette formålet vil imidlertid bare tillate visning eller nedlasting av ønskede filer. For å fullt ut dra nytte av fordelene ved FTP, bør spesialisert programvare brukes som klient.
FTP-autentisering bruker brukernavn/passord-skjemaet for tilgang. Brukernavnet sendes til serveren med kommandoen USER, og passordet med kommandoen PASS. Hvis informasjonen som klienten gir, godtas av serveren, sender serveren en invitasjon til klienten, og sesjonen begynner. Brukere kan, hvis serveren støtter denne funksjonen, logge inn uten å oppgi legitimasjon, men serveren kan gi bare begrenset tilgang for slike sesjoner.
Verten som tilbyr FTP-tjenester, kan gi anonym tilgang til FTP. Brukere logger vanligvis inn som «anonymous» (kan være registreringsavhengig på noen FTP-servere) som brukernavn. Selv om brukere vanligvis blir bedt om å sende inn e-postadressen sin i stedet for passordet, utføres det faktisk ingen verifisering. Mange FTP-verter som tilbyr programvareoppdateringer, støtter anonym tilgang.
Protokollskjema
Interaksjonen mellom «klient-server» ved FTP-forbindelse kan illustreres på følgende måte:

Sikker FTP
FTP ble opprinnelig ikke designet som en sikker løsning, da det var ment for kommunikasjon mellom flere militære objekter og institusjoner. Men med utviklingen og spredningen av internett har faren for uautorisert tilgang økt betydelig. Det oppsto et 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 (bounce attacks)
- Spoofing-angrep (spoof attacks)
- Brute force-angrep (brute force attacks)
- Pakkeopptak, sniffing (packet capture, sniffing)
- Porttyveri (port stealing)
Vanlig FTP har ikke mulighet til å overføre data i kryptert form, noe som gjør at brukernavn, passord, kommandoer og annen informasjon enkelt kan fanges opp av uvedkommende. En vanlig løsning på dette problemet er å bruke «sikrede», TLS-beskyttede versjoner av det sårbare protokollen (FTPS) eller en annen, mer beskyttet protokoll, som SFTP/SCP, som tilbys med de fleste implementeringer av Secure Shell-protokollen.
FTPS
FTPS (FTP + SSL) er en utvidelse av den standard filoverføringsprotokollen, som legger til funksjonaliteten for å opprette krypterte økter ved hjelp av SSL-protokollen (Secure Sockets Layer — sikkerhetslaget for sokler). I dag tilbys beskyttelse av den mer avanserte varianten TLS (Transport Layer Security — transportlagssikkerhet).
SSL
SSL-protokollen ble introdusert av Netscape Communications i 1996 med mål om å sikre sikkerhet og konfidensialitet ved internettforbindelser. Protokollen støtter autentisering (verifisering) av klient og server, er uavhengig av applikasjoner og er gjennomsiktig for protokollene HTTP, FTP og Telnet.
SSL Handshake-protokollen består av to trinn: autentisering av serveren og valgfri autentisering av klienten. I det første trinnet sender serveren sitt sertifikat og krypteringsparametere som svar på klientens forespørsel. Deretter genererer klienten en master-nøkkel, krypterer den med serverens offentlige nøkkel og sender den tilbake til serveren. Serveren dekrypterer master-nøkkelen med sin private nøkkel og bekrefter sin legitimitet for klienten ved å returnere en melding signert med klientens master-nøkkel.
De påfølgende dataene krypteres og bekreftes med nøkler oppnådd basert på denne master-nøkkelen. I den andre fasen, som ikke er obligatorisk, sender serveren en forespørsel til klienten, og klienten bekrefter serverens autentisitet ved å returnere forespørselen med sin egen digitale signatur og åpen nøkkelsertifikat.
SSL støtter et mangfold av kryptografiske algoritmer. Under opprettelse av forbindelsen brukes RSA nøkkelkryptosystemet. Etter nøkkelutvekslingen brukes ulike koder: RC2, RC4, IDEA, DES og TripleDES. MD5 brukes også – en algoritme for å lage meldingsdigest. Syntaksen for åpne nøkkelsertifikater er beskrevet i X.509.
En av de viktige fordelene ved SSL er dens totale plattformuavhengighet. Protokollen er utviklet med prinsipper for portabilitet, og ideologien bak den er uavhengig av hvilke applikasjoner den brukes i. I tillegg er det viktig at andre protokoller kan legges til uten problemer over SSL-protokollen; enten for å øke sikkerheten til de målrettede informasjonsstrømmene ytterligere, eller for å tilpasse SSLs kryptografiske egenskaper til en bestemt oppgave.
SSL-tilkobling

Den leverte SSL-sikre kanalen har tre hovedegenskaper:
- Kanalen er privat. Kryptering brukes for alle meldinger etter en enkel dialog som fungerer for å bestemme den hemmelige nøkkelen.
- Kanalen er autentisert. Server-siden av dialogen autentiseres alltid, mens klient-siden autentiseres valgfritt.
- Kanalen er pålitelig. Transporten av meldinger omfatter integritetskontroll (med bruk av MAC).
Egenskaper ved FTPS
Det finnes to implementeringer av FTPS, som bruker forskjellige metoder for å gi sikkerhet:
- Den implisitte metoden forutsetter bruken av standard SSL-protokoll, med etablering av sesjoner før data sendes, noe som bryter med 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 datatransfer. Dette gjør at standardporten 21 for FTP-protokollen kan bevares. Denne metoden anses som utdødd.
- Explicit – er mye mer praktisk, da den bruker kommandoer fra standard FTP, men krypterer dataene under overføring, noe som gjør at den kan bruke den samme kontrollforbindelsen både for FTP og FTPS. Klienten må eksplisitt be om en sikker dataoverføring fra serveren og deretter godkjenne metoden for kryptering. Hvis klienten ikke ber om en sikker overføring, har FTPS-serveren rett til å enten opprettholde eller lukke den usikrede forbindelsen. Mekanismen for identifikasjon og databeskyttelse ble lagt til under RFC 2228, som inkluderer en ny FTP-kommando AUTH. Selv om denne standarden ikke spesifikt definerer beskyttelsesmekanismer, angir den at den sikre forbindelsen må initieres av klienten ved hjelp av den ovenfor beskrevne algoritmen. Hvis den sikre forbindelsen ikke støttes av serveren, skal feilkode 504 returneres. FTPS-klienter kan få informasjon om hvilke beskyttelsesprotokoller serveren støtter ved å bruke FEAT-kommandoen, men serveren er ikke forpliktet til å legge ut hvilke sikkerhetsnivåer den støtter. De mest vanlige FTPS-kommandoene er AUTH TLS og AUTH SSL, som gir henholdsvis TLS- og SSL-beskyttelse.
SFTP
SFTP (Secure File Transfer Protocol) – en applikasjonsprotokoll for filoverføring som fungerer over en sikker kanal. Skal ikke forveksles med (Simple File Transfer Protocol), som har samme forkortelse. Mens FTPS bare er en utvidelse av FTP, er SFTP en egen protokoll som ikke er knyttet til FTP, og som bruker SSH (Secure Shell – sikker shell) som grunnlag.
Secure Shell
Utviklingen av protokollen ble utført av en av IETF-gruppene kalt Secsh. Arbeidsdokumentasjonen for den nye protokollen SFTP ble ikke offisiell standard, men begynte å bli aktivt brukt i utviklingen av applikasjoner. Det ble senere utgitt seks versjoner av protokollen. Imidlertid førte den gradvise utvidelsen av funksjonaliteten til at det 14. august 2006 ble besluttet å stoppe arbeidet med utviklingen av protokollen på grunn av at hovedmålet med prosjektet (utvikling av SSH) var oppnådd, og det ikke var tilstrekkelig ekspertise for å gå videre med utviklingen av en fullverdig fjernfilsystemprotokoll.
SSH er en nettverksprotokoll som muliggjør fjernstyring av operativsystemet og tunneling av TCP-tilkoblinger (for eksempel for filoverføring). Den har lignende funksjonalitet som protokollene Telnet og rlogin, men skiller seg fra dem ved at den krypterer all trafikk, inkludert passord som sendes. SSH gir mulighet for valg av ulike krypteringsalgoritmer. SSH-klienter og SSH-servere er tilgjengelige for de fleste nettverksoperativsystemer.
SSH tillater sikker overføring av nesten hvilken som helst annen nettverksprotokoll i et usikret miljø. Dermed kan man ikke bare arbeide eksternt på en datamaskin gjennom et kommandolinjegrensesnitt, men også overføre lyd- eller videostrømmer (for eksempel fra et webkamera) over en kryptert kanal. SSH kan også bruke komprimering av overførte data før kryptering, noe som er praktisk, for eksempel for ekstern kjøring av X Window System-klienter.
Den første versjonen av protokollen, SSH-1, ble utviklet i 1995 av forskeren Tatu Ylönen ved Teknologisk Universitet i Helsinki (Finland). SSH-1 ble laget for å gi større konfidensialitet enn protokollene rlogin, telnet og rsh. I 1996 ble det utviklet en sikrere versjon av protokollen, SSH-2, som ikke er kompatibel med SSH-1. Protokollen ble enda mer populær, og i 2000 hadde den omtrent to millioner brukere. I dag refererer begrepet «SSH» vanligvis til SSH-2, da den første versjonen av protokollen på grunn av betydelige mangler nå nesten ikke brukes. I 2006 ble protokollen godkjent av IETF arbeidsgruppe som en internettstandard.
Det finnes to utbredte implementasjoner av SSH: en privat kommersiell og en gratis fri. Den frie implementasjonen kalles OpenSSH. Innen 2006 brukte 80 % av datamaskinene i internett nettopp OpenSSH. Den private implementasjonen utvikles av SSH Communications Security, som er et 100 % datterselskap av Tectia Corporation, og den er gratis for ikke-kommersielt bruk. Disse implementasjonene inneholder praktisk talt det samme settet av kommandoer.
Protokoll SSH-2, i motsetning til telnet-protokollen, er motstandsdyktig mot angrep som avlytting av trafikk («sniffing»), men ikke mot angrep fra «mannen i midten». Protokollen SSH-2 er også motstandsdyktig mot angrep ved å bruke hijacking av sesjoner, da det er umulig å komme inn i en allerede etablert sesjon eller å overta den.
For å forhindre angrep fra «mannen i midten» når du kobler til en vertsdatamaskin hvis nøkkelen ikke er kjent for klienten, viser klientprogramvaren brukeren «nøkkelfingeravtrykket». Det anbefales å nøye sammenligne det som vises av klientprogramvaren med nøkkefingeravtrykket til serveren, helst mottatt via sikre kommunikasjonskanaler eller personlig.
Støtte for SSH er implementert i alle UNIX-lignende systemer, og på de fleste av dem er både ssh-klient og ssh-server standardverktøy. Det finnes mange implementeringer av SSH-klienter også for ikke-UNIX OS. Protokollen fikk stor popularitet etter omfattende utvikling av trafikkanalysatorer og metoder for å forstyrre lokale nettverk, som et alternativ til den usikre protokollen Telnet for administrasjon av viktige noder.
Kommunikasjon ved hjelp av SSH
For å jobbe med SSH trenger du en SSH-server og en SSH-klient. Serveren lytter etter tilkoblinger fra klientmaskiner og utfører autentisering når forbindelsen er etablert, og begynner deretter å betjene klienten. Klienten brukes til å logge inn på en ekstern maskin og utføre kommandoer.

Sammenligning med FTPS
Det viktigste som skiller SFTP fra standard FTP og FTPS, er at SFTP krypterer absolutt alle kommandoer, brukernavn, passord og annen sensitiv informasjon.
Begge protokollene, FTPS og SFTP, bruker en kombinasjon av asymmetriske algoritmer (RSA, DSA), symmetriske algoritmer (DES/3DES, AES, Twhofish osv.), samt en nøkkelutvekslingsalgoritme. For autentisering bruker FTPS (eller, mer presist, SSL/TLS via FTP) X.509-sertifikater, mens SFTP (SSH-protokoll) bruker SSH-nøkler.
X.509-sertifikater inneholder en offentlig nøkkel og noe informasjon om sertifikatets eier. Denne informasjonen lar på den annen side verifisere integriteten til selve sertifikatet, autentisiteten og eieren av sertifikatet. Hvert X.509-sertifikat har en tilhørende privat nøkkel som vanligvis oppbevares separat fra sertifikatet av sikkerhetshensyn.
SSH-nøkkelen inneholder bare offentlig nøkkel (den tilhørende private nøkkelen lagres separat). Den inneholder ingen informasjon om nøkkelens eier. Noen SSH-implementeringer bruker X.509-sertifikater for autentisering, men de sjekker egentlig ikke hele sertifikatkjeden — bare offentlige nøkkel blir brukt (noe som gjør autentiseringen ufullstendig).
Konklusjon
FTP-protokollen spiller utvilsomt fortsatt en viktig rolle i lagring og distribusjon av informasjon på nettet, til tross for sin høye alder. Dette er en praktisk, multifunksjonell og standardisert protokoll. Mange filarkiver er bygget på dens grunnlag, uten hvilke teknisk arbeid ville vært mindre effektivt. I tillegg er den enkel å konfigurere, og server- og klientprogrammer eksisterer praktisk talt for alle aktuelle og mindre aktuelle plattformer.
De beskyttede versjonene av protokollen løser derimot problemet med konfidensialitet ved lagrede og overførte data i dagens verden. Begge de nye protokolene har sine fordeler og ulemper og utfører litt forskjellige roller. I områder der det er nødvendig med et filarkiv, er det bedre å bruke FTPS, spesielt hvis klassisk FTP allerede har blitt brukt der. SFTP er mindre utbredt på grunn av sin inkompatibilitet med den gamle protokollen, men den er mer sikker og har større funksjonalitet, da den er en del av fjerntilgangssystemet.
Kildeliste
Kilde: habr.com
