Indledning

FTP er en forkortelse for File Transfer Protocol, er en netværksprotokol, der engang var almindeligt brugt til at flytte filer mellem en klient og server. Det er siden blevet erstattet af hurtigere, mere sikre og mere bekvemme måder at levere filer på. Mange casual Internet-brugere forventer at downloade direkte fra deres web browser med https, og kommando-line brugere er mere tilbøjelige til at bruge sikre protokoller såsom scp eller sFTP.,FTP bruges stadig til at understøtte ældre applikationer og arbejdsgange med meget specifikke behov. Hvis du har et valg af, hvilken protokol du skal bruge, kan du overveje at udforske de mere moderne muligheder. Når du har brug for FTP, er vsftpd imidlertid et glimrende valg. Vsftpd er optimeret til sikkerhed, ydeevne og stabilitet og tilbyder stærk beskyttelse mod mange sikkerhedsproblemer, der findes i andre FTP-servere, og er standard for mange Linu. – distributioner.,

i denne vejledning viser vi dig, hvordan du konfigurerer vsftpd for at give en bruger mulighed for at uploade filer til hans eller hendes hjemmekatalog ved hjælp af FTP med loginoplysninger sikret af SSL / TLS.

Forudsætninger

for At følge med i denne tutorial vil du har brug for:

  • Ubuntu-16.04-server med en ikke-root-brugeren med sudo rettigheder: Du kan lære mere om, hvordan du oprette en bruger med disse privilegier i vores Første Server Setup med Ubuntu 16.04 guide.

Når du har en Ubuntu-server på plads, er du klar til at begynde.,

Trin 1 — installation af vsftpd

Vi starter med at opdatere vores pakkeliste og installere vsftpd-dæmonen:

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

Når installationen er afsluttet, kopierer vi konfigurationsfilen, så vi kan starte med en tom konfiguration, gemme originalen som en sikkerhedskopi.

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

med en sikkerhedskopi af konfigurationen på plads er vi klar til at konfigurere fire .allen.

Trin 2 — Åbning af fire .all

Vi kontrollerer fire .allstatus for at se, om den er aktiveret., I så fald sikrer vi, at FTP-trafik er tilladt, så du ikke løber ind i fire .allregler, der blokerer dig, når det er tid til at teste.

  • sudo ufw status

I dette tilfælde, kun SSH er tilladt gennem:

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

Du kan have andre regler på plads, eller ingen firewall regler på alle. Da kun ssh trafik er tilladt i dette tilfælde, skal vi tilføje regler for FTP-trafik.,

Vi bliver nødt til at åbne port 20 og 21 for FTP, port 990 til senere, når vi aktivér TLS, og havne 40000-50000 til den række af passiv havne, vi regner med at der i den konfiguration fil:

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

Nu er vores firewall-regler, der ser sådan ud:

Med vsftpd installeret, og de nødvendige porte er åbne, vi er klar til at gå videre til næste trin.

Trin 3 — Forberedelse af brugerkataloget

til denne vejledning skal vi oprette en bruger, men du har muligvis allerede en bruger, der har brug for FTP-adgang., Vi sørger for at bevare en eksisterende brugers adgang til deres data i de følgende instruktioner. Alligevel anbefaler vi, at du starter med en ny bruger, indtil du har konfigureret og testet din opsætning.

først tilføjer vi en testbruger:

  • sudo adduser sammy

Tildel en adgangskode, når du bliver bedt om det, og tryk gerne på “ENTER” gennem de andre prompter.FTP er generelt mere sikker, når brugere er begrænset til en bestemt mappe.vsftpd opnår dette med chroot fængsler., Når chroot er aktiveret for lokale brugere, er de som standard begrænset til deres hjemmemappe. På grund af den måde vsftpd sikrer mappen, må den ikke kunne skrives af brugeren. Dette er fint for en ny bruger, der kun skal oprette forbindelse via FTP, men en eksisterende bruger skal muligvis skrive til deres hjemmemappe, hvis de også skal have adgang.,

I dette eksempel, snarere end at fjerne skrive privilegier fra home directory, vi vil skabe en ftp bibliotek til at tjene som chroot og en skrivbar files mappe til at holde de faktiske filer.,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 ..

Næste, vi vil oprette den mappe, hvor filer kan uploades og tildele ejerskab til brugeren:

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

Et tilladelser ind på det files bibliotek skal returnere følgende:

  • sudo ls -la /home/sammy/ftp

Endelig, vil vi tilføje en test.txt fil til brug når vi skal teste senere:

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

Nu, at vi har sikret ftp bibliotek, og gjorde det muligt for brugeren adgang til files bibliotek, vi vil vende vores opmærksomhed mod konfiguration.,

Trin 4 — konfiguration af FTP-adgang

Vi planlægger at give en enkelt bruger med en lokal shell-konto mulighed for at oprette forbindelse til FTP. De to nøgleindstillinger for dette er allerede indstillet i vsftpd.conf. Start med at åbne konfigurationsfilen for at kontrollere, at indstillingerne i din konfiguration matcher dem nedenfor:

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

næste skal vi ændre nogle værdier i filen. For at give brugeren mulighed for at uploade filer, vil vi afkommentere write_enable indstillingen, så vi har:

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

Vi afkommerer også chrooten for at forhindre den FTP-tilsluttede bruger i at få adgang til filer eller kommandoer uden for mappetræet.

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

Vi tilføjer en user_sub_token for at indsætte brugernavnet i vores local_root directory sti, så vores konfiguration fungerer for denne bruger og eventuelle fremtidige brugere, der måtte blive tilføjet.

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

Vi begrænser rækkevidden af porte, der kan bruges til passiv FTP for at sikre, at der er tilstrækkelige forbindelser til rådighed:

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

Bemærk: Vi åbnede de porte, som vi indstiller her til det passive portområde. Hvis du ændrer værdierne, skal du sørge for at opdatere dine fire .allindstillinger.

da vi kun planlægger at tillade FTP-adgang fra sag til sag, konfigurerer vi konfigurationen, så adgang kun gives til en bruger, når de udtrykkeligt føjes til en liste snarere end som standard:

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

userlist_deny skifter logik. Når den er indstillet til “Ja”, nægtes brugere på listen FTP-adgang. Når den er indstillet til” nej”, er det kun brugere på listen, der har adgang. Når du er færdig med at foretage ændringen, skal du gemme og afslutte filen.

endelig opretter og tilføjer vi vores bruger til filen., Vi vil bruge -a flag, der skal føjes til filen:

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

Dobbelt-tjekke, at det blev tilføjet, som du forventede:

cat /etc/vsftpd.userlist
Output
sammy

Restart daemon ‘ en til at indlæse konfigurationen ændringer:

  • sudo systemctl restart vsftpd

Nu er vi klar til test.

Trin 5 — Test FTP-Adgang

Vi har konfigureret serveren til kun at tillade brugeren sammy for at oprette forbindelse via FTP. Lad os sikre os, det er tilfældet.

anonyme brugere bør ikke oprette forbindelse: vi deaktiverede anonym adgang., Her tester vi det ved at prøve at oprette forbindelse anonymt. Hvis vi har gjort det korrekt, kan anonyme brugere, skal nægtes tilladelse:

  • ftp -p 203.0.113.0

afbryd forbindelsen:

  • bye

andre Brugere end sammy bør ikke oprette forbindelse: Næste, vi vil prøve at oprette forbindelse som vores sudo bruger. De skal også nægtes adgang, og det skal ske, før de får lov til at indtaste deres adgangskode.,og skrive filer: Her, vi vil sørge for, at vores udpegede bruger canconnect:

  • ftp -p 203.0.113.0

Vi vil ændre i files bibliotek, og brug derefter get kommando til at overføre test-fil, som vi oprettede tidligere at vores lokale maskine:

  • cd files
  • get test.txt

Vi vender lige tilbage omkring og prøv at uploade filen med et nyt navn til test skrive tilladelser:

  • put test.txt upload.txt

afbryd forbindelsen:

  • bye

Nu, at vi har testet vores konfiguration, vi vil tage skridt til yderligere at sikre vores server.,

Trin 6 — sikring af transaktioner

da FTP ikke krypterer data under transit, herunder brugeroplysninger, aktiverer vi TTL / SSL til at levere denne kryptering. Det første skridt er at oprette SSL-certifikater til brug med vsftpd.

Vi bruger openssl for at oprette et nyt certifikat, og brug -days flag for at gøre det gyldigt i et år. I samme kommando tilføjer vi en privat 2048-bit RSA-nøgle., Ved derefter at indstille både -keyout og -out flag til den samme værdi, vil den private nøgle og certifikatet være placeret i den samme fil.

vi gør 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

Du bliver bedt om at angive adresseoplysninger til dit certifikat., Erstatte med dine egne oplysninger til nedenstående spørgsmål:

For mere detaljerede oplysninger om certifikatet flag, se OpenSSL Væsentlige: Arbejdet med SSL, Certifikater, Private Nøgler og Kundeservicerepræsentanter

Når du har oprettet certifikater, åbne vsftpd konfiguration fil igen:

  • sudo nano /etc/vsftpd.conf

Mod bunden af filen, du bør to linjer, der begynder med rsa_. Kommenter dem ud, så de ser ud:

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

under dem skal du tilføje følgende linjer, der peger på certifikatet og den private nøgle, vi lige har oprettet:

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

derefter vil vi tvinge brugen af SSL, hvilket forhindrer klienter, der ikke kan håndtere TLS, i at oprette forbindelse. Dette er nødvendigt for at sikre, at al trafik er krypteret, men kan tvinge din FTP-bruger til at ændre klienter. Ændre ssl_enable til YES:

/etc/vsftpd.,conf
ssl_enable=YES

tilføj derefter følgende linjer for eksplicit at nægte anonyme forbindelser via SSL og for at kræve SSL til både dataoverførsel og logins:

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

Efter dette, vil vi konfigurere serveren til at bruge TLS, den foretrukne efterfølger til SSL, ved at tilføje følgende linjer:

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

endelig vil vi tilføje yderligere to muligheder. For det første kræver vi ikke SSL-genbrug, fordi det kan bryde mange FTP-klienter., Vi vil kræve” høj ” kryptering cipher suiter, som i øjeblikket betyder nøglelængder lig med eller større end 128 bits:

/etc / vsftpd.conf
require_ssl_reuse=NOssl_ciphers=HIGH

Når du er færdig, skal du gemme og lukke filen.

nu skal vi genstarte serveren for at ændringerne skal træde i kraft:

  • sudo systemctl restart vsftpd

På dette tidspunkt vil vi ikke længere være i stand til at oprette forbindelse til en usikker kommandolinjeklient. Hvis vi prøvede, ville vi se noget i retning af:

dernæst bekræfter vi, at vi kan oprette forbindelse ved hjælp af en klient, der understøtter TLS.,

Trin 7 — test af TLS med File .illa

de fleste moderne FTP-klienter kan konfigureres til at bruge TLS-kryptering. Vi vil demonstrere, hvordan du opretter forbindelse ved hjælp af File .illa på grund af dens tværplatformsstøtte. Se dokumentationen for andre kunder.

Når du først åbner File .illa, skal du finde ikonet for Managerebstedshåndtering lige under wordord-filen, ikonet til venstre mest i øverste række. Klik på det:

et nyt vindue åbnes., Klik på “New Site” – knappen i nederste højre hjørne:


Under “Mine Websteder” – et nyt ikon med ordene “New site” vises. Du kan navngive det nu eller vende tilbage senere og bruge knappen Omdøb.

Du skal udfylde feltet “vært” med navnet eller IP-adressen. Under rullemenuen” kryptering “skal du vælge”Kræv eksplicit FTP over TLS”.

For “Logon Type”, Vælg “Bed om adgangskode”. Udfyld den FTP-bruger, du oprettede i feltet “bruger”:


Klik på “Connect” i bunden af grænsefladen., Du bliver bedt om brugerens adgangskode:


Klik på “OK” for at oprette forbindelse. Du skal nu være forbundet med din server med TLS/SSL-kryptering.


når du har accepteret certifikatet, skal du dobbeltklikke på mappen files og trække upload.t .t til venstre for at bekræfte, at du er i stand til at do .nloade filer.

når du har gjort det, skal du højreklikke på den lokale kopi, omdøbe den til upload-tls.t andt ‘ og træk det tilbage til serveren for at bekræfte, at du kan uploade filer.,


– Du har nu bekræftet, at du kan sikkert og med succes kan overføre filer med SSL/TLS-aktiveret.

Trin 8 — deaktivering af Shell-adgang (Valgfrit)

Hvis du ikke kan bruge TLS på grund af klientkrav, kan du få en vis sikkerhed ved at deaktivere FTP-brugerens mulighed for at logge på nogen anden måde. En relativt ligetil måde at forhindre det er ved at oprette en brugerdefineret shell. Dette vil ikke give nogen kryptering, men det vil begrænse adgangen til en kompromitteret konto til filer tilgængelige via FTP.,

Åbn først en fil kaldetftponly i bin-mappen:

  • sudo nano /bin/ftponly

Vi tilføjer en meddelelse, der fortæller brugeren, hvorfor de ikke kan logge ind.,/p>

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

Ændre tilladelser for at gøre filen eksekverbar:

  • sudo chmod a+x /bin/ftponly

Åbn listen over gyldige skaller:

  • sudo nano /etc/shells

I bunden, tilføjer:

/etc/shells
. . ./bin/ftponly

Opdatering af brugerens shell med følgende kommando:

  • sudo usermod sammy -s /bin/ftponly

Nu kan du prøve at logge ind som sammy:

Du bør se noget som:

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

Dette bekræfter, at brugeren kan ikke længere ssh til serveren og er begrænset til FTP-adgang kun.,

konklusion

i denne vejledning dækkede vi opsætning af FTP for brugere med en lokal konto. Hvis du har brug for at bruge en ekstern godkendelseskilde, vil du måske undersøge vsftpd ‘ s support af virtuelle brugere. Det tilbyder et rigt sæt af muligheder gennem brug af PAM, Pluggable Authentication Modules, og er et godt valg, hvis du administrere brugere i et andet system som LDAP-eller Kerberos.

Articles

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *