====== Proftp - Εξυπηρετητής αρχείων ====== Εγκαθιστούμε με aptitude install proftpd Επιλέγουμε να εκτελείται ως standalone server Για λόγους ασφαλείας δεν είναι ενεργοποιημένη η σύνδεση μέσω root οπότε συνδεόμαστε ως ένας απλός χρήστης ftp localhost Ας φτιάξουμε έναν φάκελο upload μέσα στον φάκελο που εξυπηρετεί ο apache ώστε να μπορούμε ύστερα να κατεβάσουμε από αυτόν mkdir /var/www/upload Εάν θέλουμε να έχει οποιοσδήποτε την δυνατότητα εγγραφής εκεί θα πρέπει να αλλάξουμε τα δικαιώματα chmod a+rw /var/www/upload ===== Passive Ports ==== Είναι απαραίτητη η χρήση passive ports για την ορθή λειτουργία του ftp server. Στο αρχείο proftpd.conf εισάγουμε π.χ. PassivePorts 34000 34100 ===== Firewall/θύρες===== Θα πρέπει να ανοίξουμε την βασική θύρα του ftp την 21 στον firewall. Συστήνεται εάν έχουμε και εξωτερική πρόσβαση στον ftp server να αλλάξει η εξωτερική θύρα. Ένας απλός τρόπος, αν είμαστε πίσω από router, είναι να προωθήσουμε μια άλλη θύρα π.χ. 53000 στην 21. Έτσι δεν χρειάζεται μάλιστα να αλλάξουμε την ρύθμιση στο proftpd.conf Ομοίως και τις passive θύρες θα πρέπει να τις ανοίξουμε στον firewall. Για εξωτερική πρόσβαση, εάν είμαστε πίσω από κάποιον router, θα πρέπει οι θύρες αυτές, να προωθούνται από τον router στον server μας. ===== Περιορισμός σε home φάκελο ===== Για να περιορίσουμε τους χρήστες στον προσωπικό τους φάκελο, όταν κάνουν σύνδεση προσθέτουμε στο proftpd.conf DefaultRoot ~ IdentLookups off ServerIdent on "FTP Server ready." ===== Proftp ρύθμιση ssl/tls ===== Δημιουργούμε στον apache τα απαραίτητα certificates (βλ. [[el:linux:debian:server:apache#ssl_-_tls_ths|Apache Ρύθμιση ssl/tls]]) Τροποποιούμε το αρχείο /etc/proftpd/proftpd.conf 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 Επανεκκινούμε τον 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 δεν θα πρέπει να έχει οριστεί ===== Πηγές ===== * Αντιμετώπιση Προβλημάτων : http://www.linuxquestions.org/questions/showthread.php?postid=411624 * Ρύθμιση ssl/tls : * http://www.castaglia.org/proftpd/doc/contrib/ProFTPD-mini-HOWTO-TLS.html * http://www.howtoforge.com/proftpd-tls-debian-etch * TLS vs SSL : http://www.computing.net/webdevel/wwwboard/forum/439.html * User Guide : http://proftpd.org/localsite/Userguide/linked/userguide.html * Debian Help - Proftp : http://www.debianhelp.co.uk/proftp.htm * TroubleShooting : Security violation and AllowForeignAddress * http://www.castaglia.org/proftpd/doc/contrib/ProFTPD-mini-HOWTO-SSH.html * http://www.proftpd.org/docs/directives/linked/config_ref_AllowForeignAddress.html * http://www.experts-exchange.com/OS/Linux/Administration/Q_20152018.html * mod_rewrite * http://www.proftpd.org/docs/howto/Rewrite.html