Denne artikkelen beskriver hvordan du installerer og konfigurerer en FTP-server på Ubuntu 20.04 som du bruker til å dele filer mellom enhetene dine.
FTP (File Transfer Protocol) er en standard nettverksprotokoll som brukes til å overføre filer til og fra et eksternt nettverk. Det er flere åpen kildekode FTP-servere tilgjengelig for Linux. De mest kjente og mest brukte er PureFTPd, ProFTPD og vsftpd . Vi installerer vsftpd (Very Secure Ftp Daemon), en stabil, sikker og rask FTP-server. Vi vil også vise deg hvordan du konfigurerer serveren for å begrense brukere til hjemmekatalogen og kryptere hele overføringen med SSL / TLS.
Selv om FTP er en veldig populær protokoll, bør du bruke SCP eller SFTP for mer sikker og raskere dataoverføring .
Installere vsftpd på Ubuntu 20.04 #
Vsftpd-pakken er tilgjengelig i Ubuntu-repositoriene. For å installere det, utfør følgende kommandoer:
sudo apt oppdatering
sudo apt installere vsftpd
FTP-tjenesten starter automatisk når installasjonsprosessen er fullført. For å bekrefte det, skriv ut tjenestestatus:
sudo systemctl status vsftpd
Utgangen skal vise at vsftpd-tjenesten er aktiv og kjører:
● vsftpd.tjeneste - vsftpd FTP-server Lastet: lastet (/ lib / systemd / system / vsftpd.service; aktivert; leverandørinnstilling: aktivert) Aktiv: aktiv (kjører) siden ti 2021-03-02 15:17:22 UTC; For 3 sekunder siden ..
Konfigurere vsftpd #
Vsftpd-serverkonfigurasjonen er lagret i / etc / vsftpd.konf
fil.
De fleste serverinnstillingene er godt dokumentert inne i filen. For alle tilgjengelige alternativer, besøk vsftpd-dokumentasjonssiden.
I de følgende avsnittene vil vi gå over noen viktige innstillinger som trengs for å konfigurere en sikker vsftpd-installasjon.
Start med å åpne vsftpd-konfigurasjonsfilen:
sudo nano / etc / vsftpd.konf
1. FTP-tilgang #
Vi tillater tilgang til FTP-serveren bare til de lokale brukerne. Søk etter anonym_enable
og local_enable
retningslinjer og bekrefte at konfigurasjonen samsvarer med linjene nedenfor:
anonymous_enable = NO local_enable = JA
2. Aktiverer opplasting #
Finn og fjern merking av skriv_aktivere
direktivet for å tillate filsystemendringer, for eksempel å laste opp og fjerne filer:
write_enable = JA
3. Chroot fengsel #
For å forhindre lokale FTP-brukere å få tilgang til filer utenfor hjemmekatalogene, må du fjerne kommentarene fra begynnelsen av chroot_local_user
:
chroot_local_user = JA
Av sikkerhetsgrunner vil chft vsftpd av sikkerhetsgrunner nekte å laste opp filer hvis katalogen som brukerne er låst i er skrivbar.
Bruk en av løsningene nedenfor for å tillate opplasting når chroot er aktivert:
Metode 1. - Det anbefalte alternativet er å holde chroot-funksjonen aktivert og konfigurere FTP-kataloger. I dette eksemplet vil vi lage en
/ etc / vsftpd.konfftp
katalog inne i brukerens hjem, som vil tjene som chroot og en skrivbaropplastinger
katalog for opplasting av filer:user_sub_token = $ USER local_root = / home / $ USER / ftp
Metode 2. - Et annet alternativ er å aktivere
/ etc / vsftpd.konfallow_writeable_chroot
direktiv:allow_writeable_chroot = JA
Bruk bare dette alternativet hvis du må gi skrivbar tilgang til brukeren til hjemmekatalogen.
4. Passive FTP-tilkoblinger #
Som standard bruker vsftpd aktiv modus. For å bruke passiv modus, angi minimums- og maksimumsområde for porter:
/ etc / vsftpd.konfpasv_min_port = 30000 pasv_max_port = 31000
Du kan bruke hvilken som helst port for passive FTP-tilkoblinger. Når passiv modus er aktivert, åpner FTP-klienten en forbindelse til serveren på en tilfeldig port i det området du har valgt.
5. Begrensning av brukerinnlogging #
Du kan konfigurere vsftpd slik at bare bestemte brukere kan logge på. For å gjøre det, legg til følgende linjer på slutten av filen:
/ etc / vsftpd.konfuserlist_enable = JA userlist_file = / etc / vsftpd.user_list userlist_deny = NEI
Når dette alternativet er aktivert, må du spesifikt spesifisere hvilke brukere som kan logge på ved å legge til brukernavnene i / etc / vsftpd.brukerliste
fil (en bruker per linje).
6. Sikre overføringer med SSL / TLS #
For å kryptere FTP-overføringene med SSL / TLS, må du ha et SSL-sertifikat og konfigurere FTP-serveren for å bruke det.
Du kan bruke et eksisterende SSL-sertifikat signert av en klarert sertifikatmyndighet eller opprette et selvsignert sertifikat.
Hvis du har et domene eller underdomenet som peker på FTP-serverens IP-adresse, kan du raskt generere et gratis Let's Encrypt SSL-sertifikat.
Vi genererer en 2048-bit privat nøkkel og selvsignert SSL-sertifikat som vil være gyldig i ti år:
sudo openssl req -x509 -noder -dager 3650 -nøkkel rsa: 2048 -keyout / etc / ssl / private / vsftpd.pem -out / etc / ssl / private / vsftpd.pem
Både den private nøkkelen og sertifikatet lagres i samme fil.
Når SSL-sertifikatet er opprettet, åpner du vsftpd-konfigurasjonsfilen:
sudo nano / etc / vsftpd.konf
Finn rsa_cert_file
og rsa_private_key_file
direktiver, endre verdiene til pam
filbane og sett inn 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 annet er spesifisert, bruker FTP-serveren bare TLS for å opprette sikre tilkoblinger.
Start vsftpd-tjenesten på nytt
Når du er ferdig med å redigere, bør vsftpd-konfigurasjonsfilen (unntatt kommentarer) se slik ut:
/ etc / vsftpd.konflisten = NO listen_ipv6 = JA anonym_enable = NEI 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 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 = NEI
Lagre filen og start vsftpd-tjenesten for at endringene skal tre i kraft:
sudo systemctl starter vsftpd på nytt
Åpne brannmuren #
Hvis du kjører en UFW-brannmur, må du tillate FTP-trafikk.
Åpne port 21
(FTP-kommandoport), port 20
(FTP-dataport), og 30000-31000
(Passive ports range), kjør følgende kommandoer:
sudo ufw tillate 20: 21 / tcp
sudo ufw tillate 30000: 31000 / tcp
For å unngå å bli låst ut, må du sørge for at porten er 22
er åpen:
sudo ufw tillate OpenSSH
Last UFW-reglene på nytt ved å deaktivere og aktivere UFW:
sudo ufw deaktivere
sudo ufw aktivere
Slik verifiserer du endringene:
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)
Opprette FTP bruker #
For å teste FTP-serveren, oppretter vi en ny bruker.
- Hvis brukeren du vil gi FTP-tilgang til allerede eksisterer, kan du hoppe over det første trinnet.
- Hvis du setter inn
allow_writeable_chroot = JA
i konfigurasjonsfilen, hopp over tredje trinn.
Opprett en ny bruker som heter
newftpuser
:sudo adduser newftpuser
Legg til brukeren i den tillatte FTP-brukerlisten:
ekko "newftpuser" | sudo tee -a / etc / vsftpd.brukerliste
Opprett FTP-katalogtreet og angi riktige tillatelser:
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 diskutert i forrige avsnitt, vil brukeren kunne laste opp filene til
ftp / opplasting
katalog.
På dette tidspunktet er FTP-serveren din fullt funksjonell. Du skal kunne koble til serveren ved hjelp av hvilken som helst FTP-klient som kan konfigureres til å bruke TLS-kryptering, for eksempel FileZilla .
Deaktivering av Shell Access #
Som standard vil brukeren ha SSH-tilgang til serveren når den oppretter en bruker, hvis ikke eksplisitt spesifisert. For å deaktivere skalltilgang, opprett et nytt skall som skriver ut en melding som forteller brukeren at kontoen deres er begrenset til FTP-tilgang.
Kjør følgende kommandoer for å opprette / bin / ftponly
fil og gjør den kjørbar:
ekko -e '#!/ bin / sh \ necho "Denne kontoen er begrenset til FTP-tilgang."'| sudo tee -a / bin / ftponly
sudo chmod a + x / bin / ftponly
Legg det nye skallet til listen over gyldige skall i / etc / skjell
fil:
ekko "/ bin / ftponly" | sudo tee -a / etc / skjell
Endre brukerskallet til / bin / ftponly
:
sudo usermod newftpuser -s / bin / ftponly
Du kan bruke den samme kommandoen til å endre skallet til alle brukere du bare vil gi FTP-tilgang.
Konklusjon #
Vi har vist deg hvordan du installerer og konfigurerer en sikker og rask FTP-server på Ubuntu 20.04-systemet.
Hvis du har spørsmål eller tilbakemeldinger, er du velkommen til å legge igjen en kommentar.