Εγκαθιστούμε με
aptitude install proftpd
Επιλέγουμε να εκτελείται ως standalone server
Για λόγους ασφαλείας δεν είναι ενεργοποιημένη η σύνδεση μέσω root οπότε συνδεόμαστε ως ένας απλός χρήστης
ftp localhost
Ας φτιάξουμε έναν φάκελο upload μέσα στον φάκελο που εξυπηρετεί ο apache ώστε να μπορούμε ύστερα να κατεβάσουμε από αυτόν
mkdir /var/www/upload
Εάν θέλουμε να έχει οποιοσδήποτε την δυνατότητα εγγραφής εκεί θα πρέπει να αλλάξουμε τα δικαιώματα
chmod a+rw /var/www/upload
Είναι απαραίτητη η χρήση passive ports για την ορθή λειτουργία του ftp server.
Στο αρχείο proftpd.conf εισάγουμε π.χ.
PassivePorts 34000 34100
Θα πρέπει να ανοίξουμε την βασική θύρα του ftp την 21 στον firewall. Συστήνεται εάν έχουμε και εξωτερική πρόσβαση στον ftp server να αλλάξει η εξωτερική θύρα. Ένας απλός τρόπος, αν είμαστε πίσω από router, είναι να προωθήσουμε μια άλλη θύρα π.χ. 53000 στην 21. Έτσι δεν χρειάζεται μάλιστα να αλλάξουμε την ρύθμιση στο proftpd.conf
Ομοίως και τις passive θύρες θα πρέπει να τις ανοίξουμε στον firewall. Για εξωτερική πρόσβαση, εάν είμαστε πίσω από κάποιον router, θα πρέπει οι θύρες αυτές, να προωθούνται από τον router στον server μας.
Για να περιορίσουμε τους χρήστες στον προσωπικό τους φάκελο, όταν κάνουν σύνδεση προσθέτουμε στο proftpd.conf
<Global> DefaultRoot ~ IdentLookups off ServerIdent on "FTP Server ready." </Global>
Δημιουργούμε στον apache τα απαραίτητα certificates (βλ. Apache Ρύθμιση ssl/tls)
Τροποποιούμε το αρχείο /etc/proftpd/proftpd.conf
<IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol TLSv1 # Are clients required to use FTP over TLS when talking to this server? TLSRequired off # Server's certificate TLSRSACertificateFile /etc/apache2/newcert.pem TLSRSACertificateKeyFile /etc/apache2/newkey.pem # CA the server trusts TLSCACertificateFile /etc/apache2/newca.pem # Authenticate clients that want to use FTP over TLS? TLSVerifyClient off # Allow SSL/TLS renegotiations when the client requests them, but # do not force the renegotations. Some clients do not support # SSL/TLS renegotiations; when mod_tls forces a renegotiation, these # clients will close the data connection, or there will be a timeout # on an idle data connection. TLSRenegotiate required off </IfModule>
Επανεκκινούμε τον ftp server με
/etc/init.d/proftpd restart
Εάν μας εμφανιστεί το μύνημα
Starting ftp server: proftpd - IPv6 getaddrinfo 'myserver.mydomain.com' error: Name or service not known
χρειάζεται να τροποποιήσουμε στο αρχείο /etc/hosts την γραμμή, ώστε να γίνει
::1 ip6-localhost ip6-loopback myserver.mydomain.com
Ένα άλλο πρόβλημα έχει να κάνει με θέματα firewall και προκύπτει εάν αλλάξουμε την προκαθορισμένη θύρα από την 21 σε κάτι άλλο. Εμφανίζεται ως εξής. Παρόλο που συνδεόμαστε η ls αποτυγχάνει. Για να το λύσουμε δοκιμάζουμε να ανοίξουμε και κάποια άλλη θύρα ή θύρες στον firewall π.χ. 4321 και να στο αρχείο /etc/proftpd/proftpd.conf να προσθέσουμε κάτω από την γραμμή ports τα εξής. Υποθέτουμε ότι η σταθερή internet ip μας είναι π.χ. η 213.111.111.111
PassivePorts 4321 4330 MasqueradeAddress 213.111.111.111
Δοκιμάζουμε αρχικά έτσι και εφόσον λυθεί δοκιμάζουμε χωρίς το MasqueradeAddress ή χωρίς το PassivePorts. Εάν χρειαζόμαστε οπωσδήποτε masquerade είναι καλό να βάλουμε dns όνομα, π.χ.
MasqueradeAddress myserver.mydomain.com
Και στο αρχείο /etc/hosts
213.111.111.111 myserver.mydomain.com
Επίσης κάποια στιγμή εμφανίστηκε και το παρακάτω πρόβλημα που ίσως έχει σχέση με ιδιομορφίες router
SECURITY VIOLATION: Passive connection from 111.123.222.111 rejected
Λύθηκε με την παρακάτω προσθήκη στο proftpd.conf παρόλο που δεν συστήνεται για λόγους ασφαλείας
AllowForeignAddress on
Για 2 ip διευθύνσεις η MasqueradeAddress δεν θα πρέπει να έχει οριστεί