File Transfer Protocol
Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Το File Transfer Protocol (FTP), (ελληνικά: Πρωτόκολλο Μεταφοράς Αρχείων) είναι ένα ευρέως χρησιμοποιούμενο πρωτόκολλο σε δίκτυα τα οποία υποστηρίζουν το πρωτόκολλο TCP/IP (δίκτυα όπως internet ή intranet). Ο υπολογιστής που τρέχει εφαρμογή FTP client μόλις συνδεθεί με τον server μπορεί να εκτελέσει ένα πλήθος διεργασιών όπως ανέβασμα αρχείων στον server, κατέβασμα αρχείων από τον server, μετονομασία ή διαγραφή αρχείων από τον server κ.ο.κ. Το πρωτόκολλο είναι ένα ανοιχτό πρότυπο. Είναι δυνατό κάθε υπολογιστής που είναι συνδεδεμένος σε ένα δίκτυο, να διαχειρίζεται αρχεία σε ένα άλλο υπολογιστή του δικτύου, ακόμη και εάν ο δεύτερος διαθέτει διαφορετικό λειτουργικό σύστημα.
Πίνακας περιεχομένων |
[Επεξεργασία] Ιστορία
Οι πρώτοι κανόνες για ανάπτυξη μηχανισμών ανταλλαγής αρχείων απαντώνται το 1971, όταν αναπτύχθηκαν για χρήση στο M.I.T. Περιγράφονται στο RFC 114 και ακολουθούν σχόλια και συζητήση πάνω στο RFC 141. Αξίζει να αναφερθεί τo RFC 354, το οποίο αντικατέστησε τα ξεπερασμένα RFC 264 και RFC 265. Στο νέο RFC το FTP οριζόταν ως πρωτόκολλο ανταλλαγής αρχείων ανάμεσα σε hosts του δικτύου ARPANET. Πρωταρχικοί στόχοι του πρωτοκόλλου ήταν η εύκολη και αξιόπιστη μεταφορά αρχείων και η εύκολη αξιοποίηση των δυνατοτήτων για απομακρυσμένη αποθήκευση αρχείων.
Τελικά, δημοσιεύτηκε ένα επίσημο έγγραφο για το FTP στο RFC 454. Ακολούθησαν και άλλα επίσημα RFCs αλλά, αν και μέχρι τον Ιούλιο του 1973 είχαν γίνει σημαντικές αλλαγές από τις τελευταίες εκδόσεις του, η δομή του παρέμενε ίδια. Πολλές υλοποιήσεις (implementations) του πρωτοκόλλου βασίζονταν σε παλαιότερες μη ενημερωμένες εκδόσεις.
Όλες οι παραπάνω προσπάθειες για δημιουργία ενός πρωτοκόλλου μεταφοράς αρχείων σε συνδυασμό με την μετάβαση από το NCP στο TCP, οδήγησαν στην επανεγγραφή του FTP στο RFC 765 το 1980. Σήμερα το κυριότερο RFC για το FTP είναι το RFC 959 ένα κείμενο εξήντα σελίδων.
Σε μεταγενέστερα RFCs σχετικά με το FTP, είτε περιγράφηκαν αναλυτικότερα ορισμένα σημεία του RFC 959 (όπως στο RFC 1635), είτε έγιναν προτάσεις σχετικές με την ασφάλειά του (όπως στο RFC 1579 και στο RFC 2228.
[Επεξεργασία] Τρόπος λειτουργίας
Aρχικά ο FTP server ανοίγει την port 21 περιμένοντας έναν FTP client να συνδεθεί. Στη συνέχεια ο client ξεκινά μια νέα σύνδεση από μια τυχαία port προς την port 21 του server. Μόλις γίνει η σύνδεση παραμένει ανοιχτή για όλη τη διάρκεια της συνόδου FTP. Η συγκεκριμένη σύνδεση ονομάζεται control connection.
Έπεται η δημιουργία της data connection, της σύνδεσης με την οποία μεταφέρονται τα δεδομένα. Υπάρχουν δύο τρόποι για να δημιουργηθεί, με χρήση της active ή με χρήση της passive mode.
[Επεξεργασία] Active mode
Σε active mode, ο FTP client διαλέγει μια τυχαία port στην οποία δέχεται τα δεδομένα της σύνδεσης. Ο client στέλνει τον αριθμό της port, στην οποία επιθυμεί να "ακούει" (listen) για εισερχόμενες συνδέσεις. O FTP server δημιουργεί μια σύνδεση από την port 20 στην ανοιχτή port του client για τη μεταφορά των δεδομένων. Οποιαδήποτε πληροφορία ζητήσει ο client ανταλλάσσεται με βάση αυτή τη σύνδεση, που βασίζεται στο TCP. Όταν η μεταφορά ολοκληρωθεί ο server κλείνει τη σύνδεση αποστέλλοντας ένα πακέτο FIN, όπως σε κάθε σύνδεση βασισμένη στο TCP. Κάθε φορά που ο client ζητάει δεδομένα, δημιουργείται κατά παρόμοιο τρόπο μια data connection και η διαδικασία επαναλαμβάνεται.
[Επεξεργασία] Passive mode
Σε passive mode, ο client ζητά από το server να διαλέξει μια τυχαία port στην οποία θα "ακούει" (listen) για την data connection. Ο server ενημερώνει τον client για την port την οποία έχει διαλέξει και ο client συνδέεται σε αυτή για τη μεταφορά των δεδομένων. H μεταφορά ολοκληρώνεται όπως και στην active mode, αφού η data connection βασίζεται στο TCP.
[Επεξεργασία] Χρήση
Το FTP είναι ένα πρωτόκολλο πελάτη-εξυπηρετητή 8-bit, ικανό να χειρίζεται οποιδήποτε τύπο αρχείου χωρίς περαιτέρω επεξεργασία όπως δηλαδή κάνουν το MIME και το Uuencode. Ώστόσο το FTP έχει εξαιρετικά υψηλή λανθάνουσα κατάσταση (latency). Αυτό σημαίνει ότι ο χρόνος μεταξύ του αιτήματος και της διαδικασίας παραλαβής του είναι αρκετά μεγάλος και γι'αυτό μερικές φορές απαιτείται μεγάλη διαδικασία σύνδεσης.
[Επεξεργασία] Anonymous FTP
Το FTP επέτρεψε σε μια νέα κατηγορία χρηστών να εισέρχονται (login) στον FTP server. Οι χρήστες αυτοί δεν χρειάζεται να έχουν λογαριασμό, αντιθέτως χρησιμοποιούν έναν γενικής χρήσης. Ο λογαριασμός αυτός ονομάζεται "anonymous FTP" και δεν απαιτείται κωδικός πρόσβασης, συνήθως όμως χρησιμοποιείται κατά σύμβαση ο κωδικός "guest" ή η διεύθυνση ηλεκτρονικού ταχυδρομείου (e-mail) του χρήστη.
Η σύνδεση "anonymous", χρησιμοποιείται κυρίως για αρχεία που είναι ανοιχτά στο κοινό, σαν αποθήκη πληροφοριών (όπως λογισμικό, έγγραφα, εικόνες κλπ.) Συνήθως, με αυτό τον τρόπο παρέχεται πρόσβαση σε αρχειοθετημένες mailing lists. Οι χρήστες που εισέρχονται ως "anonymous" πρέπει να έχουν περιορισμένα δικαιώματα πρόσβασης σε αρχεία του host. Διαφορετικά, εαν μπορούν να διαβάσουν οποιοδήποτε αρχείο ή να δημιουργήσουν νέα, γεννιούνται προβλήματα ασφαλείας.
[Επεξεργασία] Ασφάλεια
Το FTP δεν σχεδιάστηκε με πρόνοια για ασφάλεια, με συνέπεια οι εφαρμογές να είναι ιδιαίτερα ευάλωτες και να εμφανίζονται ποικίλα προβλήματα κατά τη χρήση firewall ή NAT.
[Επεξεργασία] Προβλήματα NAT
Σε active mode, o FTP server ξεκινά μια data connection συνδεόμενος στην εξωτερική διεύθυνση IP της NAT gateway. Στην άλλη πλευρά, το μηχάνημα το οποίο είναι υπεύθυνο για τη "μετάφραση" των εσωτερικών διευθύνσεων IP του δικτύου στην εξωτερική, θα πάρει το SYN πακέτο για τη δημιουργία της σύνδεσης. Όμως, στον state table του ΝΑΤ, στον οποίο διατηρείται το ιστορικό μεταφράσεων δεν έχει καταγραφεί κανένα, με αποτέλεσμα το πακέτο να απορρίπτεται (γίνεται drop). To πακέτο δεν φτάνει ποτέ στον client, δεν σχηματίζεται data connection και η μεταφορά δεδομένων είναι αδύνατη.
Σε passive mode, επειδή η port στην οποία συνδεέται ο server είναι τυχαία, είναι πιθανόν να μην επιτρέπεται σύνδεση προς τον αριθμό της από το firewall. Σε αυτή την περίπτωση η data connection δε θα σχηματιστεί και επομένως δεν θα μεταφέρονται δεδομένα.
[Επεξεργασία] Έλλειψη κρυπτογράφησης
Τα δεδομένα που ανταλλάσσονται μέσω FTP δεν είναι κρυπτογραφημένα, με αποτέλεσμα οι εντολές που αποστέλλονται μέσω της control connection να είναι απλό κείμενο. Για το λόγο αυτό μπορούν εύκολα, με τη χρήση ενός sniffer, να αλιευθούν, να διαβασθούν και να ξανασταλούν ανάλογα με τη βούληση του επιτιθέμενου. Ανάμεσα σε αυτές, η εντολή που χρησιμοποιείται για να γίνει login σε ένα λογαριασμό FTP, με σύνταξη "PASS password", παρέχει στον επιτιθέμενο τον κωδικό του χρήστη. Αν συνδυαστεί με την εντολή "USER", με την οποία αποστέλεται το όνομα του χρήστη, ο επιτιθέμενος μπορεί να χρησιμοποιήσει τα στοιχεία για να εισέλθει στον ξένο λογαριασμό με τα ίδια δικαιώματα.
Επειδή οι περισσότεροι άνθρωποι τείνουν να επαναχρησιμοποιούν κωδικούς, ο επιτιθέμενος έχει αυξήσει τις πιθανότητες του σε μια brute-force attack. Με αυτό τον τρόπο, είναι πιθανό να αποκτήσει έλεγχο του συστήματος του χρήστη μόλις βρεί τη διεύθυνση IP του, ανιχνεύοντας την έναρξη της συνόδου FTP (FTP session).
[Επεξεργασία] Man-in-the-middle
Με το κύριο File Transfer Protocol, ο server δεν εξασφαλίζει ότι ο client είναι αυτός που λέει, ούτε ο client αντίστοιχα για τον server. Ευκολονόητο, εφόσον το FTP δεν απαιτεί επαλήθευση των hosts και δεν ελέγχει αν τα δεδομένα προέρχονται από αυτούς, ούτε τα προστατεύει. Για αυτό το λόγο και τα δύο άκρα που ανταλλάσουν δεδομένα, είναι ανοιχτά σε man-in-the-middle attacks από κάποιον επιτιθέμενο που συλλαμβάνει τα πακέτα του κάθε host, και στέλνει ψευδείς απαντήσεις.
[Επεξεργασία] Δείτε επίσης
SFTP
[Επεξεργασία] Εξωτερικοί σύνδεσμοι
- RFCs
- RFC 959 — File Transfer Protocol (FTP). J. Postel, J. Reynolds. Oct-1985. (Αγγλικά)
- RFC 1635 — How to Use Anonymous FTP (Αγγλικά)
- RFC 2228 — FTP Security Extensions (Αγγλικά)
- Άλλα κείμενα
- Active FTP vs. Passive FTP, a Definitive Explanation — Σύγκριση των δύο τρόπων μεταφοράς (Αγγλικά)
- FTP Reviewed — Παρουσίαση του πρωτοκόλλου με ειδική αναφορά για την ασφάλειά του. (Αγγλικά)
- PF: Issues with FTP — FTP και Packet Filter (Αγγλικά)