Introduktion
Vad är FTP?
File Transfer Protocol (FTP) är ett standardprotokoll som används för att överföra filer mellan en klient och en server över ett nätverk, oftast internet. Det möjliggör enkel och effektiv filöverföring, vilket gör det till ett populärt val för webbhotell, datautbyte och fjärrlagring.
Hur fungerar FTP rent tekniskt?
FTP fungerar enligt en klient-server-modell och använder separata anslutningar för kontroll och dataöverföring:
- Kontrollanslutning: Upprättas på port 21 och används för att skicka kommandon och ta emot svar mellan klient och server.
- Dataanslutning: Används för själva filöverföringen. Kan vara i aktivt eller passivt läge:
- Aktivt läge: Servern initierar dataanslutningen till klienten.
- Passivt läge: Klienten initierar dataanslutningen till servern.
Denna uppdelning möjliggör effektiv filöverföring men kan komplicera brandväggs- och nätverksinställningar.
Säkerhetsaspekter med FTP
Standard-FTP överför data i klartext, inklusive användarnamn och lösenord, vilket gör det sårbart för:
- Avlyssning: Känslig information kan fångas upp av obehöriga.
- Man-in-the-middle-attacker: Data kan manipuleras under överföring.
För att förbättra säkerheten används:
- FTPS (FTP Secure): FTP över SSL/TLS för krypterad överföring.
- SFTP (SSH File Transfer Protocol): Använder SSH för säker filöverföring.
I denna guide fokuserar vi på att säkra FTP med SSL/TLS genom att använda ProFTPD, en kraftfull och flexibel FTP-server.
Introduktion till ProFTPD
ProFTPD är en öppen källkod FTP-server för Unix/Linux-system, känd för:
- Flexibilitet: Hög konfigurerbarhet för olika behov.
- Säkerhet: Stöd för moderna säkerhetsprotokoll och autentisering.
- Stabilitet: Pålitlig prestanda under hög belastning.
ProFTPD:s konfigurationsstil liknar Apache HTTP Server, vilket underlättar för administratörer som är bekanta med Apache.
Steg-för-steg-guide för Ubuntu/Debian och Fedora
Förutsättningar
- En server med Ubuntu, Debian eller Fedora installerad.
- Root-åtkomst eller sudo-behörigheter.
- En grundläggande förståelse för terminalkommandon.
Översikt
- Steg 1: Installera ProFTPD.
- Steg 2: Grundläggande konfiguration.
- Steg 3: Skapa och hantera användarkonton.
- Steg 4: Säkra FTP-servern med SSL/TLS.
- Steg 5: Justera brandväggsinställningar.
- Steg 6: Testa FTP-servern.
- Steg 7: Felsökning.
Steg 1: Installera ProFTPD
På Ubuntu/Debian
Uppdatera systempaket
sudo apt update
sudo apt upgrade
Installera ProFTPD
sudo apt install proftpd
Under installationen kommer du att bli tillfrågad om du vill köra ProFTPD som Standalone eller under inetd. Välj Standalone för bättre prestanda.
Verifiera tjänsten
sudo systemctl status proftpd
Du bör se att tjänsten är aktiv och körs.
På Fedora
Uppdatera systempaket
sudo dnf update
Installera ProFTPD
ProFTPD finns inte alltid i de officiella Fedora-förvaret, så vi behöver installera det från en tredjepartskälla eller kompilera från källkod. För enkelhetens skull använder vi RPM Fusion-förvaret.
Lägg till RPM Fusion-förvaret
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
Installera ProFTPD
sudo dnf install proftpd
Starta och aktivera tjänsten
sudo systemctl start proftpd
sudo systemctl enable proftpd
Verifiera tjänsten
sudo systemctl status proftpd
Steg 2: Grundläggande konfiguration
Öppna konfigurationsfilen
Konfigurationsfilen för ProFTPD finns på olika platser beroende på distribution.
- Ubuntu/Debian:
/etc/proftpd/proftpd.conf
- Fedora:
/etc/proftpd.conf
Öppna filen med en textredigerare, till exempel nano:
Ubuntu/Debian
sudo nano /etc/proftpd/proftpd.conf
Fedora
sudo nano /etc/proftpd.conf
Anpassa inställningar
1. ServerName
Ange ett beskrivande namn för din FTP-server.
ServerName "MinSäkraFTPServer"
2. DefaultRoot
För att begränsa användare till sina hemkataloger, aktivera DefaultRoot
.
DefaultRoot ~
3. Port
Ändra standardporten om du vill öka säkerheten.
Port 2121
4. MaxInstances
Begränsa antalet samtidiga anslutningar.
MaxInstances 30
5. Inaktivera anonym åtkomst
Ändra sektionen för anonym åtkomst för att inaktivera den.
<Anonymous ~ftp>
User ftp
Group nogroup
<Limit LOGIN>
DenyAll
</Limit>
</Anonymous>
Spara och starta om tjänsten
Spara filen och starta om ProFTPD för att tillämpa ändringarna.
Ubuntu/Debian/Fedora
sudo systemctl restart proftpd
Steg 3: Skapa och hantera användarkonton
Skapa en ny FTP-användare
Skapa ett nytt användarkonto för FTP-åtkomst.
sudo adduser ftpuser
Ange ett starkt lösenord när du blir ombedd.
Begränsa användarens åtkomst
Verifiera att DefaultRoot ~
är aktiverad i konfigurationsfilen för att begränsa användarens åtkomst till sin hemkatalog.
Steg 4: Säkra FTP-servern med SSL/TLS
Generera ett SSL-certifikat
För att kryptera anslutningen behöver du ett SSL/TLS-certifikat. För teständamål kan du skapa ett självsignerat certifikat.
sudo openssl req -x509 -newkey rsa:2048 \
-keyout /etc/ssl/private/proftpd.key \
-out /etc/ssl/certs/proftpd.crt \
-days 365 -nodes
Ange nödvändig information under genereringen.
Aktivera TLS i ProFTPD
Redigera konfigurationsfilen för att aktivera TLS.
Ubuntu/Debian
sudo nano /etc/proftpd/proftpd.conf
Fedora
sudo nano /etc/proftpd.conf
Lägg till eller avkommentera följande sektion:
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol TLSv1.2
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
TLSVerifyClient off
TLSRequired on
</IfModule>
Spara och starta om tjänsten
Spara filen och starta om ProFTPD.
Ubuntu/Debian
sudo systemctl restart proftpd
Fedora
sudo systemctl restart proftpd
Steg 5: Justera brandväggsinställningar
Ubuntu/Debian med UFW
Tillåt FTP-trafik
Om du använder UFW, tillåt trafik på vald port.
- Standardport 21:
sudo ufw allow 21/tcp
- Anpassad port (t.ex. 2121):
sudo ufw allow 2121/tcp
Ladda om UFW
sudo ufw reload
Fedora med Firewalld
Tillåt FTP-trafik
Använd firewall-cmd
för att tillåta FTP-trafik.
- Standardport 21:
sudo firewall-cmd --permanent --add-port=21/tcp
- Anpassad port (t.ex. 2121):
sudo firewall-cmd --permanent --add-port=2121/tcp
Ladda om Firewalld
sudo firewall-cmd --reload
Steg 6: Testa FTP-servern
Använd en FTP-klient
För att testa servern kan du använda en FTP-klient som FileZilla.
Anslutningsinställningar
- Värd: Din servers IP-adress eller domännamn.
- Användarnamn:
ftpuser
(eller det användarnamn du skapade). - Lösenord: Det lösenord du angav.
- Port: 2121 (eller den port du konfigurerade).
- Protokoll: FTPS – FTP över TLS (om du har aktiverat SSL/TLS).
Anslut och verifiera
Anslut till servern. Om du använder ett självsignerat certifikat kan du få en varning; acceptera certifikatet för att fortsätta. Du bör nu kunna överföra filer säkert.
Steg 7: Felsökning
Kontrollera loggfiler
Om du stöter på problem kan du kontrollera följande loggfiler:
Ubuntu/Debian
- ProFTPD-logg:
/var/log/proftpd/proftpd.log
- TLS-logg:
/var/log/proftpd/tls.log
Fedora
- ProFTPD-logg:
/var/log/proftpd.log
- TLS-logg:
/var/log/proftpd/tls.log
Vanliga problem
- Brandväggsinställningar: Kontrollera att rätt portar är öppna.
- SSL/TLS-fel: Verifiera att certifikatfilernas sökvägar är korrekta.
- Användarbehörigheter: Se till att användarkonton har rätt behörigheter och att de är begränsade till sina hemkataloger.
Slutsats
Du har nu framgångsrikt installerat och konfigurerat en säker FTP-server med ProFTPD på både Ubuntu/Debian och Fedora. Genom att följa denna guide har du:
- Installerat ProFTPD: På din valda Linux-distribution.
- Anpassat serverinställningar: För att passa dina specifika behov.
- Skapat användarkonton: Och säkerställt att de är begränsade till sina hemkataloger.
- Säkrat anslutningar med SSL/TLS: För att kryptera dataöverföringar.
- Konfigurerat brandväggen: För att tillåta nödvändig trafik.
- Testat servern: Och verifierat att den fungerar korrekt.
Med en säker FTP-server på plats kan du nu effektivt och säkert hantera filöverföringar för dina projekt och samarbeten.
Ytterligare tips
- Använd starka lösenord: För alla användarkonton.
- Regelbundna uppdateringar: Håll ProFTPD och systempaket uppdaterade för att få de senaste säkerhetsfixarna.
- Överväg SFTP: För ännu säkrare filöverföring genom SSH.
I vår Wiki kan du läs amer om FTP