FTP / SFTP

Bilde av Anton Vinogradov fra Unsplash

Bilde av Anton Vinogradov fra Unsplash

File Transfer Protocol er en av de aller eldste internett protokollene som finnes, og ble først skrevet eller definert i 1971.

Det er en protokoll som gjør det mulig å laste opp og ned filer til eller fra en FTP server. Et praktisk eksempel hvor man bruker FTP ved opplasting nye filer til en webserver du har kjørende på en raspberry pi.

Ved å bruke en FTP klient som f.eks WinSCP eller FileZilla er det lett å koble seg til en FTP servere, som normalt ligger bak port 21. FTP-protokollen krever at du autentiserer deg selv med brukernavn og passord.

Rettigheter og tillatelser

Read / Write

Hvilke rettigheter du har på en FTP server kommer helt an på hvilke rettigheter brukeren din har blitt tildelt. Men det er kun to nivå av rettigheter en FTP-bruker kan ha. Read og Write.

Read rettighetene er nødvendig for å kunne lese og liste opp innholdet i mapper, og for å kunne laste ned filer fra serveren.

Write rettighetene er nødvendig for at du skal kunne endre på eksiterende filer eller laste opp nye.

I tillegg til rettighetene som er satt på FTP-brukerne er det rettigheter i filsystemet på serveren som også må være gjeldende. For eksempel på en Windows Server 2019 FTP server, må brukeren som logger seg på også ha de tilsvarende rettighetene i windows sitt filsystem NTFS. Hvis man ikke har NTFS write rettigheter til mappen man prøver å lagre en ny fil til, hjelper det ikke at brukeren har FTP rettigheter som sier at brukeren skal kunne gjør det. Det samme gjelder hvis FTP-brukeren ikke har write rettigheter. Da hjelper det ikke at NTFS rettighetene gir write tillatelse.

Som med mange andre rettigheter er det en kombinasjon av rettigheter som utgjør hva som er den faktiske tillatelsene man har. Det er det den rettigheten med lavest eller minst tillatelser som er bestemmer hva som er gjeldende for brukeren.

SFTP

Sikker FTP / SSH-FTP

Noe av bakdelene med den gamle FTP protokollen var at all kommunikasjon gikk ukryptert mellom klient og server. Dette gjorde at man relativt lett kunne fange opp brukernavn og passord på de som forsøkte å logge seg inn på en FTP server ved å "sniffe" brukernavn og passord i datapakkene hvor brukeren ble autentisert. I tillegg har FTP protokollen muligheten til å sende testfilter som ASCII text. Dette gjorde at det var skremmende lett at informasjonen som lå i filer som ble overført kunne komme i feil hender når de ble overført.

Løsningen på dette problemet ble SFTP, hvor man gjør det samme som med tradisjonell FTP, men den hvor man tar utgangspunkt i, og bygger videre på SSH (Secure SHell) protokollen for å sørge for sikker (kryptert) og stabil filtilgang og filoverføring.

SFTP, er i likhet med den UNIX baserte og tilsynelatende like filoverføringsprotokollen SCP (Secure Copy Protocol) og SSH plassert på port 22.

Til praktisk bruk er det liten forskjell mellom SFTP og FTP. Man må bare velge å koble til med riktig protokoll og til riktig port på serveren.

Gamle datamaskiner - som for eksempel en modifisert original Xbox - kan ha en FTP-server kjørende.

Etter at SFTP ble populært kan det være vrient å koble disse gamle FTP serverne med moderne FTP-klienter for å føre over filer.

Det er ikke alle moderne FTP klienter som støtter den gamle og usikre FTP protokollen.

Virtuelle FTP servere

Flere FTP servere på en server eller IP-adresse

I motsetning til HTTP-protokollen er det ikke mulig å skille FTP-hosts med et host-navn parameter nå man kobler til.

Hvis en server har flere enn én FTP-server, må man beskrive hvilken FTP-server man ønsker å logge på med i samme felt man skriver inn brukernavnet man ønsker å autentisere med.

Under kan du se ett eksempel hvor det blir logget på en server som har flere virtuelle FTP servere med PowerShell

C:\Users\skarshaugs>ftp ftp.eksempel.no
Connected to ftp.eksempel.no.
220 Microsoft FTP Service
200 OPTS UTF8 command successful - UTF8 encoding now ON.
User (ftp.eksempel.no:(none)): ftp2.eksempel.no|stanley
331 Password required
Password:
230 User logged in.
ftp>

Under kan du se enda ett eksempel hvor det blir logget på en server som har flere virtuelle FTP servere med WinSCP.

Sjermdump fra WinSCP i Windows 10

Fig1: Pålogging til virtuell host med WinSCP. Her demonstreres kombinasjonen av virtualhost og brukernavn

I figuren over skiller man mellom hostnavn og brukernavn med "|". Denne bokstaven blir ofte i kalt Pipe bokstaven, og er normalt er plassert mellom Esc og tab på norske tastatur.

Det er ikke nødvendig å skrive inn hostnavn hvis man ønsker å logge på en server som kun har én virtuell FTP-server på en port.

I WinSCP feltet "hostname" eller som "host" parameter med PowerShell programmet "ftp" skriver man inn IP-adresse eller Domene navnet til severen når man kobler til. FTP-klienter bruker domene navn kun til å finne IP adressen til severen.

HTTP-clienter, altså nettlesere som Google Chrome eller Safari, eller kommando linje verktøyet curl bruker domene navnet til to ting.

  1. Finne ut hvor IP-adressen webserveren ligger på, ved å spørre en DNS-server.
  2. Si hvilken hvilken virtuelle webserver som den ønsker å få data fra på den IP-adressen.

Mere info om HTTP, og hvordan internett fungerer kan du lese om her!