Instalujemy pure-ftpd
apt-get install pure-ftpd
Blikujemy możliwość logowania z kont innych niż zapisanych w pliku poprzez zmianę wartości z YES na NO w pliku:
/etc/pure-ftpd/auth/70pam
Tworzymy symlinka do pliku z hasłami. W moim przypadku plik jest w lokalizacji
/etc/pure-ftpd/conf/PureDB
, a będąc w folderze /etc/pure-ftpd/auth
wydaję komendę:
ln -s ../conf/PureDB 50pure
W folderze /etc/pure-ftpd/conf
tworzę taką strukturę plików:
AltLog
ChrootEveryone
MinUID
NoAnonymous
PAMAuthentication
PureDB
UnixAuthentication
Gdzie:
AltLog – zawiera informację gdzie będą zapisywane logi z transferu np. clf:/var/log/pure-ftpd/transfer.log
ChrootEveryone – czy każdy użytkownik ma być traktowany jako oddzielna część systemu np. yes
MinUID – minimalny UID użytkownika, czyli jaki może mieć UID systemowy. Ja daję taki jak jest www-data, gdyż najczęściej takiego używam, jednak dla większego zabezpieczenia powinno tworzyć się strukturę większą niż 1000, i dawać dostępy za pomocą ustawień przynależności użytkowników do grup.
NoAnonymous – blokowanie możliwości logowania na konta anonymous, np. yes
PAMAuthentication – czy włączyć uwierzytelnianie za pomocą mechanizmu PAM, np. no
PureDB – czy włączyć uwierzytelnianie za pomocą pliku, np. /etc/pure-ftpd/pureftpd.pdb
UnixAuthentication – czy włączyć uwierzytelnianie za pomocą kont systemowych, np. no
Tak ustawione dane pozwalają na podstawową ochronę.
Teraz są dwie możliwości co do sposobu działania serwera, jako usługa działająca cały czas, lub jako demon uruchamiany po zgłoszeniu się na port.
Ja ustawiam jako działający cały czas zatem należy w tym przypadku zrobić:
Za komentować wpis ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper
w plik /etc/inetd.conf
Zmienić wpis w pliku /etc/default/pure-ftpd-common
z : STANDALONE_OR_INETD=inetd
na STANDALONE_OR_INETD=standalone
Teraz można uruchomić ponownie komendą:
invoke-rc.d pure-ftpd restart
Zostało tylko założenie konta.
pure-pw useradd ftpwww -u ww-data -g www-data -d /var/www/ -m
I teraz można cieszyć się FTP.
UWAGA do poprawnego działania potrzebny jest dobrze ustawiony firewall.