FTP (Protocol de transfer de fișiere) este un protocol de rețea standard relativ vechi și cel mai utilizat utilizat pentru încărcarea / descărcarea fișierelor între două computere printr-o rețea. In orice caz, FTP prin nesiguranța sa originală, deoarece transmite date împreună cu acreditări de utilizator (nume de utilizator și parolă) fără criptare.
Avertizare: Dacă intenționați să utilizați FTP, luați în considerare configurarea conexiunii FTP cu SSL / TLS (se va acoperi în articolul următor). În caz contrar, este întotdeauna mai bine să utilizați FTP securizat, cum ar fi SFTP.
Citire sugerată:Cum se instalează și se securizează serverul FTP în CentOS 7
În acest tutorial, vom arăta cum se instalează, se configurează și se securizează un FTP Server (VSFTPD în întregime "Daemon FTP foarte sigur„) În Ubuntu pentru a avea o securitate puternică împotriva vulnerabilităților FTP.
1. Mai întâi, trebuie să actualizăm lista de surse de pachete de sistem și apoi să o instalăm VSFTPD pachet binar după cum urmează:
$ sudo apt-get update. $ sudo apt-get install vsftpd.
2. După finalizarea instalării, serviciul va fi dezactivat inițial, prin urmare, trebuie să-l pornim manual pentru timpul mediu și, de asemenea, să-l activăm pentru a porni automat de la următoarea pornire a sistemului:
Pe SystemD # systemctl începe vsftpd. # systemctl activa vsftpd Pe SysVInit # service vsftpd start. # chkconfig --level 35 vsftpd on.
3. Apoi, dacă ai Paravan de protecție UFW activat (nu este activat implicit) pe server, trebuie să deschideți porturile 21 și 20 unde demonii FTP ascultă, pentru a permite accesul la serviciile FTP de la mașini la distanță, apoi adăugați noile reguli firewall după cum urmează:
$ sudo ufw permite 20 / tcp. $ sudo ufw permite 21 / tcp. starea $ sudo ufw.
4. Să efectuăm acum câteva configurații pentru a configura și securiza serverul nostru FTP, mai întâi vom crea o copie de rezervă a fișierului de configurare original /etc/vsftpd/vsftpd.conf ca astfel:
$ sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig.
Apoi, să deschidem vsftpd fișier config.
$ sudo vi /etc/vsftpd.conf. SAU. $ sudo nano /etc/vsftpd.conf.
Adăugați / modificați următoarele opțiuni cu aceste valori:
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 VSFTPD pentru a permite / refuza accesul FTP utilizatorilor pe baza fișierului cu lista de utilizatori /etc/vsftpd.userlist.
Rețineți că, în mod implicit, utilizatorii enumerați în userlist_file = / etc / vsftpd.userlist li se refuză accesul de conectare cu userlist_deny = DA
opțiune dacă userlist_enable = DA
.
Dar, opțiunea userlist_deny = NU
răsucește sensul setării implicite, deci numai utilizatorii al căror nume de utilizator este listat în mod explicit userlist_file = / etc / vsftpd.userlist va fi permis să se conecteze la serverul FTP.
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
Important: Când utilizatorii se conectează la serverul FTP, aceștia sunt plasați într-o închisoare chrootată, acesta este directorul rădăcină local care va acționa ca directorul de acasă doar pentru sesiunea FTP.
În continuare, vom analiza două scenarii posibile ale modului de setare a directorului închis (root local), așa cum se explică mai jos.
6. În acest moment, să adăugăm / modificăm / decomentăm aceste două opțiuni următoare restricționează utilizatorii FTP la directoarele lor principale.
chroot_local_user = DA. allow_writeable_chroot = DA.
Optiunea chroot_local_user = DA
important înseamnă că utilizatorii locali vor fi plasați într-o închisoare chroot, directorul lor de origine în mod implicit după autentificare.
Și trebuie să înțelegem la fel de bine că VSFTPD nu permite ca directorul chroot jail să poată fi scris, în mod implicit din motive de securitate, totuși, putem folosi opțiunea allow_writeable_chroot = DA pentru a dezactiva această setare.
Salvați fișierul și închideți-l. Apoi, trebuie să repornim serviciile VSFTPD pentru ca modificările de mai sus să aibă efect:
Pe SystemD # systemctl reporniți vsftpd Pe SysVInit # service vsftpd restart.
7. Acum vom testa serverul FTP creând un utilizator FTP cu comanda useradd după cum urmează:
$ sudo useradd -m -c "Aaron Kili, Contributor" -s / bin / bash aaronkilik. $ sudo passwd aaronkilik.
Apoi, trebuie să listăm în mod explicit utilizatorul aaronkilik în dosar /etc/vsftpd.userlist cu comanda ecou și comanda tee ca mai jos:
$ echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist. $ cat /etc/vsftpd.userlist.
8. Acum este timpul să testăm că configurațiile noastre de mai sus funcționează după cum este necesar. Vom începe prin testarea autentificărilor anonime; din rezultatul de mai jos putem vedea clar că datele de conectare anonime nu sunt permise pe serverul FTP:
# ftp 192.168.56.102 Conectat la 192.168.56.102 (192.168.56.102). 220 Bun venit la serviciul FTP TecMint.com. Nume (192.168.56.102:aaronkilik): anonim. 530 Permis refuzat. Autentificare eșuată. ftp> pa. 221 La revedere.
9. Apoi, să testăm dacă un utilizator nu este listat în fișier /etc/vsftpd.userlist i se va acorda permisiunea de conectare, ceea ce nu este adevărat din rezultatul care urmează:
# ftp 192.168.56.102 Conectat la 192.168.56.102 (192.168.56.102). 220 Bun venit la serviciul FTP TecMint.com. Nume (192.168.56.10:root): user1. 530 Permis refuzat. Autentificare eșuată. ftp> pa. 221 La revedere.
10. Acum vom efectua un test final pentru a determina dacă un utilizator listat în fișier /etc/vsftpd.userlist, este de fapt plasat în directorul său de acasă după autentificare. Și acest lucru este adevărat din rezultatul de mai jos:
# ftp 192.168.56.102 Conectat la 192.168.56.102 (192.168.56.102). 220 Bun venit la serviciul FTP TecMint.com. Nume (192.168.56.102:aaronkilik): aaronkilik. 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
Avertizare: Setarea opțiunii allow_writeable_chroot = DA
poate fi atât de periculos, încât are posibile implicații de securitate, mai ales dacă utilizatorii au permisiunea de încărcare sau, mai mult, accesul la shell. Folosiți-l numai dacă știți exact ce faceți.
Ar trebui să reținem că aceste implicații de securitate nu sunt specifice VSFTPD, ele pot afecta, de asemenea, toți ceilalți demoni FTP care oferă posibilitatea de a pune utilizatorii locali în închisori chroot.
Din acest motiv, în secțiunea de mai jos, vom explica o metodă mai sigură de a seta un director rădăcină local non-scriibil diferit pentru un utilizator.
11. Acum, deschideți din nou fișierul de configurare VSFTPD.
$ sudo vi /etc/vsftpd.conf. SAU. $ sudo nano /etc/vsftpd.conf.
și comentează opțiunea nesigură folosind #
caracter așa cum se arată mai jos:
# allow_writeable_chroot = DA.
Apoi, creați directorul rădăcină locală alternativă pentru utilizator (aaronkilik, a dvs. nu este probabil același) și setați permisiunile necesare dezactivând permisiunile de scriere pentru toți ceilalți utilizatori în acest director:
$ sudo mkdir / home / aaronkilik / ftp. $ sudo chown anyone: nogroup / home / aaronkilik / ftp. $ sudo chmod a-w / home / aaronkilik / ftp.
12. Apoi, creați un director sub rădăcina locală cu permisiunile corespunzătoare în care utilizatorul își va stoca fișierele:
$ sudo mkdir / home / aaronkilik / ftp / files. $ sudo chown -R aaronkilk: aaronkilik / home / aaronkilik / ftp / files. $ sudo chmod -R 0770 / home / aaronkilik / ftp / files /
Apoi, adăugați / modificați opțiunile de mai jos în fișierul de configurare VSFTPD cu valorile lor corespunzătoare:
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. Și reporniți serviciile VSFTPD cu setările recente:
Pe SystemD # systemctl reporniți vsftpd Pe SysVInit # service vsftpd restart.
13. Acum, să efectuăm o verificare finală și să ne asigurăm că directorul rădăcină local al utilizatorului este directorul FTP pe care l-am creat în directorul său principal.
# ftp 192.168.56.102 Conectat la 192.168.56.102 (192.168.56.102). 220 Bun venit la serviciul FTP TecMint.com. Nume (192.168.56.10:aaronkilik): aaronkilik. 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! Nu uitați să împărtășiți opinia dvs. despre acest ghid prin formularul de comentarii de mai jos sau, eventual, să ne furnizați orice informații importante referitoare la subiect.
Nu în ultimul rând, nu ratați următorul nostru articol, unde vom descrie cum securizați un server FTP utilizând SSL / TLS conexiunile din Ubuntu 16.04 / 16.10, până atunci, rămân întotdeauna conectate la TecMint.