Koriscenje FTP servera je veoma popularno za razmenu fajlove putem Interneta. Ali, FTP protokol nije toliko bezbedan koliko to neki misle. Podrazumevano, svaki FTP korisnik ima sistemski shell nalog i kada se povezuje na FTP server, sva korisnicka imena i lozinke se salju u formi nezasticenog teksta. To znaci da neko ko prisluskuje vase pakete moze dobiti pristup ka vasem FTP nalogu. Ovo uputstvo je namenjeno da pruzi resenje za oba problema. Pure-ftpd sa puredb vam omogucava da imate kontrolisane FTP-only naloge i mogucnost da koristite SSL.
Da bi ste imali virtuelne korisnicke naloge, potrebna nam je nekakva baza. Mozete kompajlirati pure-ftpd da radi sa MySQL, ali mi cemo koristiti puredb zato sto je specificno napisan da se koristi sa pure-ftpd.
# cd /usr/ports/databases/puredb # make install distclean # cd /usr/ports/ftp/pure-ftpd # make install distclean
Prvo, trebamo da promenimo ime konfiguracionog fajla i napravimo unos u rc.conf da bi pokrenuli daemon.
# cd /usr/local/etc # mv pure-ftpd.conf.sample pure-ftpd.conf # echo 'pureftpd_enable="YES"' >> /etc/rc.conf
Zbog toga sto autorizujemo virtualne korisnike, trebamo promeniti samo par linija u konfiguracionom fajlu. Naravno, konfiguracioni fajl daje dosta opcija koje mozete prilagoditi vasem sistemu. Ispod se nalazi nekoliko neophodnih stvari i predloga za koriscenje sa ovim uputstvom. Postarajte se da imate sledece linije:
# nano -w pure-ftpd.conf ChrootEveryone yes PureDB /usr/local/etc/pureftpd.pdb Umask 177:077 AllowUserFXP no CreateHomeDir yes TLS 1
Sada je vreme da se generise samo-potpisani SSL Sertifikat za koriscenej sa pure-ftpd. Mozete koristiti i potpisani ako zelite, ali njegovo ime treba da bude pure-ftpd.pem
# mkdir -p /etc/ssl/private # openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem \ # -out /etc/ssl/private/pure-ftpd.pem # chmod 600 /etc/ssl/private/*.pem
Pure-ftpd ce se startovati sa podizanjem sistema, ali uvek mozete izdati komandu:
# /usr/local/etc/rc.d/pure-ftpd.sh start
Sada kada je pure-ftpd podignut i radi, vreme je da kreiramo i podesimo nase korisnike. Informacije o virtualnim korisnicima se kreiraju i modifikuju sa pure-pw i informacije se autorizuju sa /usr/local/etc/pureftpd.passwd i puredb u /usr/local/etc/pureftpd.pdb. Posto virtualni korisnici zapravo i ne postoje, moramo da kreiramo pravog korisnika i grupu za read/write pristup fajlsistemu. Mozete cak koristiti i postojeceg korisnika/grupu, ali da bi kompletno izolovali ftp korisnike, kreiracemo nove.
# pw groupadd ftpgroup # pw useradd ftpusers -c "Virtual FTP Users" -g ftpgroup -d /dev/null -s /sbin/nologin # mkdir /usr/home/ftpusers
Ako planirate da podignete anonymous ftp, onda morate da kreirate sistemski ftp nalog i njegov home direktorijum kao u nastavku i svi recursive direktorijumi trebaju biti u vlasnistvu ftp, a ne ftpusers. Ovo znaci da se anonymous ftp nemoze uredjivati kao virtualni nalog.
# pw useradd ftp -c "Anonymous FTP" -d /usr/home/ftpusers/ftp -s /sbin/nologin # mkdir /usr/home/ftpusers/ftp # mkdir /usr/home/ftpusers/ftp/incoming # mkdir /usr/home/ftpusers/ftp/pub # chown ftpusers:ftpgroup /usr/home/ftpusers/ftp # chown ftp:ftpgroup /usr/home/ftpusers/ftp/* # chmod 0755 /usr/home/ftpusers/ftp/incoming # chmod 0555 /usr/home/ftpusers/ftp/pub
Primetite da imamo sistemskog korisnika/grupu, mozemo dodati nase virtualne korisnike da budu u istu korisnicku grupu. Ovo postaje bezbednosni problem samo ako ne chroot-ujete svakog da ostanu u njihovim home direktorijumima. Da jednostavno kreirate korisnika koji ima podrazumevani throttling:
# pure-pw useradd bob -u ftpusers -d /usr/home/ftpusers/bob -m Password: Enter it again:
Korisnik, bob, je kreiran sa UID-om ftpusers i home direktorijumom /usr/home/ftpusers/bob i ova informacija je preneta do /usr/local/etc/pureftpd.pdb sa -m opcijom. Ako zelite da bob ima pristup celom sistemskom direktorijumu, koristite -D opciju umesto -d. Ako ikada dobijete gresku u kojoj se kaze da korisnik nije pronadjen, to mozete ispraviti tako sto cete kreirati bazu podataka sa
# pure-pw mkdb
A sta ako imate sistemskog korisnika kojem se treba omoguciti pristup FTP? Postoje dva nacina da se ovo uradi. Mozete urediti /usr/local/etc/pure-ftpd.conf da sadrzi UnixAuthentication, ali preporucen nacin je da dodate vas postojeci sistemske korisnicke naloge u pureftpd.passwd. Ovo se preporucuje zbog toga sto se njihov ftp pristup tada moze kontrolisati ili upravljati.
# pure-pwconvert >> /usr/local/etc/pureftpd.passwd
Modifikovanje korisnickih informacija koristi iste opcije za dodavanje korisnika, ali cete umesto toga koristiti usermod. Promenimo sada bob-ove parametre tako da moze da sacuva samo 10 fajlova i da upload-uje na 20kbps.
# pure-pw usermod bob -n 10 -T 20 -m
Da vidite podesene parametre za bob, mozemo izdati:
# pure-pw show bob Login : bob Password : $2a$07$2GsgzvrRTdAT9ld3bi.rPuIT1bfnfzJx1tqAn49uwHRPn3vfOEhUW UID : 1003 (ftpusers) GID : 1003 (ftpgroup) Directory : /home/ftpusers/bob/./ Full name : Download bandwidth : 0 Kb (unlimited) Upload bandwidth : 20 Kb (enabled) Max files : 10 (enabled) Max size : 0 Mb (unlimited) Ratio : 0:0 (unlimited:unlimited) Allowed local IPs : Denied local IPs : Allowed client IPs : Denied client IPs : Time restrictions : 0000-0000 (unlimited) Max sim sessions : 0 (unlimited)
Brisanje korisnika je isto tako jednostavno.
# pure-pw userdel bob -m
Nakon modifikovanja parametara korisnika, ponovno startovanje pure-ftpd nije neophodno. Samo napravite promene i one ce se odmah primeniti. Za vise informacija, pogledajte man stranice ili pronadjite kako se koristi tako sto necete odrediti nikakve parametre:
# pure-pw
Sada ste spremni. Isprobajte ovo koristeci regularni FTP i nakon toga FTP preko SSL.
Izvor: http://www.bsdguides.org/guides/freebsd/networking/pure-ftpd_virtual_users.php