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 vi vise deg hvordan du konfigurerer 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 16.04 serveren med 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 16.04 guide.

Når du har en Ubuntu server på plass, er du klar til å begynne.,

Trinn 1 — Installere vsftpd

Vi vil starte med å oppdatere pakkelisten og installere vsftpd daemon:

  • sudo apt-get update
  • sudo apt-get install vsftpd

Når installasjonen er fullført, sender vi kopi konfigurasjonsfilen så vi kan starte med et tomt konfigurasjon, lagre den originale som en backup.

  • 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

Vi vil sjekke firewall status for å se om det er aktivert., Hvis så, vil vi sørge for at FTP-trafikk er tillatt så du vil ikke kjøre inn brannmurregler blokkere deg når det gjelder tid til å teste.

  • 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.,

Vi trenger å åpne porter, 20 og 21 for FTP-port 990 for senere når vi aktiver TLS, og havner 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

Nå våre brannmurregler ser ut som:

Med vsftpd installert, og at de nødvendige porter som er åpne, vi er klar for å gå videre til neste trinn.

Trinn 3 — Klargjøre Bruker Directory

For denne opplæringen, vi kommer til å opprette en 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å, vi anbefaler at du starter med en ny bruker, før du har konfigurert og testet oppsettet.

Først, vil vi legge til en test-bruker:

  • sudo adduser sammy

Tildel et passord når du blir bedt om det, og 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 også shell-tilgang.,

I dette eksempelet, snarere enn å fjerne skrive privilegier fra hjemmekatalogen, vi vil lage en ftp – katalog for å tjene som chroot og en skrivbar files – katalog for å holde den faktiske filene.,33″>

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, vi vil opprette katalogen der filene kan lastes opp og gi eierskap til bruker:

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

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

  • sudo ls -la /home/sammy/ftp

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

  • 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 directory, vil vi vender vår oppmerksomhet til konfigurasjon.,

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 vi får behov for å endre noen verdier i filen. For å tillate brukeren å laste opp filer, vil vi uncomment write_enable innstilling slik at vi har:

/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. . .

vil Vi legge til en user_sub_token for å sette inn ditt brukernavn i vår local_root directory banen slik at våre konfigurasjon vil fungere for denne brukeren og eventuelle fremtidige brukere som kan bli lagt til.

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

Vi vil 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: Vi pre-åpnet portene som vi satt her for passiv portområde. Hvis du endrer verdier, sørg for å oppdatere din brannmur.

Siden vi er bare planlegger å tillate FTP-tilgang, på et sak-til-sak grunnlag, vil vi sette opp konfigurasjonen slik at tilgangen er gitt til en bruker bare når de er eksplisitt lagt til en liste snarere enn standard:

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

userlist_deny veksler logikk. Når det er satt til «JA», brukerne på listen har nektet FTP-tilgang. Når det er satt til «NEI», bare brukerne på listen har lov tilgang. Når du er ferdig med å endre, lagre og lukk filen.

til Slutt, vi vil opprette og legge til våre bruker-til-fil., Vi vil bruke -a flagg for å legge til filen:

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

kontroller at det ble lagt til som forventet:

cat /etc/vsftpd.userlist
Output
sammy

Starte daemonen å laste konfigurasjon endringer:

  • sudo systemctl restart vsftpd

Nå er vi klar for testing.

Trinn 5 — Testing FTP-Tilgang

Vi har konfigurert server, slik at bare brukeren sammy koble til via FTP. La oss sørge for at det er tilfelle.

Anonyme brukere bør ikke klarer å koble seg til på: Vi er deaktivert anonym tilgang., Her vil vi teste ved å prøve å koble til anonymt. Hvis vi har gjort det riktig, anonyme brukere bør nektes tillatelse:

  • ftp -p 203.0.113.0

Lukke tilkoblingen:

  • bye

andre Brukere enn sammy burde ikke klarer å koble seg til på: Neste, vil vi prøve å koble deg som vår sudo bruker. De også bør bli nektet adgang, og det bør skje før de har lov til å oppgi passord.,og skrive filer: Her skal vi sørge for at vår angitte brukeren canconnect:

  • ftp -p 203.0.113.0

Vi vil endre til files katalog, bruk så get kommando for å overføre test-filen vi har opprettet tidligere, til våre lokale maskin:

  • cd files
  • get test.txt

Vi vil slå tilbake rundt og prøver å 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, vil vi iverksette tiltak for å ytterligere sikre vår server.,

Trinn 6 — Sikre Transaksjoner

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

Vi vil 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., Så ved å sette både -keyout og -out flagg til samme verdi, den private nøkkelen og sertifikatet vil bli plassert i samme fil.

Vi vil gjøre dette med følgende kommando:

  • 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 spørsmålene 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 bør to linjer som begynner med rsa_. Kommentar dem ut slik at de ser ut som:

/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 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 vil vi 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

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

Nå, vi trenger å starte 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, vil vi 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 til ved hjelp av FileZilla på grunn av sin støtte på tvers av plattformer. Se i dokumentasjonen for andre kunder.

Når du først åpne FileZilla, finne Nettstedet Manager-ikonet like nedenfor word-Fil, venstre-ikonet på den øverste raden. Klikk på det:

Et nytt vindu vil åpne seg., Klikk på «New Site» – knappen nederst i høyre hjørne:


Under «Mine Sider» en ny ikonet med ordene «New site» vil vises. Kan du nevne det nå eller komme tilbake senere og bruke Endre knappen.

Du må fylle ut «Host» feltet med navn eller IP-adresse. Under «Kryptering» drop down menyen, velg «Krever eksplisitt FTP over TLS».

For «Logg-Type», velg «Be om passord». Fyll inn FTP-brukeren du opprettet i «User» – feltet:


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.


Når du har godtatt sertifikatet, dobbeltklikk på files mappe, og dra opp.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, endre navn på det å laste opp-tls.txt » og dra den tilbake til tjeneren til å bekrefte at du kan laste opp filer.,


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-katalog:

  • sudo nano /bin/ftponly

vil Vi legge til en melding som forteller brukeren hvorfor de ikke klarer å logge deg på.,/p>

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

Endre tillatelsene til å lage kjørbare filen:

  • sudo chmod a+x /bin/ftponly

du vil Åpne listen over gyldige skjell:

  • sudo nano /etc/shells

På bunnen, 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 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 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.

Articles

Legg igjen en kommentar

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