Table of Contents

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

<Global>
DefaultRoot ~
IdentLookups off
ServerIdent on "FTP Server ready."
</Global>

Proftp ρύθμιση ssl/tls

Δημιουργούμε στον 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 δεν θα πρέπει να έχει οριστεί

Πηγές