Hvordan til At oprette vsftpd for en Bruger's Bibliotek på Ubuntu 18.04

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 konfigurerer du vsftpd til at tillade en bruger at uploade filer til hans eller hendes hjemmemappe 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-18.04-server, samt en ikke-root-brugeren med sudo privilegier: Du kan lære mere om, hvordan du oprette en bruger med disse privilegier i vores Første Server Setup med Ubuntu 18.04 guide.,

Trin 1 — Installation af vsftpd

Lad os starte med at opdatere vores pakke liste og installere vsftpd dæmon

  • sudo apt update
  • sudo apt install vsftpd

Når installationen er færdig, lad os kopiere konfigurationen i en fil, så vi kan starte med en tom konfiguration, gemmer den oprindelige som en backup:

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

Med en backup af konfigurationen på plads, er vi klar til at konfigurere firewall.

Trin 2 — Åbning af fire .all

lad os kontrollere fire .all-status for at se, om den er aktiveret., Hvis det er tilfældet, sikrer vi, at FTP-trafik er tilladt, så fire .allregler ikke blokerer vores test.

Kontrollere firewall-status:

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

Lad os åbne porte 20 og 21 for FTP-port 990 for når vi gør det TLS, og havne 40000-50000 for den række af passiv havne vi planlægger at sætte i konfigurationsfilen:

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

Vores firewall-regler, bør nu se ud som dette:

Med vsftpd installeret, og de nødvendige porte er åbne, lad os gå videre til at skabe en dedikeret FTP-bruger.,

Trin 3 — Forberedelse af brugerkataloget

Vi opretter en dedikeret FTP-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.

Tilføj først en testbruger:

  • sudo adduser sammy

Tildel en adgangskode, når du bliver bedt om det. Du er velkommen til at trykke 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 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å har shell-adgang.,

I dette eksempel, snarere end at fjerne skrive privilegier fra hjem, lad os skabe en ftp bibliotek til at tjene som chroot og en skrivbar files mappe til at holde de faktiske filer.,opgaver:

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

Næste, lad os oprette mappen for fil-uploads og tildele ejerskab til brugeren:

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

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

  • sudo ls -la /home/sammy/ftp

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

  • 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, lad os ændre vores 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, lad os gøre det muligt for brugeren at uploade filer via afkommentering write_enable indstilling:

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

Vi vil også udkommenter chroot for at forhindre, at FTP-forbindelse bruger fra at få adgang til alle filer eller kommandoer uden mappetræet:

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

Lad os også tilføje en user_sub_token for at indsætte brugernavn i vores local_root directory vej, så vores konfiguration vil arbejde for brugeren og eventuelt yderligere fremtidige brugere. Tilføj disse indstillinger hvor som helst i filen:

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

lad os også begrænse rækkevidden af porte, der kan bruges til passiv FTP for at sikre, at der er nok forbindelser til rådighed:

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

Bemærk: i trin 2 åbnede vi 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.

for at tillade FTP-adgang fra sag til sag, lad os indstille konfigurationen, så brugerne kun har adgang, 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 YES brugere på listen, der har nægtet FTP-adgang. Når den er indstillet til NO, er det kun brugere på listen, der har adgang.

Når du er færdig med at foretage ændringerne, skal du gemme filen og afslutte editoren.

endelig, lad os tilføje vores bruger til /etc/vsftpd.userlist., Brug -a flag, der skal føjes til filen:

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

Kontrollere, 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

Med den konfiguration, lad os gå videre til at teste FTP-adgang.

Trin 5 — Test FTP-Adgang

Vi har konfigureret serveren til kun at tillade brugeren sammy for at oprette forbindelse via FTP. Lad os sørge for, at dette fungerer som forventet.,

anonyme brugere bør ikke oprette forbindelse: vi har deaktiveret anonym adgang. Lad os teste det ved at forsøge at forbinde anonymt. Hvis vores konfiguration er konfigureret korrekt, bør anonyme brugere nægtes tilladelse. Åbn et andet terminalvindue, og kør følgende kommando. Husk at erstatte 203.0.113.0 med din server ‘ s offentlige IP-adresse:

  • ftp -p 203.0.113.0

afbryd forbindelsen:

  • bye

andre Brugere end sammy bør ikke oprette forbindelse: Næste, lad os prøve at oprette forbindelse som vores sudo bruger.,> skal være i stand til at forbinde, læse og skrive filer: Lad os sørge for, at vores udpeget brugeren kan oprette forbindelse:

  • ftp -p 203.0.113.0

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

  • cd files
  • get test.txt

Næste, lad os uploade filen med et nyt navn til test skrive tilladelser:

  • put test.txt upload.txt

afbryd forbindelsen:

  • bye

Nu, at vi har testet vores opsætning, så lad os tage skridt til yderligere at sikre vores server.,

Trin 6 — sikring af transaktioner

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

Lad os bruge 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 at sætte både -keyout og -out flag til den samme værdi, den private nøgle og certifikatet vil blive placeret 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

Du vil blive bedt om at give oplysninger om adresse til dit certifikat., Erstatte med dine egne oplysninger for det fremhævede værdier nedenfor:

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 vil se to linjer, der begynder med rsa_. Kommenter dem ud, så de ser sådan 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 lavet:

/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 det 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, skal du 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. . .

det færdige filafsnit skal se sådan ud:

/etc / vsftpd.conf

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

genstart serveren, så ændringerne træder 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:

lad os derefter kontrollere, 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 man opretter forbindelse til 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 over ordværten, ikonet til venstre mest i øverste række. Klik på det:

et nyt vindue åbnes., Klik på knappen Nyt sted i nederste højre hjørne:


Under Mine Sitesebsteder vises et nyt ikon med ordene nyt siteebsted. Du kan navngive det nu eller vende tilbage senere og bruge knappen Omdøb.

udfyld Værtsfeltet med navnet eller IP-adressen. Vælg Kræv eksplicit FTP over TLS under rullemenuen kryptering.

for Logontype skal du vælge Spørg efter adgangskode. Udfyld din FTP-bruger i brugerfeltet:

Klik på Opret forbindelse 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.,ficate, der ligner dette:

Når du har accepteret certifikat -, dobbelt-klik på det files mappe, og træk upload.txt til venstre for at bekræfte, at du er i stand til at downloade filer.

Når du har gjort det, skal du højreklikke på den lokale kopi, skal du omdøbe den til upload-tls.txt og trække det tilbage til serveren for at bekræfte, at du kan overføre 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.,

Først skal du åbne en fil, der hedder ftponly bin bibliotek:

  • sudo nano /bin/ftponly

Tilføje en meddelelse, der fortæller brugeren, hvorfor de er ude af stand til at logge ind:

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

Gem filen og afslut din editor.,Æ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øje:

/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 på din server 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 skal 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.

Skriv et svar

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