Förstå SFTP vs. FTPS vs. FTP

FTP eller File Transfer Protocol är en av de mest populära dataöverföringsmetoderna som finns tillgängliga för olika användningsfall.

FTP har olika säkra varianter tillgängliga, kända som FTPS och SFTP, som innehåller några subtila och några inte så subtila skillnader i hur de fungerar. Dessa skillnader hänför sig till hur data utbyts, nivån och typen av säkerhet i kommunikationen och brandväggsöverväganden.

Att veta hur dessa protokoll fungerar och skillnaderna mellan dessa populära överföringsmekanismer kan hjälpa dig att välja vilket som fungerar bäst för dina behov.

FTP

FTP är det decennier gamla filöverföringsprotokollet som ursprungligen föreslogs under RFC 114. Detta utvecklades senare till RFC 959, vilket är standarden som används idag.

FTP fungerar på två kanaler för att utbyta information: en för kommandon och den andra för data. Detta kräver två portar för att FTP ska fungera – kommandokanalen och datakanalen.

Kommandokanalen fungerar på port 21, som accepterar anslutningar från klienter och hanterar överföringen av kommandon. Kommandokanalen förblir öppen under hela FTP-sessionen tills klienten skickar QUIT-kommandot eller servern med tvång kopplar från på grund av inaktivitet eller någon annan möjlig orsak.

Datakanalen använder en tillfällig port på begäran som lyssnar på servern (passivt läge) eller klienten (aktivt läge). Denna kanal ansvarar för att dela faktiska data mellan server och klient i form av kataloglistor och filöverföringar.

Till skillnad från kommandokanalen förblir datakanalen öppen endast under filöverföringens varaktighet, och så snart den är klar stängs datakanalen. För samtidig överföring av flera filer eller kataloglistor krävs flera datakanalportar.

FTP är ett naturligt osäkert protokoll eftersom både kommando- och datakanaler överför information i okrypterad form, som är lätt mottaglig för avlyssning av alla som använder man-in-the-middle-attacker.

Som tidigare diskuterats kräver FTP en inkommande anslutning på port 21/tcp på serversidan för kommandokanalen. Ett passivt portintervall definieras för filöverföringar och kataloglistor och tillåter inkommande anslutningar. Denna definitionsprocess kan variera beroende på vilken FTP-server som används. Se dess dokumentation för ytterligare information. På klientsidan bör utgående anslutning på port 21/tcp tillåtas tillsammans med passivt portintervall definierat på servern.

Autentisering i FTP

FTP-autentiseringsinformation skickas över kommandokanalen under första anslutningsetablering. FTP kan använda ett användarnamn och lösenord för autentisering, eller så kan det vara anonymt för att tillåta vem som helst att logga in och komma åt servern.

Aktiva och passiva FTP-lägen

FTP använder antingen aktivt eller passivt läge för att ställa in anslutningar.

I aktivt läge ansluter en användare från en slumpmässig port på FTP-klienten till FTP-porten 21/tcp på servern och skickar kommandot PORT, och anger vilken klientportservern ska ansluta till. Denna port kommer att användas för datakanalen.

Servern ansluter sedan från port 20/tcp till klientporten som tidigare specificerats med PORT-kommandot av klienten. Denna datakanal används sedan för filöverföringar mellan server och klient.

I passivt läge ansluter klienten från en slumpmässig port från FTP-klienten till port 21/tcp på servern och skickar PASV-kommandot. Servern svarar sedan med en slumpmässig port som ska användas för datakanalen. Klienten använder sedan en annan slumpmässig port för att ansluta till porten som besvarades av en server i det tidigare steget. Denna datakanalanslutning används sedan för filöverföring mellan server och klient.

Så, i aktivt läge, initieras den initiala anslutningsbegäran av klienten medan anslutningsbegäran för datakanalen initieras av servern.

Å andra sidan, i passivt läge, initieras både initiala anslutningsbegäranden och efterföljande datakanalbegäranden av klienten till servern. Denna subtila skillnad påverkar ibland hur en brandvägg tillåter/blockerar traditionella FTP-förfrågningar på grund av riktningen för inkommande/utgående anslutningstyp.

FTPS

Även om du är villig att ta risker förknippade med FTP med okrypterad dataöverföring och main-in-the-midten-attacker, tvingar industrikrav dig att använda ett säkrare alternativ som FTPS och SFTP, som är jämförelsevis mycket säkrare.

År 1990, med ett förändrat säkerhetslandskap, skapade Netscape SSL eller Secure Sockets Layer (SSL, numera känt som TLS) för att skydda kommunikation över ett nätverk. SSL applicerades på FTP som blev FTPS eller File Transfer Protocol Secure. FTPS eller FTP/S körs vanligtvis på port 990/tcp, men det kan också ses på port 21/tcp. På samma sätt är port 989/tcp för datakanal den vanliga porten som används för FTPS. Om kommandoporten är 21/tcp, förväntas dess dataport vara 20/tcp.

Liksom FTP använder FTPS två kanaler för kommunikation: kommando och datakanal. Antingen kan datakanalen krypteras med FTPS, eller så kan både kommando- och datakanaler krypteras för ökad säkerhet.

FTPS, liksom FTP, använder också flera portar för kommando- och datakanaler. Så, port 21/tcp används för den första anslutningen och överföringen av autentiseringsinformation. Senare kommer olika portar att behövas för att ställa in datakanaler för varje begäran om filöverföring eller kataloglistning från klienten. Således, precis som FTP, behöver den ett antal portar för att tillåtas i din brandvägg.

Autentisering i FTPS

Autentisering för FTPS fungerar med ett användarnamn och lösenord tillsammans med ett servercertifikat för kryptering. När FTPS-klienten ansluter till en server kontrollerar den om serverns certifikat är pålitligt för att fortsätta med anslutningen. Detta certifikat kan begäras från klienten och servern.

SFTP

Till skillnad från FTP och FTPS är SFTP (SSH File Transfer Protocol) ett helt annat protokoll byggt på SSH (eller Secure Shell). SFTP, som standard, fungerar på port 22/tcp, samma som SSH även om den kan konfigureras för att använda en anpassad ledig port på servern.

SFTP är ett säkert FTP-protokoll som använder SSH undertill för att skicka och ta emot filer. SSH är helt krypterad, SFTP är en robust och säker metod för att överföra filer över ett nätverk.

SFTP, till skillnad från FTP och FTPS, använder en enda kommunikationskanal för att överföra kommandon och datatrafik, som alla skickas i krypterad form tillsammans med initial autentisering.

Autentisering i SFTP

Autentisering i SFTP kan göras via ett enkelt användarnamn och lösenord, men till skillnad från FTP skickas all information, inklusive autentiseringsdetaljer, krypterad över nätverket.

SFTP stöder även autentisering med SSH-nyckelpar, privata och offentliga nycklarkombinationer, där klienten tillhandahåller den privata nyckeln för den angivna användaren, och servern bör ha motsvarande publika nyckel för att autentiseringen ska lyckas. Det är säkrare än att använda en kombination av användarnamn/lösenord. Det är möjligt att autentisera samma användare med lösenord och SSH-nycklar om båda metoderna är konfigurerade på SFTP-servern.

Sammanfattning

Den här artikeln sammanfattar de grundläggande funktionerna hos olika populära filöverföringsprotokoll, nämligen FTP, FTPS och SFTP, och belyser de subtila och stora skillnaderna mellan dessa protokoll. Den täcker de portar man behöver tillåta i en brandvägg för att konfigurera en fungerande FTP/FTPS/SFTP-server samtidigt som man lyfter fram behovet av att byta till säkrare protokoll som FTPS och SFTP.

När jag säger FTP här, syftar jag på alla diskuterade protokoll i den här artikeln. Anledningen till att FTP är decennier gammal, och även nyare säkra versioner kallas ibland för FTP istället för deras angivna namn för daglig användning.

Du kanske också är intresserad av att veta den bästa FTP-serverprogramvaran och FTP/SFTP-klienterna.