
FTP server sa vsftpd na Ubuntu/Debian — šta će biti postignuto
Ovaj vodič objašnjava kako instalirati i bezbedno podesiti FTP server koristeći vsftpd na Ubuntu ili Debian sistemima. FTP server je servis za prenos fajlova između klijenta i servera; iako ga je često zamenio SFTP (koji radi preko SSH), FTP i dalje ima upotrebu u specifičnim okruženjima poput legacy aplikacija, uređaja koji ne podržavaju SFTP ili kada se koristi kontrolisani, izolovani pristup sa jasnim pravilima firewalla i enkripcijom (FTPS). U ovom prvom delu čitaoci će dobiti pregled očekivanog rezultata, zahteve i osnovnu instalaciju vsftpd-a, kao i uvod u korisničke pristupe i dozvole.
Očekivani rezultat i zašto izabrati vsftpd
Na kraju ovog dela čitaoci će imati funkcionalan vsftpd servis koji se pokreće, osnovni konfiguracioni fajl spreman za dalje podešavanje, osnovne smernice o direktorijumima i dozvolama, i osnovne komande za testiranje veze. vsftpd (Very Secure FTP Daemon) je poznat po stabilnosti, performansama i bezbednosnim opcijama (podržava chroot, virtualne korisnike i FTPS). Važno je razumeti razliku između FTP, FTPS (FTP over TLS) i SFTP (FTP preko SSH) kako bi se odabrala prava tehnologija za konkretan slučaj upotrebe.
Zahtevi, bezbednosne preporuke i priprema sistema
Pre instalacije proveriti sledeće:
- Okruženje: Ubuntu Server ili Debian (ovo uputstvo je specifično za obe distribucije).
- Pristup: root ili sudo privilegije (potrebno za instalaciju i promenu firewall pravila).
- Mreža: javna IP/adresa ili unutrašnja adresa iza NAT-a; poznavanje portova koje će FTP koristiti (standardno 21 za upravljanje, plus opseg portova za pasivni mod).
- Backup: napraviti kopiju kritičnih fajlova pre izmene konfiguracija.
Preporuke:
- Koristiti FTPS (TLS) za enkripciju prenosa kada klijenti to podržavaju.
- Ograničiti pristup firewall pravilima samo na poznate IP-ove kad je moguće.
- Kreirati virtuelne korisnike bez sistemskih naloga (opisaće se u sledećim delovima) kako bi se izolovao pristup.
Instalacija vsftpd na Ubuntu/Debian
Sledeće komande se izvode na Ubuntu/Debian sistemu. Potrebne su sudo/root privilegije.
# Osvežavanje paketa (sudo)
sudo apt update
# Instalacija vsftpd (sudo)
sudo apt install -y vsftpd
# Pokretanje i omogućavanje servisa pri startu (sudo)
sudo systemctl enable --now vsftpd
Objašnjenje komandi:
- sudo apt update — preuzima najnovije izvore paketa.
- sudo apt install -y vsftpd — instalira vsftpd paket (-y automatski potvrđuje instalaciju).
- sudo systemctl enable –now vsftpd — omogućava servis pri podizanju sistema i odmah ga pokreće.
Fajl glavne konfiguracije: /etc/vsftpd.conf. Sledeći koraci uključuju sigurno uređivanje tog fajla, pravljenje direktorijumske strukture za FTP korisnike i definisanje pasivnog opsega pristupa — o tome će biti reči u narednom delu.
U sledećem delu vodiča biće detaljno opisani parametri u /etc/vsftpd.conf, podešavanje pasivnog moda i NAT/firewall pravila, kao i stvaranje virtuelnih korisnika bez sistemskih naloga.
Završna podešavanja — primeri i smernice
Ispod su sažete, praktične smernice koje možete primeniti odmah nakon osnovne instalacije da biste doveli vsftpd u funkcionalno i bezbedno stanje.
Bitne opcije u /etc/vsftpd.conf
- Onemogućite anonimni pristup: allow_anon=NO
- Dozvolite lokalne korisnike i pisanje (ako je potrebno): local_enable=YES i write_enable=YES
- Chroot za korisnike: chroot_local_user=YES i user_sub_token=$USER zajedno sa local_root=/home/ftp/$USER
- Pasivni mod: pasv_enable=YES, pasv_min_port=, pasv_max_port=, pasv_address= (ako je server iza NAT-a)
- FTPS (TLS): ssl_enable=YES i rsa_cert_file=/etc/ssl/private/vsftpd.pem (ili putanja do vašeg certifikata)
- Virtuelni korisnici (ako koristite guest/DB pristup): pam_service_name=vsftpd i guest_enable=YES sa guest_username=
Firewall i NAT (u praksi)
- Otvorite port 21/tcp: primer za UFW — sudo ufw allow 21/tcp
- Otvorite opseg pasivnih portova: sudo ufw allow 10090:10100/tcp (prilagodite opsegu koji ste u konfiguraciji)
- Ako je server iza rutera/NAT-a, prosledite port 21 i ceo pasivni opseg prema internom IP-u servera i podesite pasv_address na javnu IP adresu ili DNS ime
- Na Linux serveru proverite da li su netfilter moduli za FTP isključeni ako koristite pasivni mod sa prosleđivanjem (bolje je eksplicitno proslediti pasivne portove)
Kreiranje virtuelnih korisnika (kratki opis toka)
- Napravite mapu /etc/vsftpd/ i fajl sa parovima korisnik:lozinka (privremeno u tekstu).
- Konvertujte ga u DB hash koji čita PAM (koriste se alatke kao što su db_load/htdb ili odgovarajući alat na vašoj distribuciji).
- Konfigurišite /etc/pam.d/vsftpd da koristi userdb/pam_userdb ili pam_pwdfile prema izabranoj metodi.
- U vsftpd.conf: guest_enable=YES, guest_username=, virtual_use_local_privs=YES i podesite lokalne root direktorijume preko user_sub_token ili mapiranja.
- Pobrinite se da vlasništvo i permisije direktorijuma omogućavaju pristup bez razotkrivanja drugih podataka.
Testiranje i uobičajeno otklanjanje grešaka
- Testirajte sa FTP klijentom (FileZilla, lftp) i proverite da li je konekcija uspostavljena i da li pasivni transfer radi.
- Greška “Connection timed out” obično znači da firewall ili NAT ne prosleđuje pasivne portove.
- Greška “530 Login incorrect” ukazuje na neispravne akreditive ili PAM konfiguraciju.
- “425 Can’t open data connection” i “550 Permission denied” su često posledica nepravilnih permisija, chroot pravila ili zatvorenih pasivnih portova.
- Posmatrajte logove: /var/log/vsftpd.log i syslog/journal za detalje o greškama.
- Svaka promena konfiguracije zahteva restart servisa: sudo systemctl restart vsftpd
Završne napomene i održavanje
Postavljanje vsftpd-a je samo početak — bezbednost i pouzdanost zahtevaju stalnu pažnju. Redovno ažurirajte sistem i vsftpd paket, pratite logove i pristupe, pravite rezervne kopije konfiguracionih fajlova i certifikata, i periodično proveravajte pravila za firewall i NAT. Kada je moguće, preferirajte šifrovane veze (FTPS) i minimalne privilegije za korisničke naloge. Pažljivo testirajte svaku izmjenu u kontrolisanom okruženju pre nego što je primenite u produkciji.
Dodatne bezbednosne mere i održavanje
Pored osnovne konfiguracije i testiranja, preporučljivo je primeniti dodatne mere koje smanjuju površinu napada i olakšavaju dugoročno održavanje. To uključuje automatsko obnavljanje TLS sertifikata, centralizovano praćenje logova, pravila za automatsko blokiranje neuspelih pokušaja prijave i jasnu politiku rezervnih kopija konfiguracionih fajlova i korisničkih podataka.
Monitoring i logovi
- Postavite rotaciju logova za /var/log/vsftpd.log kroz logrotate kako bi se izbeglo zauzimanje prostora: napravite jednostavan fajl u /etc/logrotate.d/vsftpd sa pravilima zadržavanja i kompresije.
- Korišćenjem syslog servera ili centralizovanih rešenja (rsyslog, Graylog, ELK) možete lako analizirati obrasce pristupa i detektovati sumnjive aktivnosti.
- Podesite alertove za neuobičajeno veliki broj neuspelih prijava ili brz rast prenosa podataka iz jednog IP-a.
Integracija sa fail2ban
fail2ban može automatski blokirati IP adrese koje ponavljaju neuspešne pokušaje prijave. Primer jednostavnog faila za vsftpd može izgledati ovako (u /etc/fail2ban/jail.d/vsftpd.local):
[vsftpd]
enabled = true
port = ftp,ftp-data,ftps
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5
bantime = 3600
Nakon kreiranja fajla restartujte fail2ban: sudo systemctl restart fail2ban.
Automatizacija TLS/FTPS sertifikata
Ako koristite javne TLS sertifikate (npr. Let’s Encrypt), možete koristiti certbot da automatski izdaje i obnavlja sertifikate. Važno je podesiti post-renew hook koji će restartovati ili reload-ovati vsftpd kako bi napravljen novi sertifikat počeo da se koristi.
# primer komande za certbot sa hook-om
sudo certbot certonly --standalone -d ftp.example.com
# u /etc/letsencrypt/renewal-hooks/deploy/ dodajte skriptu koja restartuje vsftpd
Putanje do sertifikata zatim postavite u /etc/vsftpd.conf (rsa_cert_file i rsa_private_key_file ili kombinovana datoteka).
Testiranje FTPS/TLS konekcije
Za brzo testiranje TLS sloja možete koristiti openssl:
# test FTPS (explicit TLS) sa STARTTLS
openssl s_client -connect ftp.example.com:21 -starttls ftp
Ovaj prikaz vam pokazuje sertifikat i TLS pregovaranje bez potrebe za FTP klijentom; za transfer fajlova koristite FileZilla ili lftp sa uključenim FTPS/TLS podešavanjima.
AppArmor, permisije i chroot
- Ubuntu koristi AppArmor profil za vsftpd — proverite /etc/apparmor.d/ i prilagodite dozvole ako koristite netipične putanje za direktorijume i sertifikate.
- Ako koristite chroot za lokalne naloge, budite svesni da neke verzije vsftpd ne dozvoljavaju chroot na direktorijumima gde je korisnik vlasnik i ima pravo pisanja bez opcije allow_writeable_chroot=YES. Koristite ovu opciju pažljivo i dokumentujte razloge za izuzetak.
- Uvek postavite direktorijume i fajlove sa najmanje potrebnim privilegijama i pravilnim vlasništvom (npr. root:ftproot za glavni koren, a poddirektorijumi sa vlasništvom koji omogućava upload samo specifičnim korisnicima).
Skaliranje i performanse
Za veća okruženja obratite pažnju na vrednosti kao što su maksimalan broj klijenata, veličina pasivnog opsega i mrežna propusnost. Promenljive poput max_clients ili listen/standalone podešavanja u vsftpd.conf mogu uticati na opterećenje memorije i broj istovremenih konekcija. Testirajte performanse u kontrolisanom okruženju pre primene u produkciji.
