Alles over nieuwe en veilige FTP-varianten

Alles over nieuwe en veilige FTP-varianten

Geplaatst: 7 september 2022 - 10:40

Aangepast: 7 september 2022 - 10:49

Toon van Daele

FTP is een handige en populaire methode voor het versturen van bestanden. Het protocol is helaas al flink op leeftijd en hoe handig het ook is, het is allerminst veilig, want er wordt geen enkele encryptie gebruikt. Daarom zijn er alternatieven ontwikkeld die je dataoverdracht veiliger maken, bijvoorbeeld FTPS of SFTP: FTP met de ‘S’ van secure.

FTP (File Transfer Protocol) bestaat al heel lang en is zelfs ouder dan het TCP-protocol. De eerste RFC (Request For Comments) dateert al van 1971 en dat verklaart waarom FTP ontworpen was om via het NCP-protocol (Network Control Program) te werken. Dit is een zogeheten simplex protocol dat twee verbindingen opzet op verschillende poorten om tweerichtingscommunicatie mogelijk te maken. Met TCP is dit niet langer nodig, maar om compatibiliteitsredenen blijft FTP twee poorten gebruiken.

Actieve modus

Bij de actieve modus verbindt de FTP-client zich vanaf een toevallig gekozen poort P (boven 1024) met controlepoort 21 van de FTP-server, waarna de client luistert op poort P+1. Vervolgens zal de server een verbinding opzetten vanaf zijn datapoort (poort 20) met P+1 van de client. De client stuurt ACK’s (acknowledgments ofwel bevestigingen) vanaf P+1 naar datapoort 20.

De actieve modus blijkt in de praktijk vaak nukkig. Immers, de client legt zelf geen verbinding met de datapoort van de server, maar meldt slechts aan de server op welke poort deze luistert. Wanneer de server vervolgens een verbinding op deze poort initieert, ziet de firewall of NAT (Network Address Translation) aan clientzijde dit als een verdacht verbindingsverzoek en wordt dit geblokkeerd. Voor NAT komt daarbij dat het doorgegeven ip-adres en poortnummer naar het interne netwerk verwijst in plaats van naar het publieke netwerk.

Passieve modus

Om dit te omzeilen kun je een zogeheten ALG (Application-level Gateway of Application Layer Gateway) configureren, maar een makkelijkere oplossing is de passieve modus. Hierbij zet de client zelf beide connecties met de server op. In plaats van met een simpel PORT-commando de datapoort aan de server te communiceren, stuurt de client een PASV-commando door. Hierdoor zal de server een willekeurige poort aan de client doorgeven waarna deze laatste hiermee zelf de verbinding initieert. Er kleven twee mogelijke nadelen aan deze modus: de server moet voor zijn clients vaak veel poorten ter beschikking houden en de client moet deze modus ondersteunen.

Onversleuteld

Een wat omslachtige methode dus, maar erger nog is de inherente onveiligheid. Immers, de server kan wel zo worden geconfigureerd dat een gebruikersnaam en wachtwoord zijn vereist, maar deze inloggegevens, evenals de eigenlijke data die naderhand worden doorgestuurd, gaan onversleuteld over het netwerk. Je kunt dit makkelijk zelf testen. In Windows bijvoorbeeld zet je snel een FTP-server op, bijvoorbeeld met FileZilla-server, waarna je aan clientzijde op een opdrachtregel het commando ftp uitvoert, gevolgd door de volgende commando’s:

open <ip-adres_van_ftp-server>

<gebruikersnaam>

<wachtwoord>

Met dir vraag je een bestandsoverzicht op en met get <bestand> en put <bestand> kun je bestanden uitwisselen.

Tegelijk start je een sessie op via Wireshark en vang je de netwerkdata op. Na afloop stel je ftp als weergavefilter in. Je zult merken dat alle data, wachtwoord inclusief, onversleuteld worden verzonden. Er zijn trouwens nog andere kwetsbaarheden ontdekt (zie ook RFC 2577 via www.kwikr.nl/rfc2577). Dit alles verklaart ook waarom er nauwelijks nog browsers zijn die FTP ondersteunen.

Het is dus aan te raden een veilig kanaal voor je datatransfers te gebruiken, en doorgaans worden hiervoor FTPS of SFTP ingezet. Beide gebruiken publieke sleutels over versleutelde tunnels voor de authenticatie en maken gebruik van betrouwbare encryptie. Maar er zijn ook wezenlijke verschillen, vooral op het vlak van het transportmechanisme.

Alles over nieuwe en veilige FTP-varianten-22360202

FTP is een onveilig protocol gezien alle data onversleuteld het netwerk opgaan.

FTPS

FTPS staat voor FTP over SSL/TLS (Secure Sockets Layer/Transport Layer Security), een cryptografisch protocol dat ook voor andere communicatievormen wordt gebruikt, zoals bij e-mailen en surfen.

Het komt erop neer dat FTPS je verbinding gewoonlijk authentiseert via een certificaat of soms (ook) een gebruikers-ID. Is dit ondertekend door een erkende CA (Certificate Authority) of gaat het om een zelf-ondertekend certificaat waarvan je een kopie ter verificatie hebt opgeslagen, dan kan de verbinding doorgaan. FTPS werkt net als FTP met twee verbindingen, via een controle- en data-kanaal.

Bij de meeste FTPS-clients moet je aangeven of je impliciete dan wel expliciete encryptie wenst. Aangezien bij FTPSI (impliciet) er vóór de authenticatie geen onderhandeling over de SSL/TLS-connectie mogelijk is, is deze modus meestal vervangen door FTPSE (expliciet), waarbij zo’n onderhandeling wel mogelijk is.

Om een en ander zelf uit te proberen, kun je bijvoorbeeld het gratis WinSCP als client gebruiken en verbinding maken met FileZilla Server, die standaard in zo’n zelf-ondertekend certificaat voorziet.

Alles over nieuwe en veilige FTP-varianten-22360203

Welke encryptiemodus kies je voor TLS/SSL: impliciet of expliciet?

SFTP

SFTP staat voor SSH FTP (Secure Shell FTP). Terwijl FTPS een extra laag toevoegt aan het FTP-protocol, is SFTP eigenlijk geheel verschillend van FTP. In de meeste gevallen authentiseert een client zich bij de SFTP-server via SSH-sleutels. De client bezorgt zijn publieke sleutel (vooraf) aan de SFTP-server, die het met het client-account zal associëren. De client zal die sleutel tijdens de authenticatie dan doorsturen en als die overeenkomt met de bijbehorende private sleutel – eventueel in combinatie met een gebruikersnaam en wachtwoord (die eveneens versleuteld worden verstuurd) – is de authenticatie geslaagd en kan de connectie worden opgezet. In tegenstelling tot FTP(S) zet SFTP slechts een enkele connectie op, voor zowel authenticatie, commando’s als dataoverdrachten. Dit maakt SFTP ook handiger voor gebruik achter firewalls.

De ontwikkeling van FTP (en varianten)

1971 Introductie van FTP (RFC 114).

1980 TCP/IP-versie van FTP (in plaats van NCP).

1985 Basis van huidige FTP-versie (RFC 959).

1994 Introductie passieve modus.

1996 Introductie van FTPS.

1997 Introductie van SFTP.

1998 Ondersteuning van IPv6 door FTP.

2021 Belangrijkste browsers ondersteunen FTP niet langer.

Deel dit artikel
Voeg toe aan favorieten