Hvordan Sette Opp vsftpd for en Bruker's Katalogen på Ubuntu 18.04

Innledning

FTP-forkortelse for File Transfer Protocol) er en nettverksprotokoll som en gang var mye brukt for å flytte filer mellom en klient og en server. Det har siden blitt erstattet av raskere, sikrere og mer praktiske måter å levere filer. Mange uformelle Internett-brukere forventer å laste ned direkte fra deres nettleser med https, og kommando-linjen-brukere er mer tilbøyelige til å bruke sikre protokoller, for eksempel scp eller SFTP.,

FTP er fortsatt brukes til å støtte eldre programmer og arbeidsflyter med helt spesielle behov. Hvis du har et valg av hvilken protokoll som brukes, bør du vurdere å utforske den mer moderne alternativer. Når du trenger FTP, men vsftpd er et utmerket valg. Optimalisert for sikkerhet, ytelse og stabilitet, vsftpd har et sterkt vern mot mange sikkerhetsproblemer som er funnet i andre FTP-servere og er standard for mange Linux-distribusjoner.,

I denne opplæringen, vil du konfigurere vsftpd å tillate en bruker å laste opp filer til hans eller hennes hjem directory ved hjelp av FTP med påloggingsinformasjon som er sikret med SSL/TLS.

Forutsetninger

for Å følge sammen med denne opplæringen vil du trenger:

  • Ubuntu 18.04-serveren, og en ikke-root-bruker med sudo-rettigheter: Du kan lære mer om hvordan å sette opp en bruker med disse privilegier i vårt Første Server Oppsett med Ubuntu 18.04 guide.,

Trinn 1 — Installere vsftpd

La oss starte med å oppdatere pakkelisten og installere vsftpd daemon:

  • sudo apt update
  • sudo apt install vsftpd

Når installasjonen er fullført, la oss kopi konfigurasjonsfilen så vi kan starte med et tomt konfigurasjon, lagre den originale som en sikkerhetskopi:

  • sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Med en sikkerhetskopi av konfigurasjonen på plass, vi er klare for å konfigurere brannmuren.

Trinn 2 — Åpne Brannmuren

La oss sjekke firewall status for å se om det er aktivert., Hvis det er, vil vi sørge for at FTP-trafikk er tillatt så brannmurregler ikke blokkere våre tester.

Sjekk brannmuren status:

  • sudo ufw status

I dette tilfellet, bare SSH er tillatt gjennom:

Output
Status: activeTo Action From-- ------ ----OpenSSH ALLOW AnywhereOpenSSH (v6) ALLOW Anywhere (v6)

Du kan ha andre regler på plass, eller ikke-brannmur regler i det hele tatt. Siden bare SSH trafikk er tillatt i dette tilfellet, trenger vi å legge til regler for FTP-trafikk.,

La oss åpne porter 20 og 21 for FTP-port 990 for når vi aktiver TLS, og porter 40000-50000 for omfanget av passiv-porter som vi har tenkt å sette i konfigurasjonsfilen:

  • sudo ufw allow 20/tcp
  • sudo ufw allow 21/tcp
  • sudo ufw allow 990/tcp
  • sudo ufw allow 40000:50000/tcp
  • sudo ufw status

Vår brannmur-regler skal nå se ut som dette:

Med vsftpd installert, og at de nødvendige portene åpne, la oss gå på for å opprette en egen FTP-bruker.,

Trinn 3 — Klargjøre Bruker Directory

Vi vil opprette en egen FTP-bruker, men det kan hende du allerede har en bruker som har behov for FTP-tilgang. Vi vil ta vare å bevare en eksisterende bruker for å få tilgang til sine data i instruksjonene som følger. Selv så, anbefaler vi at du begynner med en ny bruker, før du har konfigurert og testet oppsettet.

Først, legg til en test-bruker:

  • sudo adduser sammy

Tildel et passord når du blir bedt om det. Føl deg fri til å trykke ENTER gjennom andre ber.,

FTP er generelt mer sikker når brukerne er begrenset til en bestemt katalog. vsftpd oppnår dette med chroot arresten. Når chroot er aktivert for lokale brukere, de er begrenset til deres hjem-mappe som standard. Imidlertid, på grunn av måten vsftpd fester katalogen, det må ikke være skrivbar av brukeren. Dette er fint for en ny bruker som bør bare koble til via FTP, men en eksisterende bruker kan ha behov for å skrive til sine hjem-mappe hvis de har også shell-tilgang.,

I dette eksempelet, snarere enn å fjerne skrive privilegier fra hjemmekatalogen, la oss lage en ftp – katalog for å tjene som chroot og en skrivbar files – katalog for å holde den faktiske filene.,oppdrag:

  • sudo ls -la /home/sammy/ftp
Output
total 84 dr-xr-xr-x 2 nobody nogroup 4096 Aug 24 21:29 .4 drwxr-xr-x 3 sammy sammy 4096 Aug 24 21:29 ..

Neste, la oss lage katalogen for filopplasting og tilordne eierskap til bruker:

  • sudo mkdir /home/sammy/ftp/files
  • sudo chown sammy:sammy /home/sammy/ftp/files

En tillatelser kontroller på ftp katalogen skal returnere følgende:

  • sudo ls -la /home/sammy/ftp

til Slutt, la oss legge til en test.txt – filen som skal brukes når vi tester:

  • echo "vsftpd test file" | sudo tee /home/sammy/ftp/files/test.txt

Nå som vi har sikret ftp directory og får brukeren tilgang til den files – katalogen, la oss endre konfigurasjonen.,

Trinn 4 — Konfigurere FTP-Tilgang

planlegger Vi å la en enkelt bruker med lokale shell-konto for å koble til FTP. De to viktigste innstillingene for dette er allerede satt i vsftpd.conf. Start med å åpne alternativer på config-filen for å kontrollere at innstillingene i din konfigurasjon, samsvarer med de nedenfor:

  • sudo nano /etc/vsftpd.conf
/etc/vsftpd.conf

Neste, la oss gjøre det mulig for brukerne å laste opp filer ved uncommenting write_enable innstilling:

/etc/vsftpd.,conf
. . .write_enable=YES. . .

Vi vil også uncomment chroot for å hindre FTP-koblet bruker fra å få tilgang til alle filer eller kommandoer utenfor katalogen treet:

/etc/vsftpd.conf
. . .chroot_local_user=YES. . .

La oss også legge til en user_sub_token for å sette inn ditt brukernavn i vår local_root directory banen slik at våre konfigurasjon vil arbeide for denne brukeren, og noen ekstra fremtidige brukere. Legg til disse innstillingene hvor som helst i filen:

/etc/vsftpd.,conf
. . .user_sub_token=$USERlocal_root=/home/$USER/ftp

La oss også begrense omfanget av porter som kan brukes til passiv FTP til å sørge for at nok tilkoblinger er tilgjengelige:

/etc/vsftpd.conf
. . .pasv_min_port=40000pasv_max_port=50000

Merk: I trinn 2, åpnet vi portene som vi satt her for passiv portområde. Hvis du endrer verdier, sørg for å oppdatere din brannmur.

for Å tillate FTP-tilgang, på et sak-til-sak grunnlag, la oss sette konfigurasjonen slik at brukerne har tilgang til bare når de eksplisitt er lagt til i en liste, snarere enn ved standard:

/etc/vsftpd.,conf
. . .userlist_enable=YESuserlist_file=/etc/vsftpd.userlistuserlist_deny=NO

userlist_deny veksler logikk: Når det er satt til YES, brukerne på listen har nektet FTP-tilgang. Når det er satt til NO, bare brukerne på listen har lov tilgang.

Når du er ferdig med å gjøre endringer, så lagrer og avslutter redaktøren.

til Slutt, la oss legge til en bruker til /etc/vsftpd.userlist., Bruk -a flagg for å legge til filen:

  • echo "sammy" | sudo tee -a /etc/vsftpd.userlist

Sjekk at det ble lagt til som forventet:

  • cat /etc/vsftpd.userlist
Output
sammy

Starte daemonen å laste konfigurasjon endringer:

  • sudo systemctl restart vsftpd

Med konfigurering i stedet, la oss gå på for å teste FTP-tilgang.

Trinn 5 — Testing FTP-Tilgang

Vi har konfigurert server, slik at bare brukeren sammy koble til via FTP. La oss sørge for at dette fungerer som forventet.,

Anonyme brukere bør ikke klarer å koble seg til på: Vi har deaktivert anonym tilgang. La oss teste det ved å prøve å koble til anonymt. Hvis vår konfigurasjon er satt opp riktig, anonyme brukere bør nektes tillatelse. Åpne et terminalvindu og kjør følgende kommando. Sørg for å erstatte 203.0.113.0 med serveren din er offentlig IP-adresse:

  • ftp -p 203.0.113.0

Lukke tilkoblingen:

  • bye

andre Brukere enn sammy burde ikke klarer å koble seg til på: Neste, la oss prøve å koble deg som vår bruker-sudo.,> må være i stand til å koble til, må du lese, og skrive filer: La oss sørge for at våre egne kan brukeren koble seg til på:

  • ftp -p 203.0.113.0

La oss endre i files directory og bruk get kommando for å overføre test-filen vi har opprettet tidligere, til våre lokale maskin:

  • cd files
  • get test.txt

Neste, la oss laste opp filen med et nytt navn for å teste skrive tillatelser:

  • put test.txt upload.txt

Lukke tilkoblingen:

  • bye

Nå som vi har testet våre konfigurasjon, la oss ta skritt for å ytterligere sikre vår server.,

Trinn 6 — Sikre Transaksjoner

Siden FTP-ikke kryptere alle data i transitt, inkludert brukerlegitimasjon, vil vi aktiver TLS/SSL å sørge for at kryptering. Første trinn er å opprette SSL-sertifikater for bruk med vsftpd.

La oss bruke openssl for å opprette et nytt sertifikat og bruk -days flagg for å gjøre det gyldig for ett år. I den samme kommandoen, vil vi legge til en privat 2048-bit RSA-nøkkel., Ved å sette både -keyout og -out flagg til samme verdi, den private nøkkelen og sertifikatet vil bli plassert i samme fil:

  • sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

vil Du bli bedt om å oppgi adressen informasjon for sertifikatet., Erstatte din egen informasjon for den uthevede verdier nedenfor:

For mer detaljert informasjon om sertifikatet flagg, se OpenSSL Essentials: å Arbeide med SSL-Sertifikater, Private Nøkler og Kundeservicerepresentanter

Når du har opprettet den sertifikater, åpne vsftpd konfigurering-filen igjen:

  • sudo nano /etc/vsftpd.conf

Mot bunnen av filen, du vil se to linjer som begynner med rsa_. Kommentar dem ut slik at de ser ut som dette:

/etc/vsftpd.,conf
. . .# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem# rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key. . .

Nedenfor dem, legge til følgende linjer som peker til et sertifikat og privat nøkkel vi nettopp opprettet:

/etc/vsftpd.conf
. . .rsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pem. . .

Etter at vi vil styrke bruken av SSL, som vil hindre at kunder som ikke har avtale med TLS-tilkobling. Dette er nødvendig for å sikre at all trafikk er kryptert, men det kan tvinge din FTP-bruker til å endre kunder. Endre ssl_enable til YES:

/etc/vsftpd.,conf
. . .ssl_enable=YES. . .

Etter det, legge til følgende linjer eksplisitt å forby anonyme tilkoblinger over SSL, og til å kreve SSL for både dataoverføring og innlogginger:

/etc/vsftpd.conf
. . .allow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YES. . .

Etter dette, konfigurere serveren til å bruke TLS, den foretrukne etterfølger til SSL, ved å legge til følgende linjer:

/etc/vsftpd.conf
. . .ssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NO. . .

til Slutt, vil vi legge til flere alternativer. For det første, vi vil ikke kreve SSL gjenbruk fordi det kan bryte mange FTP-klienter., Vi krever «høy» kryptering sifreringsrekker, som i dag betyr nøkkellengder som er lik eller større enn 128 bits:

/etc/vsftpd.conf
. . .require_ssl_reuse=NOssl_ciphers=HIGH. . .

Den ferdige filen delen skal se ut som dette:

/etc/vsftpd.conf

Når du er ferdig, kan du lagre og lukk filen.

Start serveren på nytt for at endringene skal tre i kraft:

  • sudo systemctl restart vsftpd

På dette punktet, vil vi ikke lenger være i stand til å koble med en usikker kommando-linje-klienten., Hvis vi prøvde, vi vil se noe slikt som dette:

Neste, la oss bekrefte at vi kan koble til ved hjelp av en klient som støtter TLS.

Trinn 7 — Testing TLS med FileZilla

de Fleste moderne FTP-klienter kan være konfigurert til å bruke TLS-kryptering. Vi vil vise hvordan koble med FileZilla på grunn av sin cross-plattform støtte. Se i dokumentasjonen for andre kunder.

Når du først åpne FileZilla, finne den Site Manager-ikonet like over ordet Vert, venstre-ikonet på den øverste raden. Klikk på det:

Et nytt vindu vil åpne seg., Klikk på det Nye Stedet-knappen i nedre høyre hjørne:


Under Mine Nettsteder en ny ikonet med ordene Nye nettstedet vil vises. Kan du nevne det nå eller komme tilbake senere og bruke Endre knappen.

Fyll ut Vert feltet med navn eller IP-adresse. Under Kryptering drop down menyen, velg Krever eksplisitt FTP over TLS.

For Pålogging Type, velger du Be om passord. Fyll i din FTP-bruker i feltet Bruker:

Klikk på Koble til på bunnen av grensesnittet., Du vil bli bedt om å angi brukerens passord:

Klikk på OK for å koble til. Du skal nå være tilkoblet server med TLS/SSL-kryptering.,ficate som ser ut som dette:

Når du har godtatt sertifikatet, dobbeltklikk på files mappe, og dra upload.txt til venstre for å bekrefte at du er i stand til å laste ned filer:

Når du har gjort det, høyre-klikk på den lokale kopiere, gi nytt navn til upload-tls.txt og dra den tilbake til tjeneren til å bekrefte at du kan laste opp filer som:

Du har nå bekreftet at du har en trygg måte og lykkes i å overføre filer med SSL/TLS-aktivert.,

Trinn 8 — Deaktivering av Shell-Tilgang (Valgfritt)

Hvis du er i stand til å bruke TLS-på grunn av kundenes krav, kan du få noen sikkerhet ved å deaktivere FTP brukeren mulighet til å logge seg på noen annen måte. En relativt enkel måte å unngå det på er ved å opprette en egendefinert shell. Dette vil ikke gi noen kryptering, men det vil begrense tilgangen til en kompromittert konto til filer som er tilgjengelige via FTP.,

Første, åpne en fil som heter ftponly i bin – katalogen:

  • sudo nano /bin/ftponly

Legge til en melding som forteller brukeren hvorfor de ikke klarer å logge inn:

/bin/ftponly
#!/bin/shecho "This account is limited to FTP access only."

Lagre filen, og avslutt din editor.,Endre tillatelsene til å lage kjørbare filen:

  • sudo chmod a+x /bin/ftponly

du vil Åpne listen over gyldige skjell:

  • sudo nano /etc/shells

nederst legg til:

/etc/skjell
. . ./bin/ftponly

Oppdatere brukerens shell med følgende kommando:

  • sudo usermod sammy -s /bin/ftponly

Nå kan du prøve å logge inn på din server som sammy:

Du bør se omtrent slik ut:

Output
This account is limited to FTP access only.Connection to 203.0.113.0 closed.

Dette bekrefter at brukeren kan ikke lenger ssh til serveren og er begrenset til FTP-tilgang.,

Konklusjon

I denne opplæringen vi dekket sette opp FTP-for brukere med en lokal konto. Hvis du trenger å bruke en ekstern godkjenning kilde, kan du vurdere å se inn vsftpd‘s støtte av virtuelle brukere. Dette gir et rikt sett av alternativer gjennom bruk av PAM, den Pluggbare Godkjenning Moduler, og er et godt valg hvis du administrere brukere i et annet system, for eksempel LDAP eller Kerberos.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *