PureFTPd na Debian Jessie
Prosty tutorial przedstawiający instalację PureFTPd na Debianie Jessie.
apt-get install pure-ftpd
Po instalacji ustawiamy wybrane parametry działania PureFTPd. Odsyłam do dokumentacji jeśli któreś z ustawianych zmiennych nie są jasne.
echo yes > /etc/pure-ftpd/conf/ChrootEveryone
echo yes > /etc/pure-ftpd/conf/Daemonize
echo yes > /etc/pure-ftpd/conf/VerboseLog
echo yes > /etc/pure-ftpd/conf/NoAnonymous
echo yes > /etc/pure-ftpd/conf/DontResolve
echo yes > /etc/pure-ftpd/conf/AnonymousCantUpload
echo yes > /etc/pure-ftpd/conf/LogPID
Następnie ustawiamy *wirtualnych* użytkowników za pomocą mechanizmu pure-db.
ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/90pure
echo no > /etc/pure-ftpd/conf/PAMAuthentication
echo no > /etc/pure-ftpd/conf/UnixAuthentication
Dodajemy wirtualnego usera.
groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /dev/null ftpuser
touch /etc/pure-ftpd/pureftpd.passwd
pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe
pure-pw mkdb
Ostatnia komenda „pure-pw mkdb” działa jak COMMIT w SQL; czyli dosłownie zatwierdza transakcję wprowadzania zmian w bazie PureFTPd, zapisując zmiany do pliku /etc/pure-ftpd/pureftpd.pdb.
Następnie ustawiamy firewall. Przy domyślnej polityce DROP, należy otworzyć porty dla pasywnych połączeń.
Do pliku /etc/iptables.rules dopisujemy:
# passive ftp (ssl)
-A INPUT -i eth0 -p tcp --dport 45000:50000 -m state --state NEW -j ACCEPT
Wprowadzamy zmiany do firewalla:
/sbin/iptables-restore /etc/iptables.rules
Uwzględniamy TLS (szyfrowanie) oraz ustawiamy porty dla pracy w trybie pasywnym:
echo '45000 50000' > /etc/pure-ftpd/conf/PassivePortRange
echo 1 > /etc/pure-ftpd/conf/TLS
Generujemy certyfikat (i klucz) używany do połączeń szyfrowanych:
mkdir -p /etc/ssl/private/
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Gotowe. Można wystartować PureFTPd i sprawdzić jak działa.
systemctl start pure-ftpd