Denne artikel beskriver, hvordan du installerer og konfigurerer en FTP-server på Ubuntu 20.04, som du bruger til at dele filer mellem dine enheder.
FTP (File Transfer Protocol) er en standard netværksprotokol, der bruges til at overføre filer til og fra et fjernt netværk. Der er flere open source FTP-servere tilgængelige til Linux. De mest kendte og mest udbredte er PureFTPd, ProFTPD og vsftpd . Vi installerer vsftpd (Very Secure Ftp Daemon), en stabil, sikker og hurtig FTP-server. Vi viser dig også, hvordan du konfigurerer serveren til at begrænse brugerne til deres hjemmekatalog og kryptere hele transmissionen med SSL / TLS.
Selvom FTP er en meget populær protokol, skal du bruge SCP eller SFTP for mere sikker og hurtigere dataoverførsel .
Installation af vsftpd på Ubuntu 20.04 #
VSftpd-pakken er tilgængelig i Ubuntu-arkiverne. For at installere det skal du udføre følgende kommandoer:
sudo apt opdatering
sudo apt installer vsftpd
FTP-tjenesten starter automatisk, når installationen er afsluttet. For at bekræfte det skal du udskrive servicestatus:
sudo systemctl status vsftpd
Outputtet skal vise, at vsftpd-tjenesten er aktiv og kører:
● vsftpd.service - vsftpd FTP-server Indlæst: indlæst (/ lib / systemd / system / vsftpd.service; aktiveret; forudindstilling af leverandør: aktiveret) Aktiv: aktiv (kører) siden Tir 2021-03-02 15:17:22 UTC; 3s siden…
Konfiguration af vsftpd #
Vsftpd-serverkonfigurationen er gemt i / etc / vsftpd.konf
fil.
De fleste af serverindstillingerne er veldokumenterede inde i filen. For alle tilgængelige indstillinger skal du besøge siden med vsftpd-dokumentation.
I de følgende afsnit gennemgår vi nogle vigtige indstillinger, der er nødvendige for at konfigurere en sikker vsftpd-installation.
Start med at åbne vsftpd-konfigurationsfilen:
sudo nano / etc / vsftpd.konf
1. FTP-adgang #
Vi giver kun adgang til FTP-serveren til de lokale brugere. Søg efter anonym_enable
og local_enable
direktiver og kontrollere, at din konfiguration stemmer overens med nedenstående linjer:
anonymous_enable = NEJ local_enable = JA
2. Aktivering af uploads #
Find og fjern kommentar til skriv_aktiver
direktiv, der tillader filsystemændringer, såsom upload og fjernelse af filer:
write_enable = JA
3. Chroot fængsel #
For at forhindre lokale FTP-brugere i at få adgang til filer uden for deres hjemmekataloger skal du fjerne kommentar fra lne startende med chroot_local_user
:
chroot_local_user = JA
Af sikkerhedsmæssige årsager vil vsftpd af sikkerhedsmæssige årsager nægte at uploade filer, hvis det bibliotek, som brugerne er låst i, kan skrives.
Brug en af nedenstående løsninger til at tillade uploads, når chroot er aktiveret:
Metode 1. - Den anbefalede mulighed er at holde chroot-funktionen aktiveret og konfigurere FTP-mapper. I dette eksempel opretter vi en
/ etc / vsftpd.konfftp
katalog inde i brugerens hjem, som vil tjene som chroot og en skrivbaruploads
bibliotek til upload af filer:user_sub_token = $ USER local_root = / home / $ USER / ftp
Metode 2. - En anden mulighed er at aktivere
/ etc / vsftpd.konfallow_writeable_chroot
direktiv:allow_writeable_chroot = JA
Brug kun denne indstilling, hvis du skal give din bruger skrivbar adgang til dens hjemmekatalog.
4. Passive FTP-forbindelser #
Som standard bruger vsftpd aktiv tilstand. For at bruge passiv tilstand skal du indstille minimums- og maksimumområdet for porte:
/ etc / vsftpd.konfpasv_min_port = 30000 pasv_max_port = 31000
Du kan bruge enhver port til passive FTP-forbindelser. Når den passive tilstand er aktiveret, åbner FTP-klienten en forbindelse til serveren på en tilfældig port i det valgte område.
5. Begrænsning af bruger login #
Du kan konfigurere vsftpd, så kun bestemte brugere kan logge ind. For at gøre det skal du tilføje følgende linjer i slutningen af filen:
/ etc / vsftpd.konfuserlist_enable = JA userlist_file = / etc / vsftpd.user_list userlist_deny = NEJ
Når denne indstilling er aktiveret, skal du eksplicit angive, hvilke brugere der kan logge på ved at føje brugernavne til / etc / vsftpd.bruger_liste
fil (en bruger pr. linje).
6. Sikring af transmissioner med SSL / TLS #
For at kryptere FTP-transmissioner med SSL / TLS skal du have et SSL-certifikat og konfigurere FTP-serveren til at bruge det.
Du kan bruge et eksisterende SSL-certifikat underskrevet af en betroet certifikatmyndighed eller oprette et selvsigneret certifikat.
Hvis du har et domæne eller underdomæne, der peger på FTP-serverens IP-adresse, kan du hurtigt generere et gratis Lad os kryptere SSL-certifikat.
Vi genererer en 2048-bit privat nøgle og selvsigneret SSL-certifikat, der er gyldigt i ti år:
sudo openssl req -x509 -noder -dage 3650 -nykey rsa: 2048 -keyout / etc / ssl / private / vsftpd.pem -out / etc / ssl / private / vsftpd.pem
Både den private nøgle og certifikatet gemmes i den samme fil.
Når SSL-certifikatet er oprettet, skal du åbne vsftpd-konfigurationsfilen:
sudo nano / etc / vsftpd.konf
Find rsa_cert_file
og rsa_private_key_file
direktiver, ændre deres værdier til pam
filsti og indstil ssl_enable
direktiv til JA
:
rsa_cert_file = / etc / ssl / private / vsftpd.pem rsa_private_key_file = / etc / ssl / private / vsftpd.pem ssl_enable = JA
Hvis ikke andet er angivet, bruger FTP-serveren kun TLS til at oprette sikre forbindelser.
Genstart vsftpd Service #
Når du er færdig med at redigere, skal vsftpd-konfigurationsfilen (undtagen kommentarer) se sådan ud:
/ etc / vsftpd.konflyt = NEJ listen_ipv6 = JA anonym_enable = NEJ local_enable = JA write_enable = JA dirmessage_enable = JA use_localtime = JA xferlog_enable = JA connect_from_port_20 = JA chroot_local_user = JA secure_chroot_dir = / var / run / vsftpd / service_dk privat / vsftpd.pem rsa_private_key_file = / etc / ssl / private / vsftpd.pem ssl_enable = YES user_sub_token = $ USER local_root = / home / $ USER / ftp pasv_min_port = 30000 pasv_max_port = 31000 userlist_enable = YES userlist_file = / etc / vsftpd.user_list userlist_deny = NEJ
Gem filen og genstart vsftpd-tjenesten for at ændringer kan træde i kraft:
sudo systemctl genstart vsftpd
Åbning af Firewall #
Hvis du kører en UFW-firewall, skal du tillade FTP-trafik.
For at åbne port 21
(FTP-kommandoport), port 20
(FTP-dataport) og 30000-31000
(Passive ports rækkevidde), kør følgende kommandoer:
sudo ufw tillader 20: 21 / tcp
sudo ufw tillader 30000: 31000 / tcp
For at undgå at blive låst ud, skal du sørge for port 22
er åben:
sudo ufw tillader OpenSSH
Genindlæs UFW-reglerne ved at deaktivere og genaktivere UFW:
sudo ufw deaktiver
sudo ufw aktivere
Sådan verificeres de kørte ændringer:
sudo ufw status
Status: aktiv Til handling Fra - ------ ---- 20: 21 / tcp ALLOW Anywhere 30000: 31000 / tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20: 21 / tcp (v6) ALLOW Anywhere (v6) 30000: 31000 / tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)
Oprettelse af FTP-brugernr
For at teste FTP-serveren opretter vi en ny bruger.
- Hvis den bruger, som du vil give FTP-adgang til allerede findes, skal du springe det første trin over.
- Hvis du indstiller
allow_writeable_chroot = JA
i din konfigurationsfil skal du springe 3. trin over.
Opret en ny bruger med navnet
newftpuser
:sudo adduser newftpuser
Føj brugeren til den tilladte FTP-brugerliste:
ekko "newftpuser" | sudo tee -a / etc / vsftpd.bruger_liste
Opret FTP-katalogtræet, og angiv de rigtige tilladelser:
sudo mkdir -p / home / newftpuser / ftp / upload
sudo chmod 550 / home / newftpuser / ftp
sudo chmod 750 / home / newftpuser / ftp / upload
sudo chown -R newftpuser: / home / newftpuser / ftp
Som diskuteret i det foregående afsnit vil brugeren være i stand til at uploade sine filer til
ftp / upload
vejviser.
På dette tidspunkt er din FTP-server fuldt funktionel. Du skal være i stand til at oprette forbindelse til serveren ved hjælp af enhver FTP-klient, der kan konfigureres til at bruge TLS-kryptering, såsom FileZilla .
Deaktivering af Shell Access #
Når der oprettes en bruger, hvis ikke eksplicit angivet, har brugeren som standard SSH-adgang til serveren. For at deaktivere shelladgang skal du oprette en ny shell, der udskriver en besked, der fortæller brugeren, at deres konto kun er begrænset til FTP-adgang.
Kør følgende kommandoer for at oprette / bin / ftponly
fil og gør den eksekverbar:
ekko -e '#!/ bin / sh \ necho "Denne konto er kun begrænset til FTP-adgang."'| sudo tee -a / bin / ftponly
sudo chmod a + x / bin / ftponly
Føj den nye skal til listen over gyldige skaller i / etc / skaller
fil:
ekko "/ bin / ftponly" | sudo tee -a / etc / skaller
Skift bruger shell til / bin / ftponly
:
sudo usermod newftpuser -s / bin / ftponly
Du kan bruge den samme kommando til at ændre shell på alle brugere, du kun vil give FTP-adgang.
Konklusion #
Vi har vist dig, hvordan du installerer og konfigurerer en sikker og hurtig FTP-server på din Ubuntu 20.04-systemet.
Hvis du har spørgsmål eller feedback, er du velkommen til at efterlade en kommentar.