FTP (Protocol de transfer de fișiere) este un instrument tradițional și utilizat pe scară largă pentru transferul de fișiere între un server și clienți pe o rețea, mai ales în cazul în care nu este necesară autentificarea (permite utilizatorilor anonimi să se conecteze la un server). Trebuie să înțelegem că FTP nu este sigur în mod implicit, deoarece transmite acreditări și date de utilizator fără criptare.
În acest ghid, vom descrie pașii pentru instalarea, configurarea și securizarea unui server FTP (VSFTPD înseamnă „Daemon FTP foarte sigur„) În CentOS/RHEL 7 și Fedora distribuții.
Rețineți că toate comenzile din acest ghid vor fi rulate ca rădăcină, în cazul în care nu utilizați serverul cu rădăcină cont, utilizați comanda sudo pentru a obține privilegii de root.
1. Se instalează vsftpd serverul este direct înainte, rulați următoarea comandă în terminal.
# yum instala vsftpd.
2. După finalizarea instalării, serviciul va fi dezactivat la început, așa că trebuie să-l pornim manual pentru moment și să-l activăm pentru a porni automat și de la următorul boot de sistem:
# systemctl începe vsftpd. # systemctl activa vsftpd.
3. Apoi, pentru a permite accesul la servicii FTP din sisteme externe, trebuie să deschidem portul 21, unde demonii FTP ascultă după cum urmează:
# firewall-cmd --zone = public --permanent --add-port = 21 / tcp. # firewall-cmd --zone = public --permanent --add-service = ftp. # firewall-cmd --reload.
4. Acum ne vom deplasa pentru a efectua câteva configurații pentru a configura și securiza serverul nostru FTP, să începem făcând o copie de siguranță a fișierului de configurare original /etc/vsftpd/vsftpd.conf:
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig.
Apoi, deschideți fișierul de configurare de mai sus și setați următoarele opțiuni cu aceste valori corespunzătoare:
anonymous_enable = NU # dezactivează datele de conectare anonime. local_enable = YES # permit conectări locale. write_enable = YES # activate comenzi FTP care schimbă sistemul de fișiere. local_umask = 022 # valoare umask pentru crearea de fișiere pentru utilizatorii locali. dirmessage_enable = YES # permite afișarea mesajelor atunci când utilizatorii introduc pentru prima dată un nou director. xferlog_enable = YES # un fișier jurnal va fi menținut cu detalii despre încărcări și descărcări. connect_from_port_20 = YES # utilizați portul 20 (ftp-data) pe computerul server pentru conexiuni în stil PORT. xferlog_std_format = DA # păstrează formatul de fișier jurnal standard. ascultă = NU # împiedică vsftpd să ruleze în modul independent. listen_ipv6 = DA # vsftpd va asculta pe un socket IPv6 în loc de unul IPv4. pam_service_name = vsftpd # nume al serviciului PAM vsftpd va folosi. userlist_enable = YES # enable vsftpd pentru a încărca o listă de nume de utilizatori. tcp_wrappers = YES # activez tcp wrappers.
5. Acum configurați FTP pentru a permite / refuza accesul FTP utilizatorilor pe baza fișierului cu lista de utilizatori /etc/vsftpd.userlist
.
În mod implicit, utilizatorii enumerați în userlist_file = / etc / vsftpd.userlist
li se refuză accesul de conectare cu userlist_deny opțiune setată la DA, dacă userlist_enable = DA.
In orice caz, userlist_deny = NU modifică setarea, ceea ce înseamnă că numai utilizatorii enumerați explicit în userlist_file = / etc / vsftpd.userlist va fi permis să se conecteze.
userlist_enable = DA # vsftpd va încărca o listă de nume de utilizator, din numele fișierului dat de userlist_file. userlist_file = / etc / vsftpd.userlist # stochează nume de utilizator. userlist_deny = NU
Asta nu este tot, atunci când utilizatorii se conectează la serverul FTP, aceștia sunt plasați într-o închisoare chroot, acesta este directorul rădăcină local care va acționa ca directorul lor de acasă numai pentru sesiunea FTP.
În continuare, vom analiza două scenarii posibile ale modului de chrootare a utilizatorilor FTP în directorul Acasă (rădăcină locală) pentru utilizatorii FTP, după cum se explică mai jos.
6. Acum adăugați aceste două opțiuni următoare pentru a restricționa utilizatorii FTP la directoarele lor principale.
chroot_local_user = DA. allow_writeable_chroot = DA.
chroot_local_user = DA înseamnă că utilizatorii locali vor fi plasați într-o închisoare chroot, directorul lor de domiciliu după autentificare prin setări implicite.
Și, în mod implicit, vsftpd nu permite ca directorul chroot jail să poată fi scris din motive de securitate, cu toate acestea, putem folosi opțiunea allow_writeable_chroot = DA pentru a suprascrie această setare.
Salvați fișierul și închideți-l.
7. Acum, să setăm SELinux boolean de mai jos pentru a permite FTP să citească fișiere în directorul de start al unui utilizator. Rețineți că acest lucru s-a făcut inițial folosind comanda:
# setsebool -P ftp_home_dir on.
Însă ftp_home_dir
directiva a fost dezactivată în mod implicit, așa cum se explică în acest raport de erori: https://bugzilla.redhat.com/show_bug.cgi? id = 1097775.
Acum vom folosi semanage comanda pentru a seta regula SELinux pentru a permite FTP să citească / scrie directorul principal al utilizatorului.
# semanage boolean -m ftpd_full_access --on.
În acest moment, trebuie să repornim vsftpd pentru a efectua toate modificările făcute până acum:
# systemctl reporniți vsftpd.
8. Acum vom testa serverul FTP creând un utilizator FTP cu comanda useradd.
# useradd -m -c „Ravi Saive, CEO” -s / bin / bash ravi. # passwd ravi.
Ulterior, trebuie să adăugăm utilizatorul ravi la dosar /etc/vsftpd.userlist folosind comanda ecou după cum urmează:
# echo "ravi" | tee -a /etc/vsftpd.userlist. # cat /etc/vsftpd.userlist.
9. Acum este timpul să testăm dacă setările noastre de mai sus funcționează corect. Să începem testând datele de conectare anonime, putem vedea din captura de ecran de mai jos că datele de conectare anonime nu sunt permise:
# ftp 192.168.56.10 Conectat la 192.168.56.10 (192.168.56.10). 220 Bun venit la serviciul FTP TecMint.com. Nume (192.168.56.10:root): anonim. 530 Permis refuzat. Autentificare eșuată. ftp>
10. Să testăm, de asemenea, dacă un utilizator care nu este listat în fișier /etc/vsftpd.userlist i se va acorda permisiunea de conectare, ceea ce nu este cazul ca în captura de ecran de mai jos:
# ftp 192.168.56.10 Conectat la 192.168.56.10 (192.168.56.10). 220 Bun venit la serviciul FTP TecMint.com. Nume (192.168.56.10:root): aaronkilik. 530 Permis refuzat. Autentificare eșuată. ftp>
11. Acum faceți o verificare finală dacă un utilizator listat în fișier /etc/vsftpd.userlist, este de fapt plasat în directorul său de acasă după autentificare:
# ftp 192.168.56.10 Conectat la 192.168.56.10 (192.168.56.10). 220 Bun venit la serviciul FTP TecMint.com. Nume (192.168.56.10:root): ravi. 331 Vă rugăm să specificați parola. Parola: 230 Conectare reușită. Tipul de sistem de la distanță este UNIX. Utilizarea modului binar pentru a transfera fișiere. ftp> eu sunt
allow_writeable_chroot = DA
are anumite implicații de securitate, mai ales dacă utilizatorii au permisiunea de încărcare sau acces la shell.Activați această opțiune numai dacă știți exact ce faceți. Este important să rețineți că aceste implicații de securitate nu sunt specifice vsftpd, ele se aplică tuturor demonilor FTP care oferă și posibilitatea de a pune utilizatorii locali în închisori chroot.
Prin urmare, vom urmări o modalitate mai sigură de a seta un director rădăcină local non-scriibil diferit în secțiunea următoare.
12. Deschideți din nou fișierul de configurare vsftpd și începeți comentând opțiunea nesigură de mai jos:
# allow_writeable_chroot = DA.
Apoi creați directorul rădăcină locală alternativă pentru utilizator (ravi
, a dvs. este probabil diferită) și eliminați permisiunile de scriere pentru toți utilizatorii din acest director:
# mkdir / home / ravi / ftp. # chown anyone: anyone / home / ravi / ftp. # chmod a-w / home / ravi / ftp.
13. Apoi, creați un director sub rădăcina locală în care utilizatorul își va stoca fișierele:
# mkdir / home / ravi / ftp / files. # chown ravi: ravi / home / ravi / ftp / files. # chmod 0700 / home / ravi / ftp / files /
Apoi adăugați / modificați următoarele opțiuni în fișierul de configurare vsftpd cu aceste valori:
user_sub_token = $ USER # inserează numele de utilizator în directorul rădăcină local local_root = / home / $ USER / ftp # definește directorul rădăcină local al utilizatorilor.
Salvați fișierul și închideți-l. Din nou, să repornim serviciul cu noile setări:
# systemctl reporniți vsftpd.
14. Acum faceți din nou un test final și vedeți că directorul rădăcină locală a utilizatorilor este directorul FTP pe care l-am creat în directorul său de acasă.
# ftp 192.168.56.10 Conectat la 192.168.56.10 (192.168.56.10). 220 Bun venit la serviciul FTP TecMint.com. Nume (192.168.56.10:root): ravi. 331 Vă rugăm să specificați parola. Parola: 230 Conectare reușită. Tipul de sistem de la distanță este UNIX. Utilizarea modului binar pentru a transfera fișiere. ftp> eu sunt
Asta e! În acest articol, am descris cum se instalează, se configurează și se securizează un server FTP în CentOS 7, se utilizează secțiunea de comentarii de mai jos pentru a ne scrie în legătură cu acest ghid / pentru a ne împărtăși orice informații utile despre acest lucru subiect.
Citire sugerată:Instalați serverul ProFTPD pe RHEL / CentOS 7
În articolul următor, vă vom arăta și cum să faceți acest lucru securizați un server FTP utilizând SSL / TLS conexiunile din CentOS 7, până atunci, rămân conectate la TecMint.