Cum Să înființeze vsftpd pentru un Utilizator' – uri Director de pe Ubuntu 18.04

Introducere

FTP, scurt pentru File Transfer Protocol, este un protocol de rețea care a fost odată utilizate pe scară largă pentru mutarea fișierelor între un client și server. De atunci a fost înlocuit cu modalități mai rapide, mai sigure și mai convenabile de livrare a fișierelor. Mulți casual, utilizatorii de Internet aștepta pentru a descărca direct de pe browser-ul lor web cu https, și de comandă-line utilizatorii sunt mult mai susceptibile de a utiliza protocoale securizate, cum ar fi scp sau SFTP.,

FTP este încă utilizat pentru a sprijini aplicații vechi și fluxuri de lucru cu nevoi foarte specifice. Dacă aveți posibilitatea de a alege ce protocol să utilizați, Luați în considerare explorarea opțiunilor mai moderne. Cu toate acestea, când aveți nevoie de FTP, vsftpd este o alegere excelentă. Optimizat pentru securitate, performanță și stabilitate, vsftpd oferă o protecție puternică împotriva multor probleme de securitate găsite în alte servere FTP și este implicit pentru multe distribuții Linux.,

în acest tutorial, veți configura vsftpd pentru a permite unui utilizator să încarce fișiere în directorul său de domiciliu folosind FTP cu acreditări de conectare securizate prin SSL/TLS.pentru a urmări împreună cu acest tutorial, veți avea nevoie de:

  • un server Ubuntu 18.04 și un utilizator non-root cu privilegii sudo: puteți afla mai multe despre cum să configurați un utilizator cu aceste privilegii în configurarea inițială a serverului cu Ghidul Ubuntu 18.04.,

Pasul 1 — Instalarea vsftpd

Să începem prin a actualiza lista de pachete și instalarea vsftpd daemon:

  • sudo apt update
  • sudo apt install vsftpd

atunci Când instalarea este completă, să copiați fișierul de configurare astfel încât să putem începe cu un gol de configurare, salvarea original ca o copie de rezervă:

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

Cu o copie de rezervă a configurației în loc, suntem gata pentru a configura firewall-ul.

Pasul 2-Deschiderea Firewall-ului

să verificăm starea firewall-ului pentru a vedea dacă este activat., Dacă este, ne vom asigura că traficul FTP este permis, astfel încât regulile firewall-ului să nu blocheze testele noastre.

Verificați firewall status:

  • sudo ufw status

În acest caz, doar SSH este permis prin:

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

este posibil să Aveți alte reguli sau fără reguli firewall, la toate. Deoarece numai traficul SSH este permis în acest caz, va trebui să adăugăm reguli pentru traficul FTP.,

Să deschidă porturile 20 și 21 pentru FTP, port 990 de când ne-am permite TLS, și porturi 40000-50000 pentru gama de porturi pasive-am de gând să se stabilească în fișierul de configurare:

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

firewall-ul Nostru norme ar trebui acum sa arate astfel:

Cu vsftpd instalat și necesar porturi deschise, să trecem la crearea unei dedicat utilizator FTP.,

Pasul 3-Pregătirea directorului de utilizator

vom crea un utilizator FTP dedicat, dar este posibil să aveți deja un utilizator care are nevoie de acces FTP. Vom avea grijă să păstrăm accesul unui utilizator existent la datele sale în instrucțiunile care urmează. Chiar și așa, vă recomandăm să începeți cu un utilizator nou până când ați configurat și testat configurarea.

Mai întâi, adăugați un utilizator de test:

  • sudo adduser sammy

atribuiți o parolă atunci când vi se solicită. Simțiți-vă liber să apăsați ENTER prin celelalte solicitări.,

FTP este în general mai sigur atunci când utilizatorii sunt restricționați la un anumit director. vsftpd realizează acest lucru cu chroot închisori. Când chroot este activat pentru utilizatorii locali, aceștia sunt restricționați în mod implicit la directorul lor de domiciliu. Cu toate acestea, din cauza modului în care vsftpd securizează directorul, acesta nu trebuie să poată fi scris de utilizator. Acest lucru este bine pentru un utilizator nou care ar trebui să se conecteze doar prin FTP, dar un utilizator existent poate fi necesar să scrie în folderul de acasă dacă are și acces la shell.,

În acest exemplu, mai degrabă decât eliminarea scrie privilegii de la directorul acasă, să creeze un ftp director pentru a servi ca chroot și o scriere files director pentru a organiza fișierele reale.,misiuni:

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

apoi, să-i crea directorul pentru încărcări de fișiere și de a atribui dreptul de proprietate a utilizatorului:

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

Un permissions verifica pe ftp director ar trebui să se întoarcă următoarele:

  • sudo ls -la /home/sammy/ftp

în cele din Urmă, să adăugați un test.txt fișier pentru a utiliza atunci când am testat:

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

Acum că ne-am asigurat ftp director și-a permis accesul utilizatorului la files director, să modifice configurația noastră.,

Pasul 4-Configurarea accesului FTP

planificăm să permitem unui singur utilizator cu un cont shell local să se conecteze cu FTP. Cele două setări cheie pentru aceasta sunt deja setate în vsftpd.conf. Începeți prin a deschide fișierul de configurare pentru a verifica dacă setările de configurare se potrivesc cu cele de mai jos:

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

Apoi, să permită utilizatorului să încarce fișiere de uncommenting write_enable setare:

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

de asemenea, Vom decomentați chroot pentru a preveni FTP-utilizator conectat la accesarea orice fișiere sau comenzi în afara copac director:

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

Să adăugați, de asemenea, un user_sub_token pentru a introduce numele de utilizator în local_root directory calea noastră de configurare va lucra pentru acest utilizator și orice suplimentare viitorii utilizatori. Adăugați aceste setări oriunde în fișier:

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

Să limiteze, de asemenea, gama de porturi care pot fi utilizate pentru pasiv FTP pentru a face destul de sigur sunt disponibile conexiuni:

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

notă: la Pasul 2, am deschis porturile pe care le-am setat aici pentru intervalul de porturi pasive. Dacă modificați valorile, asigurați-vă că actualizați setările firewall-ului.pentru a permite accesul FTP de la caz la caz, să setăm configurația astfel încât utilizatorii să aibă acces doar atunci când sunt adăugați Explicit într-o listă, mai degrabă decât implicit:

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

userlist_deny comută logica: atunci Când este setată la YES, utilizatorii de pe lista sunt refuzate acces FTP. Când este setat la NO, numai utilizatorii din listă au acces. când ați terminat de făcut modificările, salvați fișierul și ieșiți din editor.

în cele din urmă, să adăugăm utilizatorul nostru la /etc/vsftpd.userlist., Utilizați -a pavilion pentru a adăuga la dosar:

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

Verificați că a fost adăugat ca te-ai așteptat:

  • cat /etc/vsftpd.userlist
Output
sammy

Restart daemon pentru a încărca modificările de configurație:

  • sudo systemctl restart vsftpd

Cu o configurație în loc, să trecem la testarea acces FTP.

Pasul 5 — testarea accesului FTP

am configurat serverul pentru a permite doar utilizatorului sammy să se conecteze prin FTP. Să ne asigurăm că funcționează așa cum era de așteptat.,utilizatorii anonimi ar trebui să nu se conecteze: am dezactivat accesul anonim. Să testăm asta încercând să ne conectăm anonim. Dacă configurația noastră este configurată corect, utilizatorilor anonimi ar trebui să li se refuze permisiunea. Deschideți o altă fereastră terminal și executați următoarea comandă. Fi sigur de a înlocui 203.0.113.0 cu server-ul dvs. public din adresa IP:

  • ftp -p 203.0.113.0

Închide conexiune:

  • bye

alți Utilizatori decât sammy ar trebui să nu reușesc să se conecteze: în continuare, să încercăm conectarea noastră sudo utilizator.,> ar trebui să fie capabil să se conecteze, citi și scrie fișiere: Să ne asigurăm că ne desemnat de utilizator se poate conecta:

  • ftp -p 203.0.113.0

Să schimbăm în files director și de a folosi get comandă pentru a transfera fișierul de testare am creat mai devreme pentru a noastră mașină locală:

  • cd files
  • get test.txt

Apoi, să încărcați fișierul cu un nume nou pentru a testa permisiuni de scriere:

  • put test.txt upload.txt

Închide conexiune:

  • bye

Acum că am testat noastră de configurare, să ia măsuri pentru a asigura în continuare pe serverul nostru.,

Pasul 6-securizarea tranzacțiilor

deoarece FTP nu criptează date în tranzit, inclusiv acreditările utilizatorilor, vom permite TLS/SSL să furnizeze acea criptare. Primul pas este crearea certificatelor SSL pentru utilizare cu vsftpd.

Să folosim openssl pentru a crea un nou certificat și de a folosi -days pavilion pentru a o face valabilă pentru un an. În aceeași comandă, vom adăuga o cheie RSA privată de 2048 biți., Prin stabilirea atât -keyout și -out steaguri la aceeași valoare, cheia privată și certificatul va fi situat în același fișier:

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

vi se va solicita să furnizați informații despre adresă pentru certificat., Substitut propriile informații pentru valorile evidențiate mai jos:

Pentru mai multe informații detaliate despre certificatul steaguri, vezi OpenSSL Esențiale: de Lucru cu SSL Certificate, Chei Private și a recomandărilor specifice fiecărei țări

după ce ați creat certificatelor, deschideți vsftpd fișier de configurare din nou:

  • sudo nano /etc/vsftpd.conf

Spre partea de jos a fișierului, veți vedea două linii care încep cu rsa_. Comentați-le astfel încât să arate astfel:

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

mai Jos le, adăugați următoarele linii care indică certificatul și cheia privată ne-am creat:

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

după aceea, vom forța utilizarea SSL, ceea ce va împiedica conectarea clienților care nu se pot ocupa de TLS. Acest lucru este necesar pentru a vă asigura că tot traficul este criptat, dar poate forța utilizatorul FTP să schimbe clienții. Schimba ssl_enable și YES:

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

După aceea, adăugați următoarele linii pentru a nega în mod explicit conexiuni anonime peste SSL și să solicite SSL atât pentru transferul de date și datele de conectare:

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

după aceasta, configurați serverul să utilizeze TLS, succesorul preferat al SSL, adăugând următoarele linii:

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

În cele din urmă, vom adăuga încă două opțiuni. În primul rând, nu vom necesita reutilizarea SSL, deoarece poate rupe mulți clienți FTP., Vom avea nevoie de suite de cifruri de criptare „înalte”, ceea ce înseamnă în prezent lungimi de cheie egale sau mai mari de 128 biți:

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

fișierul finit secțiune ar trebui să arate astfel:

/etc/vsftpd.conf

când ați terminat, salvați și închideți fișierul.

reporniți serverul pentru ca modificările să aibă efect:

  • sudo systemctl restart vsftpd

În acest moment, nu vom mai putea să ne conectăm cu un client de linie de comandă nesigur., Dacă am încerca, am vedea ceva de genul:

în continuare, să verificăm dacă ne putem conecta folosind un client care acceptă TLS.

Pasul 7-testarea TLS cu FileZilla

majoritatea clienților FTP moderni pot fi configurați pentru a utiliza criptarea TLS. Vom demonstra cum să vă conectați cu FileZilla datorită suportului său cross-platform. Consultați documentația pentru alți clienți.

când deschideți prima dată FileZilla, găsiți pictograma Manager Site chiar deasupra cuvântului gazdă, pictograma cea mai stângă din rândul de sus. Faceți clic pe acesta:

se va deschide o fereastră nouă., Faceți clic pe butonul Site Nou din colțul din dreapta jos:


Sub Site-urile mele va apărea o nouă pictogramă cu cuvintele site nou. Puteți să-l denumiți acum sau să reveniți mai târziu și să utilizați butonul Redenumire.

completați câmpul gazdă cu numele sau adresa IP. În meniul derulant criptare, selectați solicitare FTP explicit peste TLS.

pentru tipul de conectare, selectați solicitare parolă. Completați utilizatorul FTP în câmpul Utilizator:

Faceți clic pe Conectare în partea de jos a interfeței., Vi se va cere parola utilizatorului:

Faceți clic pe OK pentru a vă conecta. Acum ar trebui să fiți conectat cu serverul dvs. cu criptare TLS/SSL.,ficate care arata ca acest lucru:

atunci Când am acceptat, certificat, faceți dublu clic pe files folder și glisați upload.txt la stânga pentru a confirma că ești capabil de a descărca fișiere:

Când ați terminat, faceți clic dreapta pe copia locală, redenumiți-l la upload-tls.txt și trageți-l înapoi la server pentru a confirma că puteți încărca fișiere:

– Ai confirmat acum că puteți în condiții de siguranță și cu succes a transfera fișiere cu SSL/TLS-ului.,

Pasul 8-dezactivarea accesului Shell (opțional)

dacă nu puteți utiliza TLS din cauza cerințelor clientului, puteți obține o anumită securitate dezactivând capacitatea utilizatorului FTP de a vă conecta în orice alt mod. Un mod relativ simplu de a preveni este prin crearea unui shell personalizat. Aceasta nu va oferi nicio criptare, dar va limita accesul unui cont compromis la fișierele accesibile prin FTP.,

în Primul rând, deschideți un fișier numit ftponly în bin director:

  • sudo nano /bin/ftponly

Adauga un mesaj care spune utilizatorului ce sunt în măsură să vă conectați:

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

Salvați fișierul și ieși din editor.,Schimba permisiunile pentru a face fișierul executabil:

  • sudo chmod a+x /bin/ftponly

Deschideți lista de valabil scoici:

  • sudo nano /etc/shells

În partea de jos adaugă:

/etc/shells
. . ./bin/ftponly

Actualizare utilizator shell cu următoarea comandă:

  • sudo usermod sammy -s /bin/ftponly

Acum, încercați să vă conectați la server-ul dvs. ca sammy:

ar trebui să vedeți ceva de genul:

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

Acest lucru confirmă faptul că utilizatorul nu mai poate ssh la server și este limitată pentru a accesa FTP-ul numai.,

concluzie

în acest tutorial am acoperit configurarea FTP pentru utilizatorii cu un cont local. Dacă trebuie să utilizați o sursă externă de autentificare, poate doriți să consultați suportul vsftpdpentru utilizatorii virtuali. Aceasta oferă un set bogat de opțiuni prin utilizarea PAM, modulele de autentificare conectabile și este o alegere bună dacă gestionați utilizatorii într-un alt sistem, cum ar fi LDAP sau Kerberos.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *