Cum am instalat vsftpd, savepearlharbor

În legătură cu evenimentele recente ale serviciului de e-mail popular, care a stocat fișierele personale ale utilizatorilor în acces liber, am decis să configurez serverul FTP pentru nevoile mele, astfel încât prietenii să poată transfera direct fișierele și să le descarce. Nu, nu am folosit serviciul respectiv și de mult timp am refuzat să am încredere în ceva inutil pentru terțe părți, cu toate acestea, dacă nu personalul meu FTP, atunci ce? Desigur, OpenSSH, dar vă va explica fiecare persoană familiară ce aveți nevoie pentru a descărca / instala pentru aceasta, sau pur și simplu da un link la FTP dvs.? De asemenea, consola ftp client este în afara casetei chiar și în Windows (dacă înțelegeți ce vreau să spun).

Totul se întâmplă la localhost (adică la computerul de acasă), astfel încât o IP externă este o condiție prealabilă. Și Linux. Desigur Linux, unde fără ea ...

I. De ce și de ce?

Pentru câteva minute în gândurile mele care rulează prin arhitectura serverului, structura directoarelor, cum vreau să stochez fișierele și ce funcții ar trebui să fie executate de server ... Sarcina a fost următoarea.

Nu am nimic împotriva utilizatorilor anonimi, - lasă-mă, voi răspândi în public orice gunoaie. Pentru a nu se simți inconfortabil, pentru anonim vor exista restricții stricte, cum ar fi viteza de 16Kb / secundă.
anonim va putea să încarce fișierele pe server într-un director separat.
Nu voi încălca structura FHS, deci sunt anonime în directorul / srv / ftp. și în ea, urmând deja tradițiile, creez două directoare pentru încărcarea și încărcarea fișierelor.

mkdir / srv / ftp /
directorul chown: ftp / srv / ftp /
chmod g + w / srv / ftp / intrare

Deja pentru mine, vreau să am un utilizator pe server cu parola mea de conectare: parola. și în mod ideal - pentru a crea cât mai mulți utilizatori diferiți posibil și ei vor lucra cu directorul rădăcină din hamsterul meu

/ Downloads (care este de asemenea folosit de alte programe).
Cred că ai ghicit-o. că acești utilizatori de pe server sunt cei mai familiarizați cărora vreau să le ofer acces liber la partajarea de fișiere.
În el pot descărca gratuit, descarcă fișiere cu viteză nelimitată. Și nu mai am nevoie de nimic altceva pentru a crasa cu drepturile și inventarea de noi directoare. Toate descărcările - browser, torrent, ftp - totul se află într-un singur loc. Convenabil.

Pentru a face ceva de genul găzduire, astfel încât fiecare utilizator al serverului să aibă propriul director (și, de exemplu, un site partajat), nu am avut o problemă, dar eu voi lua în considerare și acest caz.

Toate? Nu mai sunt dorințe exotice? Atunci să începem.

Mai întâi de toate, ne întoarcem pe serverul FTP. Alegerea mea a căzut pe vsftpd - un server mic, sigur, rapid, sigur (aș spune chiar paranoic), iar alegerea însăși este evidentă:

vsftpd este serverul FTP implicit în distribuțiile Ubuntu, CentOS, Fedora, NimbleX, Slackware și RHEL Linux.

II. instalare

Nu voi mai spune despre instalare încă o dată, în fiecare distribuție managerul meu de pachete și despre cele trei comenzi râvnite ./configure # 038; # 038; face # 038; # 038; su -c "make install" ai fost deja auzit ... vsftpd ai instalat.

Pentru mulți utilizatori, poate fi obișnuit să executați programul, să apăsați butoanele și să aranjați casetele de selectare pentru a gestiona utilizatorii și permisiunile pentru directoare / fișiere.
În cazul vsftpd, există doar setările de bază ale serverului, iar drepturile la fișiere sunt drepturi reale care sunt setate prin chmod. Prin urmare, de exemplu, pentru a permite utilizatorilor să încarce fișiere pe server, trebuie doar să permiteți scrierea în director folosind unelte standard. În vsftpd, includeți numai funcția pe care fișierele pot fi încărcate pe server și directorul pe care utilizatorul îl poate încărca - acesta este setat de chmod / chown standard. Deci, pentru claritate.

III. Setare de bază

Porniți serverul într-un mod independent de daemon, fără inetd și logare (implicit /var/log/vsftpd.log)

Avem 20 de porturi pentru schimbul de date direct prin comanda PORT și limităm numărul de conexiuni simultane.

Ne ascundem utilizatorii în sistem, astfel încât atunci când listarea directoare, numele / grupul de toate obiectele vor fi pur și simplu numite ftp. și nu au id-ul proprietarului real al acestui obiect și includ abilitatea de a încărca fișiere pe server - pentru asta și noi îl personalizăm.

Blocăm utilizatorul în hamsterul său. Fără această setare, puteți merge în orice director de pe sistem și citiți orice fișier (bine, totul depinde de drepturi).

Totul, sistemul nostru cu astfel de setări este sigur.

IV. Lista de membri

Și acum ne vom configura utilizatorii virtuali pe server.
Specificați directorul în care va fi configurația personală a fiecărui utilizator.

Nume de utilizator
parolă
spoofing
blahblahblah
rădăcină
Toor

în cazul în care datele de conectare ale utilizatorilor sunt scrise cu linii, atunci parola este urmată.

Rulați comanda pentru a converti fișierul în baza de date Berkeley

db_load -T -t hash -f

/logins.txt /etc/vsftpd_login.db
chmod 600 /etc/vsftpd_login.db

Cu toate acestea, în funcție de versiunea programului, puteți avea db3_load, db4_load.

Mentionam de PAM, care fișierul pe care doriți să îl utilizați cu serverul de baze de date - /etc/pam.d/ftp a crea un fișier și scrie-l

auth necesar /lib/security/pam_userdb.so db = / etc / vsftpd_login
cont necesar /lib/security/pam_userdb.so db = / etc / vsftpd_login

În funcție de utilizatorii pe care îi specificați în

/logins.txt (și apoi procesul de conversie a bazei de date trebuie repetat) - vă puteți conecta la ftp sub acești utilizatori.
Și pentru fiecare utilizator individual puteți specifica setările personale, - în cele din urmă a crea un director mkdir / etc / vsftpd_user_conf. unde aceste setări vor fi stocate.

Creați fișierul / etc / vsftpd_user_conf / spoofing (cu datele de conectare de utilizator virtual pe server) și suprascrie setările implicite care au fost enumerate anterior (sau care nu sunt menționate deloc) în /etc/vsftpd.conf.
Linia de jos este că aceste setări funcționează acum doar pentru acest utilizator.

Vsftpd ciudățenie, care nu a vrut să scrie în directorul specificat de utilizator rădăcină și acest lucru a dat o eroare de 500 OOPS: vsftpd: refuzul de a rula cu rădăcină inscriptibil în interiorul chroot (). Aceasta este, de exemplu, implicit, atunci când vă conectați la server, ajungeți la / home / spoofing / Downloads. Setați-o la chmod ga + w / home / spoofing / Descărcări și această eroare va apărea. Care este motivul pentru o astfel de paranoia că "nu poți scrie o rădăcină" - nu știu, ci continuați. Totuși, permitem înregistrarea și scăpăm de eroare.

Noi redefinim utilizatorul, ale cărui drepturi vor fi create de fișiere noi (încărcate pe server). Mai devreme în config am avut un utilizator ftp. ci pentru noi în noi

/ Descărcări nu au nevoie de fișiere "străine"? De asemenea, sesiunea de pe server va fi creată sub utilizatorul nostru, ceea ce înseamnă că nu vor apărea probleme cu accesul la / home / spoofing-ul nostru. pentru a merge la

În cele din urmă, indicăm

/ Downloads, care pentru acest utilizator va fi directorul rădăcină de pe server. Și eliminați limita de descărcare.

Acum, când vă conectați sub spoofing pe server, intrați în directorul / home / spoofing / Downloads. puteți încărca fișiere și le puteți descărca.
Sesiunea are loc sub spoofing-ul dvs. de utilizator real. de aceea puteți intra în dvs.

. iar fișierele descărcate sunt create sub utilizatorul dvs. Asta este.

Acum, noi creăm și alți utilizatori pe server, dar toți aceștia pot lucra cu o singură comună

/ Descărcări.
Pentru asta le descriem

/logins.txt. Recreați baza de date Berkeley, copiați conținutul / etc / vsftpd_user_conf / spoofing în / etc / vsftpd_user_conf /. Asta e tot.

VI. anonim

Înainte de a începe, am creat deja directoarele necesare / srv / ftp / și setați permisiunile de scriere în / srv / ftp / incoming.

Lăsați-l să se înregistreze anonim.

Să încărcăm fișierele, să creăm directoare, dar nu putem redenumi și șterge deja fișiere create.

Limitați debitul de 16384 de octeți. și indicați cu ce drepturi să creați fișiere noi.

Totul, acum anonim obtinerea in casa ta / srv / ftp va vedea intrarea pentru a descarca fisiere si pub ...
Sesiunea de pe server se efectuează sub userul ftp. - cea specificată în /etc/vsftpd.conf, noi fișiere descărcate vor fi create sub el.

VII. hosting

De exemplu, site-urile sunt în /srv/http/example.com, /srv/http/example.net, /srv/http/example.org prin FTP și doriți să aibă acces deplin la dosarele fiecărui site separat.

Creați utilizatori pe server cu numele example.com, example.net, example.org și /etc/vsftpd.conf, setați directorul rădăcină cu site-urile

Conectați-vă sub numele de domenii - ajungeți la rădăcina fiecărui site. E simplu.

O altă opțiune este dacă creați fiecare utilizator în mod individual în / etc / vsftpd_user_conf, fiecare dintre acestea va stabili setări personale pentru accesarea fișierelor site-ului.

VIII. siguranță

Este cu siguranță că fișierele nu sunt stocate în public pe un serviciu de partajare de fișiere, ci sunt transferate direct de la utilizator către utilizator printr-o conexiune directă prin FTP. Cu toate acestea, ar fi bine să faceți trafic și să criptați, astfel încât nimeni să nu știe care fișiere treceți.

Să configurați SSL / TLS și înainte de a fi inclus în /etc/vsftpd.conf.

Alegeți ce protocol doriți.

req OpenSSL -x509 -nodes -days 365 -newkey rsa: 1024 -keyout /etc/ssl/certs/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem

Specificăm calea către el.

Și, consider că este obligatoriu ca toți utilizatorii locali să se conecteze la serverul dvs. printr-o conexiune criptată. Dintr-o dată, fata vrea să-ți arunce fotografiile genului Nu?
Prin urmare, includem obligatorii SSL / TLS pentru utilizatorii locali, dar anonim probabil că nu trebuie să petreacă doar timpul procesorului.

IX. verificați

anonim, mulți utilizatori locali care lucrează imediat cu dvs.

/ Descărcări, conexiune obligatorie prin SSL / TLS.
Elegant, sigur, convenabil și - totul funcționează. Aprox.

Încărcăm fișierul cu curl pe ftp: // localhost / incoming

/Desktop/userpic.jpg FTP: // localhost / incoming /
* Despre conectare () la portul localhost 21 (# 0)
* Încercarea. 1 ...
% Total% primite% Xferd Media vitezei Timpul Timp Curent
Dload Upload Total Viteză stânga petrecută
0 0 0 0 0 0 0 0 -: -: - -: -: - -: -: - 0 * Conexiunea a fost refuzată
* Încercarea 127.0.0.1 ...
* conectat
* Conectat la localhost (127.0.0.1) port 21 (# 0)
<220 Welcome to Voglea FTPd
> USER anonim
<331 Please specify the password.
> PASS [email protected]
<230 Login successful.
> PWD
<257 "/"
* Calea de intrare este '/'
> Intrare CWD
<250 Directory successfully changed.
> EPSV
* Conectați fluxul de date în mod pasiv
<229 Entering Extended Passive Mode (|||8210|).
* Încercarea 127.0.0.1 ...
* conectat
* Conectarea la portul 127.0.0.1 (127.0.0.1) 8210
> TIPUL I
<200 Switching to Binary mode.
> STOR userpic.jpg
<150 Ok to send data.
> [datele nu sunt afișate]
* Suntem complet încărcați și bine
* Amintirea este in dir «intrare /»
100 77050 0 0 100 77050 0 25418 0 00:03 0:00:03 - - - - - 25437<226 Transfer complete.
100 77050 0 0 100 77050 0 20654 0 00:03 0:00:03 - - - - - - 20656
* Conexiunea # 0 pentru a gazdui localhost rămase intact
> QUIT
<221 Goodbye.
* Închiderea conexiunii # 0

Verificați fișierul în / srv / ftp / incoming

]
└─╼ ls -la / srv / ftp / intrare /
total 88K
drwxrwxr-x 2 rădăcină ftp 4.0K Jan 17 20:31 ./
dr-xr-xr-x 4 rădăcină ftp 4.0K Jan 17 15:26. /
-rw-r-r-1 ftp ftp 76K Jan 17 20:31 userpic.jpg

Verificarea conexiunii la server

]
└─╼ ftp localhost
ftp: conectați la adresă. 1: Conexiunea a fost refuzată
FTP: Încercarea 127.0.0.1 ...
Conectat la localhost.localdomain.
220 Bine ați venit la Voglea FTPd
Nume (localhost.localdomain: spoofing): anonim
331 Vă rugăm să specificați parola.
Parola:
230 Conectați-vă cu succes.
Tipul de sistem de la distanță este UNIX.
Utilizarea modului binar pentru a transfera fișiere.
ftp> ls -la
Comanda PORT 200 a reușit. Luați în considerare utilizarea PASV.
150 Aici este listarea directoarelor.
dr-xr-xr-x 4 ftp ftp 4096 Jan 17 07:26.
dr-xr-xr-x 4 ftp ftp 4096 Ianuarie 17 07: 26 ...
drwxrwxr-x 2 ftp ftp 4096 17.01 12:31 intrare
drwxr-xr-x 2 ftp ftp 4096 16 ianuarie 15:08 pub
Directorul trimite mesajul OK.
ftp> cd de intrare
250 Directorul a fost schimbat cu succes.
ftp> ls -la
Comanda PORT 200 a reușit. Luați în considerare utilizarea PASV.
150 Aici este listarea directoarelor.
drwxrwxr-x 2 ftp ftp 4096 Ian 17 12:31.
dr-xr-xr-x 4 ftp ftp 4096 Ianuarie 17 07: 26 ...
-rw-r-r-1 ftp ftp 77050 Jan 17 12:31 userpic.jpg
Directorul trimite mesajul OK.
FTP> ieșiți
221 La revedere.

Ftp nu funcționează cu SSL / TLS

]
└─╼ ftp localhost
ftp: conectați la adresă. 1: Conexiunea a fost refuzată
FTP: Încercarea 127.0.0.1 ...
Conectat la localhost.localdomain.
220 Bine ați venit la Voglea FTPd
Nume (localhost.localdomain: spoofing): spoofing
530 Sesiunile non-anonime trebuie să utilizeze criptarea.
ftp: Conectarea a eșuat.
421 Serviciul nu este disponibil, serverul de la distanță are conexiune închisă
FTP> ieșiți

Încercăm prin curl-ftp-ssl să încărcăm un fișier

Verificați fișierul în / home / spoofing / Descărcări

/ Descărcări]
└─╼ pwd
/ home / spoofing / Descărcări
┌ ─ [myhost

/ Descărcări]
└─╼ ls -la
total 84K
drwxr-xr-x 2 utilizatori de spoofing 4.0K Jan 17 20:51 ./
drwx - 17 utilizatori de spoofing 4.0K Jan 17 19:20. /
-rw-r-r-1 utilizatori de spoofing 76K Jan 17 20:51 userpic.jpg

Se pare că totul funcționează.
Fișierele încărcate de utilizatori - accesați-mi direct

/ Downloads, proprietarul căruia am instalat, și nu ftp, și imediat cu drepturile necesare.

X. Sfârșitul T3h

# chmod g + w / srv / ftp / intrare