Δημοσιεύτηκε: 17 Δεκ 2008, 12:41
από Phantomas
Εικόνα

Δημιουργία FTP Server με το vsftpd

Θέλετε έναν γρήγορο τρόπο να μοιράζετε τα αρχεία σας στους φίλους σας;
Θέλετε όπου και αν πάτε, να μπορείτε να βρείτε τα τραγούδια, τις εικόνες, τα βίντεο σας, κλπ;

(Δεν είπα για εταιρικά και σημαντικά αρχεία... για να μην φάω και κράξιμο... αν θέλετε να μεταφέρετε σημαντικά αρχεία, καλύτερα να πάτε σε μια πιο ασφαλή λύση που είναι το SecureSHell.)

Τέσ/πά.. αν θέλετε ντε και καλά FTP Server φτιάξτε τον να τελειώνουμε

Πώς;
Έτσι:

Εγκατάσταση του VerySecureFileTransferProtocolDaemon (με λίγα λόγια: vsftpd)


Για αρχή πρέπει να εγκαταστήσουμε αυτόν τον δαίμονα... που κάνει την "βρωμo-δουλειά"...
Ανοίγουμε ένα τερματικό (Εφαρμογές > Βοηθήματα > Τερματικό) και γράφουμε:

Κώδικας: Επιλογή όλων
sudo apt-get install vsftpd


Αφού η εγκατάσταση τελειώσει, πάμε παρακάτω..


Βασικές εντολές του vsftpd

Απλά τα πράματα...

Για εκκίνηση
Κώδικας: Επιλογή όλων
sudo /etc/init.d/vsftpd start


Για τερματισμό
Κώδικας: Επιλογή όλων
sudo /etc/init.d/vsftpd stop


Για επανεκκίνηση
Κώδικας: Επιλογή όλων
sudo /etc/init.d/vsftpd restart




Τροποποίηση του αρχείου ρυθμίσεων του δαίμονα

Το vsftpd σαν καλός δαίμονας που είναι έχει και configuration file, δηλαδή αρχείο ρυθμίσεων στο οποίο γράφονται διάφορες ρυθμίσεις που ορίζουν τον τρόπο λειτουργίας του εξυπηρετητή

Ε κι εγώ σαν καλό παιδί που είμαι θα πω δυο, άντε, τρία πράγματα γι αυτό

Καταρχήν.. θα κάνουμε ένα πίσωπάνω (backup) στο αρχείο αυτό γιατί μετά θα του αλλάξουμε τα φώτα... Αυτό το κάνουμε με την εντολή
Κώδικας: Επιλογή όλων
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old


Για να ανοίξουμε επιτέλους αυτό το αρχείο με τις ρυθμίσεις που ακούει στο όνομα vsftpd.conf πρέπει να δώσουμε την παρακάτω εντολή στο τερματικό

Κώδικας: Επιλογή όλων
sudo gedit /etc/vsftpd.conf


ε και απ' ότι είδατε, ανοίγει το gedit και γράφει κάτι βλακείες...
και μιας και είναι βλακείες δεν τα σβήνουμε; Άντε μπράβο...

Αφού τα σβήσουμε ξαναγράφουμε περίπου τα ίδια... αλλά αυτήν τη φορά όπως εμείς γουστάρουμε....
λοιπόν θα αναλύσουμε κάποιες βασικές εντολές που πρέπει να γράψουμε, για να ξέρουμε τι μας γίνεται!

listen => Ορίζει αν το vsftpd θα τρέχει ανεξάρτητο..... ή κάτι τέτοιο.. :P
max_clients => Ορίζει πόσοι χρήστες μπορούν να συνδεθούν ταυτόχρονα στον εξυπηρετητή
max_per_ip => Oρίζει πόσες συνδέσεις μπορεί να κάνει κάθε χρήστης στον εξυπηρετητή
ftpd_banner => Ορίζει ένα μύνημα που θα εμφανίζεται στον χρήστη όταν συνδέεται στον εξυπηρετητή
anonymous_enable => Ορίζει αν ο εξυπηρετητής θα δέχεται συνδέσεις από ανώνυμους χρήστες (στην ουσία οποιονδήποτε)
anon_root => Ορίζει τον κατάλογο τον οποίο θα βλέπει ο ανώνυμος χρήστης κατά την σύνδεση του (μπορεί να πάει μόνο σε υποκαταλόγους)
local_enable => Ορίζει αν επιτρέπεται να συνδεθεί κάποιος χρήστης που υπάρχει στον υπολογιστή
write_enable => Ορίζει αν θα επιτρέπεται οποιασδήποτε μορφής εγγραφή στον εξυπηρετητή (upload)
anon_upload_enable => Ορίζει αν θα επιτρέπεται το uploading αρχείων από ανώνυμους χρήστες
ls_recurse_enable => Ορίζει αν θα επιτρέπεται η εκτέλεση της εντολής ls -r για προβολή όλων των αρχείων που βρίσκονται σε έναν φάκελο (χαλάει πόρους)
tcp_wrappers => Ορίζει αν οι συνδέσεις θα περνάνε από ένα αρχείο το οποίο “αποφασίζει” αν επιτρέπεται να ή να μην πραγματοποιηθεί η σύνδεση
log_ftp_protocol => Ορίζει αν θα καταγράφονται οι συνδέσεις και οι εντολές που έχουν πραγματοποιηθεί σε ένα ξεχωριστό αρχείο
idle_session_timeout => Ορίζει το χρονικό διάστημα κατά το οποίο ένας χρήστης μπορεί να είναι συνδεδεμένος σε κατάσταση idle, δηλαδή ανενεργός
hide_ids => Εμφανίζει σαν ftp το group και τον user ενός φακέλου/αρχείου

Για περισσότερες εντολές και πληροφορίες για αυτές, γράψτε στο τερματικό man vsftpd.conf ή ρωτήστε εδώ.. για να σας πούμε

Αν θέλετε έναν anonymous only server το παρακάτω configuration με λίγες τροποποιήσεις (διαφορετικές για κάθε χρήστη) είναι καλό νομίζω...

listen=YES
max_clients=4
max_per_ip=1
ftpd_banner=Welcome to my FTP service.
anonymous_enable=YES
anon_root=/home/ftp/files/
local_enable=NO
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
hide_ids=YES
ls_recurse_enable=NO
tcp_wrappers=YES
log_ftp_protocol=YES
dual_log_enable=YES
xferlog_enable=YES
idle_session_timeout=60
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
dirmessage_enable=YES

Αν θέλετε έναν server που θα μπαίνετε εσείς σαν κανονικός χρήστης του υπολογιστή, πηγαίνετε σε ssh καλύτερα... Το ftp δεν κρυπτογραφεί τα δεδομένα ούτε τους κωδικούς...αντίθετα με το ssh, έτσι μπορείτε να την πάθετε απο 'κει που δεν το περιμένατε!


Port Forwarding

Για να δουλέψει ο εξυπηρετητής σας σωστά, πρέπει να ανοίξετε μια πόρτα του router σας έτσι ώστε να μπορούν να εισέρχονται οι συνδέσεις..
Η πόρτα που χρησιμοποιεί το FileTransferProtocol είναι η 21. Επομένως πρέπει να ανοίξετε την πόρτα 21 στο router σας.

- Πώς;
- Έτσι: http://www.portforward.com/english/appl ... Pindex.htm

Επιλέξτε το router σας από το παραπάνω site και έχει αναλυτικές οδηγίες για το πώς γίνεται το port forwarding..


Καταγραφές & Αποκλεισμός διευθύνσεων IP

Αν έχετε ορίσει το log_ftp_protocol=YES στο /etc/vsftpd.conf, τότε όλες οι προσπάθειες για σύνδεση ή για κατέβασμα αρχείων καταγράφονται

- Που;
- Εκεί: /var/log/vsftpd.log

Άν έχετε ορίσει και το xferlog_enable=YES , τότε φτιάχνεται ένα ξεχωριστό, πιο μικρό αρχείο που καταγράφει μόνο τις μεταφορές που έχουν πραγματοποιηθεί.

Οι καταγραφές, είναι πολύ χρήσιμες για να δείτε αν έχει γίνει κάποια απόπειρα ανεπιθύμητης σύνδεσης στον εξυπηρετητή και από ποια διεύθυνση

Μπορείτε να τις προβάλλετε με την εντολή

Κώδικας: Επιλογή όλων
sudo gedit /var/log/vsftpd.log


και

Κώδικας: Επιλογή όλων
sudo gedit /var/log/xferlog


Αν δείτε κάτι ύποπτο, όπως πολλές εσφαλμένες προσπάθειες για σύνδεση στον υπολογιστή ενώ ο εξυπηρετητής είναι anonymous only μπορείτε να αποκλείσετε την συγκεκριμένη διεύθυνση από το να επικοινωνεί με τον εξυπηρετητή.


Καταρχήν η διεύθυνση φαίνεται στην καταγραφή

π.χ. FTP command: Client "xx.xxx.xx.xxx"
(όπου xx η διεύθυνση IP)

Αν έχετε ορίσει το tcp_wrapping=YES στο /etc/vsftpd.conf τότε μπορείτε να αποκλείσετε μια διεύθυνση γράφοντας την στο αρχείο /etc/hosts.deny με ένα vsftpd: μπροστά

π.χ. vsftpd: xxx.xxx.xxx.xxx

Αν αντί για vsftpd: γράψετε ALL: τότε η διεύθηνση αυτή όχι απλά δεν θα μπορεί να επικοινωνεί πλέον με το vsftpd αλλά με όλο το σύστημα

Κώδικας: Επιλογή όλων
sudo gedit /etc/hosts.deny



Από την στιγμή που την γράψετε εκεί, δεν θα την ξαναδείτε στις καταγραφές του vsftpd λόγω του οτι την έχετε αποκλείσει από το να επικοινωνεί με τον εξυπηρετητή

Δυναμικές διευθύνσεις σε στατικό hostname

Όπως ίσως καταλάβατε ή ξέρατε, οι υπολογιστές επικοινωνούν μεταξύ τους μέσω των διευθύνσεων IP. Έτσι για να επικοινωνήσει κάποιος με τον εξυπηρετητή FTP που μόλις στήσαμε, πρέπει να γράψει στον browser του τη διεύθυνση IP σας. Αυτό είναι πρόβλημα όταν εμείς έχουμε δυναμική IP, δηλαδή IP που αλλάζει ανά τακτά χρονικά διαστήματα από τον πάροχο μας, γιατί όπως καταλαβαίνετε, αν έχετε πει σε έναν φίλο σας πως η διεύθυνση σας είναι λ.χ. 123.456.789.012 και αυτή τύχει την επόμενη μέρα και αλλάξει σε 012.345.67.89 ενώ ο εξυπηρετητής σας θα λειτουργεί κανονικά, ο φίλος σας θα προσπαθεί να συνδεθεί σε άλλον υπολογιστή που θα έχει εκείνη την ώρα την παλιά σας IP.

Τι κάνουμε λοιπόν;

Πάμε στο http://www.DynDNS.org και φτιάχνουμε λογαριασμό... και έπειτα hostname όπως μας λέει εκεί... Άν το router σας υποστηρίζει αυτήν την υπηρεσία, δηλώνετε και σε αυτό.. το hostname που διαλέξατε, και πλέον οι φίλοι σας θα συνδέονται γράφοντας αυτό αντί για την IP, το οποίο όμως στην ουσία μεταφράζεται στην δική σας IP..

Δείτε κι εδώ viewtopic.php?f=9&t=2036&st=0&sk=t&sd=a#p19503 που αναλύεται καλύτερα ο τρόπος.



Ε πάνω κάτω αυτά....

Ότι λάθος παρατηρήσατε, ή οποιοδήποτε πρόβλημα ή απορία έχετε, αφήστε post οπωσδήποτε

Εικόνα Copyleft 2008 Phantomas. All wrongs reserved.