Toți am accesat, de-a lungul timpului, servere FTP. Dar uneori avem nevoie să le și configurăm, pentru a pune la dispoziția utilizatorilor diverse fișiere. Una din cele mai simple implementări pentru server FTP în Linux este vsftpd (Very Secure FTP Daemon).
Demonstrația de mai jos am făcut-o pe Arch Linux, dar merge la fel de bine și în CentOS sau Ubuntu: în fond, Linux rămâne Linux, indiferent cu ce haine e îmbrăcat.
Instalare
În Arch Linux, instalarea se face simplu:
sudo pacman -S vsftpd
În CentOS:
sudo yum install vsftpd
În Ubuntu
sudo apt-get install vsftpd
Indiferent de distribuție, trebuie pornit și activat serviciul vsftpd:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
sau același lucru într-o singură comandă :
sudo systemctl enable --now vsftpd
Pentru a vă convinge că noul server FTP funcționează, puteți accesa în browser una din adresele: ftp://127.0.0.1, ftp://hostname-ul_sistemului_vostru sau ftp://adresa_IP_interna:
În Arch Linux si Ubuntu, serverul este instalat în /srv/ftp, iar în CentOS în /var/ftp:
Configurare
Fișierul de configurare al noului server FTP instalat se găsește, pentru Arch Linux și Ubuntu, în /etc/vsftpd.conf, iar pentru CentOS 7 în /etc/vsftpd/vsftpd.conf.
În funcție de firewall-ul folosit, trebuie să permiteți accesul la porturile folosite de serviciul FTP: 20, 21.
Nu voi insista prea mult pe fișierul de configurare: e destul de bine explicat de comentariile din interior. Voi menționa doar câteva setări obligatorii:
- flagul WRITE_ENABLE trebuie setat pe YES pentru a permite uploadul:
write_enable=YES
- pentru a permite userilor din /etc/passwd să se conecteze:
local_enables=YES
- permiterea conectării utilizatorului anonim:
anonymous_enable=YES
- chroot jail: împiedicarea unui utilizator de părăsire a directorului propriu și accesare a directoarelor altor utilizatori - trebuie adăugate următoarele linii în fișierul /etc/vsftpd.conf:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
- pentru o restricționare mai mare, trebuie specificată și linia:
chroot_local_user=YES
Utilizarea SSl/TLS pentru securizarea serverului FTP
În primul rând avem nevoie de un certificat X.509 SSL/TLS. Dacă nu avem unul, putem folosi un certificat self signed care se generează cu ușurință de noi:
# cd /etc/ssl/certs
# openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout vsftpd.pem -out vsftpd.pem
# chmod 600 vsftpd.pem
În fișierul /etc/vsftpd.conf vom face următoarele modificări:
ssl_enable=YES
force_local_logins_ssl=NO
force_local_data_ssl=NO
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
--» calea corectă către certificatul SSL
rsa_private_key_file=/etc/ssl/certs/vsftpd.pem
--» calea corectă către certificatul SSL
Rezolvarea hostname-ului în modul pasiv:
Pentru a suprascrie adresa IP de către hostname-ul serverului și a avea DNS-ul rezolvat la startup, vom adăuga următoarele 2 linii în fișierul /etc/vsftpd.conf
pasv_addr_resolve=YES
pasv_address=yourdomain.org
Pentru a testa conectarea cu SSL, faceți o noua conexiune în Filezilla și, la prima conectare, o să vă apară o fereastră care vă afișează certificatul - trebuie să acceptați acest certificat:
Acest scurt tutorial nu este nici pe departe complet - este doar un început pentru configurarea unui server FTP minimal. Bineînțeles, pe parcurs pot apărea tot felul de probleme, în funcție de distribuție, configurări, etc. - toate aceste neajunsuri se pot rezolva apelând cu încredere la Google, căci în mod sigur nu suntem nici primii și nici ultimii care se lovesc de acele probleme.
[…] fișier pe un server ftp cu acces public – de aceea am explicat într-un articol anterior cum se creează în câțiva pași un server ftp minimal; fișierul va putea fi accesat la o adresă de forma […]