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:
OutputStatus: 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″>
Outputtotal 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
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:
. . .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.
. . .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.
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:
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:
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
Outputsammy
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:
# 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:
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
:
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:
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:
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:
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:
. . ./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:
OutputThis 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.