Instalarea și configurarea unui server VSFTPD anonim
- 4 minute de citit
- 2 exemple de cod
Disponibil și în English
Pe această pagină
După ce mi-am petrecut o bună parte din weekend jucându-mă cu VSFTPD, sunt foarte bucuros că am reușit în final să-l fac să funcționeze corect.
Scopul meu era să creez un server FTP simplu, anonim și privat pentru rețeaua mea de acasă. Ar trebui să facă mai ușor schimbul de fișiere între mașinile mele.
Configurarea serverului
Dacă vrei să încerci configurația mea, tot ce trebuie să faci este să urmărești comenzile de mai jos și să înlocuiești fișierul de configurare cu al meu. Fișierul de configurare va fi prezentat mai jos, în articol.
# Pentru Ubuntusudo apt-get install vsftpdcp /etc/vsftpd.conf /etc/vsftpd.conf.orig# Creează directoarele pentru serversudo mkdir -p /srv/vsftpd/root/publicsudo touch /srv/vsftp/banner# Schimbă permisiunile și proprietarulsudo chown -R ftp:ftp /srv/vsftpd/sudo chmod -R 555 /srv/vsftpd/sudo chmod 775 /srv/vsftpd/root/public# Editează fișierul de configurare# /etc/vsftpd.conf cu editorul preferat# Repornește serviciul și verifică stareasudo systemctl restart vsftpdsudo systemctl status vsftpdFișierul de configurare vsftpd.conf pe care îl folosesc poate fi găsit mai jos:
# Fișierul de configurare al serverului BUSY vsFTPd al Nucu Labs# Denis 09.02.2019# Scopul serverului: Serverul are rolul de a facilita schimbul simplu de fișiere și ar trebui# să fie disponibil doar în rețeaua locală. Nu este permis accesul din exterior!# Semnificația acestui fișier de configurare și lista completă a opțiunilor pot fi găsite# consultând pagina de manual a vsftpd.listen=NOlisten_ipv6=YES### Opțiuni de depanare# Dacă este activată, se păstrează un fișier jurnal cu încărcările și descărcările.# Implicit, acest fișier se află la /var/log/vsftpd.log,xferlog_enable=YES# debug_ssl=YES# log_ftp_protocol=YES# syslog_enable=YES#### Dacă este activată, atât utilizatorii ftp, cât și anonymous sunt recunoscuți ca autentificări anonime.anonymous_enable=YES# Această opțiune reprezintă un director în care vsftpd va încerca să intre după o autentificare anonimă.# Eșecul este ignorat silențios.anon_root=/srv/vsftp/rootlocal_root=/srv/vsftp/rootallow_writeable_chroot=YES# Permite utilizatorilor locali să se autentifice în FTP.local_enable=NO# Această opțiune este numele unui fișier care conține textul afișat atunci când cineva se conectează la server.banner_file=/srv/vsftp/banner# Când este activată, previne cererea de parolă anonimă din partea vsftpd# - utilizatorul anonim se autentifică direct.no_anon_password=YES# Dacă este setată la YES, utilizatorilor anonimi li se permite să creeze directoare noi, în anumite condiții.# Pentru ca acest lucru să funcționeze, opțiunea write_enable trebuie activată,# iar utilizatorul ftp anonim trebuie să aibă permisiune de scriere în directorul părinte.anon_mkdir_write_enable=YES# Dacă este setată la YES, utilizatorilor anonimi li se permit operațiuni de scriere# altele decât încărcarea și crearea de directoare, cum ar fi ștergerea și redenumirea.# Acest lucru nu este, în general, recomandat, dar este inclus pentru completitudine.anon_other_write_enable=YES# Dacă este setată la YES, utilizatorilor anonimi li se permite să încarce fișiere în anumite condiții.anon_upload_enable=YES# Când este activată, utilizatorii anonimi pot descărca doar fișierele care sunt citibile de oricine.anon_world_readable_only=YES# Dacă este activată, toate fișierele încărcate anonim vor avea proprietarul schimbat# în utilizatorul specificat în setarea chown_usernamechown_uploads=YESchown_username=ftpnopriv_user=ftpdelete_failed_uploads=YES# Dacă este activată, utilizatorii serverului FTP pot vedea mesaje la prima intrare# într-un director nou. Implicit, directorul este scanat pentru fișierul .message.dirmessage_enable=YES# Dacă este activată, toate informațiile despre utilizatori și grupuri din listările de directoare vor fi afișate ca „ftp”.hide_ids=YES# Permite: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE și SITE.write_enable=YES# Fișierele încărcate sunt executabile.chown_upload_mode=0777file_open_mode=0777local_umask=002anon_umask=002#### Folosește ora locală a sistemului în GMT.use_localtime=YES# Această opțiune trebuie să fie numele unui director care este gol. De asemenea, directorul# nu ar trebui să fie scriptibil de utilizatorul ftp. Acest director este folosit# ca o închisoare chroot() sigură, în momentele în care vsftpd nu are nevoie de acces la sistemul de fișiere.secure_chroot_dir=/var/run/vsftpd/empty# Acest șir este numele serviciului PAM pe care îl va folosi vsftpd.pam_service_name=vsftpd# Decomentează aceasta pentru a indica faptul că vsftpd folosește un sistem de fișiere utf8.utf8_filesystem=YESFolosind această configurație vei obține un server VSFTPD anonim complet funcțional. DAR AȘTEAPTĂ! Asigură-te că nu expui serverul la internet! Păstreaz-l doar pentru uz privat, deoarece, fiind anonim, oricine poate descărca și încărca fișiere.
Rezolvarea problemelor serverului
Am avut multe probleme cu permisiunile. Dacă nu le setezi corect, te vei trezi că nu poți încărca fișiere, nu le poți descărca, nu poți crea directoare sau nu poți intra în directoare cu cd.
Cea mai frecventă eroare pe care am întâlnit-o a fost Writable root. Owner of the chroot() is root and has write permissions. Aceasta s-a rezolvat eliminând permisiunea de scriere din directorul /srv/vsftpd/root.
Un alt lucru pe care s-ar putea să-l dorești este să adaugi utilizatorul tău în grupul ftp. Am uitat -a când m-am adăugat pe mine și am ajuns să mă scot din toate grupurile, cu excepția grupului ftp. A trebuit să pornesc Ubuntu în modul Recovery, să obțin un shell de root și să mă adaug înapoi în sudo, precum și în celelalte grupuri administrative. Pentru a te adăuga în grupul ftp, poți copia fără griji următoarea comandă: sudo usermod -a -G ftp $USER.
Dacă fișierul banner (cel creat cu comanda touch de mai sus) nu există sau permisiunile sunt insuficiente, serverul nu va porni.
Rezolvarea problemelor clientului
Recunosc că nu am folosit FTP prea mult. De fiecare dată când te conectezi la serverul VSFTPD ar trebui să o faci în modul pasiv. Aceasta înseamnă că serverul va deschide un alt socket atunci când efectuează o operațiune, în loc să inițieze o conexiune către tine (clientul). Dacă nu folosești modul FTP pasiv, firewall-ul tău îți va cere să permiți clientului FTP să treacă. Pentru a te conecta folosind FTP pasiv, rulează: ftp -p ftp_server_ip_or_alias
Când încarci imagini, fișiere PDF sau alte fișiere binare, trebuie să folosești comanda binary în clientul FTP, înainte de put, altfel lucrurile se vor complica și fișierul binar se va corupe.
Concluzii
Mi-a plăcut foarte mult să instalez și să configurez VSFTPD, dar și să scriu acest articol. Dacă ai nevoie de mai mult ajutor cu VSFTPD, îți recomand să vizitezi pagina de wiki Arch Linux, care conține foarte multe informații.
Mulțumesc că ai citit și să ai o zi minunată!
Acest articol face parte din seria mea despre Homelab. Poate vrei să consulți postarea anterioară: My Homelab Journey: Introduction