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, vă vom arăta cum să configurați 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.

Premise

Pentru a urmări, împreună cu acest tutorial, veți avea nevoie de:

  • Un Ubuntu 16.04 server cu un utilizator non-root cu sudo privilegii: puteți afla mai multe despre cum să înființeze un utilizator cu aceste privilegii în primul Configurare Server cu Ubuntu 16.04 ghid.odată ce aveți un server Ubuntu instalat, sunteți gata să începeți.,

    Pasul 1 — Instalarea vsftpd

    Vom începe prin a actualiza lista de pachete și instalarea vsftpd daemon:

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

    atunci Când instalarea este completă, vom copia 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

    vom verifica starea firewall-ului pentru a vedea dacă este activat., Dacă da, ne vom asigura că traficul FTP este permis, astfel încât să nu intrați în regulile firewall-ului care vă blochează atunci când vine vorba de testare.

    • 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 ssh traficul este permis în acest caz, va trebui să adăugăm reguli pentru traficul FTP.,

    Am nevoie pentru a deschide porturile 20 si 21 pentru FTP, port 990 pentru mai târziu, 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

    Acum regulile firewall-ului arata ca:

    Cu vsftpd instalat și necesar porturi deschise, suntem gata pentru a trece la pasul următor.

    Pasul 3-Pregătirea directorului de utilizator

    pentru acest tutorial, vom crea un utilizator, 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, vom adăuga un utilizator de test:

    • sudo adduser sammy

    atribuiți o parolă atunci când vi se solicită și nu ezitați 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 ar putea avea nevoie să scrie în folderul lor de acasă dacă au acces și la shell.,

    În acest exemplu, mai degrabă decât eliminarea scrie privilegii din directorul home, ne va crea un ftp director pentru a servi ca chroot și o scriere files director pentru a organiza fișierele reale.,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 ..

Apoi, vom crea directorul unde fișierele pot fi încărcate ș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 files director ar trebui să se întoarcă următoarele:

  • sudo ls -la /home/sammy/ftp

în cele din Urmă, vom adăuga un test.txt fișier pentru a utiliza atunci când am testat mai târziu:

  • 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, ne vom îndrepta atenția spre configurare.,

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

în continuare va trebui să schimbăm unele valori din fișier. Pentru a permite utilizatorului să încarce fișiere, vom decomenta setarea write_enable astfel încât să avem:

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

de asemenea, vom decomenta chroot pentru a împiedica utilizatorul conectat la FTP să acceseze orice fișiere sau comenzi din afara arborelui de directoare.

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

Vom adăuga 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 viitor utilizatorii care ar putea fi adăugate.

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

Vom limita 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ă: Am pre-deschis porturile pe care le-am setat aici pentru intervalul de port pasiv. Dacă modificați valorile, asigurați-vă că actualizați setările firewall-ului.deoarece planificăm să permitem accesul FTP de la caz la caz, vom configura configurația astfel încât accesul să fie dat unui utilizator doar atunci când acesta este adăugat Explicit într-o listă și nu implicit:

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

userlist_deny comută logica. Când este setat la „da”, utilizatorilor din listă li se refuză accesul FTP. Când este setat la „nu”, numai utilizatorii din listă au acces. Când ați terminat de făcut modificarea, salvați și ieșiți din fișier.în cele din urmă, vom crea și adăuga utilizatorul nostru la fișier., Vom folosi -a pavilion pentru a adăuga la dosar:

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

Dublu-a verifica care 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

Acum suntem gata pentru testare.

Pasul 5-testarea accesului FTP

am configurat serverul pentru a permite doar utilizatorului sammy să se conecteze prin FTP. Să ne asigurăm că este cazul.utilizatorii anonimi nu ar trebui să se conecteze: am dezactivat accesul anonim., Aici vom testa asta încercând să ne conectăm anonim. Dacă am făcut-o în mod corespunzător, utilizatorii anonimi ar trebui să fie refuzat permisiunea:

  • 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, vom încerca conectarea noastră sudo utilizator. De asemenea, ar trebui să li se refuze accesul și ar trebui să se întâmple înainte de a li se permite să introducă parola.,și scrie fișiere: Aici, ne vom asigura că ne desemnat de utilizator canconnect:

  • ftp -p 203.0.113.0

Vom schimba în files director, apoi utilizați get comandă pentru a transfera fișierul de testare am creat mai devreme pentru a noastră mașină locală:

  • cd files
  • get test.txt

Ne vom întoarce înapoi în jurul valorii de și să încerce 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, vom lua 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 TTL/SSL să furnizeze acea criptare. Primul pas este crearea certificatelor SSL pentru utilizarea cu vsftpd.

Vom folosi 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., Apoi, prin stabilirea atât -keyout și -out steaguri la aceeași valoare, cheia privată și certificatul va fi situat în același fișier.vom face acest lucru cu următoarea comandă:

  • 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 certificatul dvs., Substitut propriile informații pentru întrebările de 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, ar trebui să-două linii care încep cu rsa_. Comentați-le astfel încât să pară:

/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 indica 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ă asta, vom configura serverul pentru a utiliza TLS, preferat succesorul SSL prin adaugarea urmatoarei 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

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

acum, trebuie să repornim 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, vom verifica 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 folosind 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 sub fișierul word, 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.

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

pentru „Logon Type”, selectați”Ask for password”. Completați utilizatorul FTP pe care l-ați creat în câmpul „Utilizator”:


Faceți clic pe „Conectați” î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.


când ați acceptat certificatul, faceți dublu clic pe folderul files și trageți încărcarea.txt la stânga pentru a confirma că sunteți capabil de a descărca fișiere.

când ați făcut asta, faceți clic dreapta pe copia locală, redenumiți-o în upload-tls.txt ‘ și trageți – l înapoi la server pentru a confirma că puteți încărca fișiere.,


acum ați confirmat că puteți transfera în siguranță și cu succes fișiere cu SSL / TLS activat.

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 directorul bin:

  • sudo nano /bin/ftponly

Vom adăuga un mesaj care spune utilizatorului ce sunt în măsură să vă conectați.,/p>

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

Modifica 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, adauga:

/etc/shells
. . ./bin/ftponly

Actualizare utilizator shell cu următoarea comandă:

  • sudo usermod sammy -s /bin/ftponly

Acum, încercați să vă conectați 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, ați putea dori să se uite în sprijinul vsftpd de utilizatori 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.

Articles

Lasă un răspuns

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