FTP: Πρωτόκολλο Μεταφοράς Αρχείων και Θύρες 20 και 21
Το FTP (File Transfer Protocol) είναι πρωτόκολλο δικτύου για τη μεταφορά αρχείων μεταξύ ενός client και ενός server. Χρησιμοποιείται για upload, download και διαχείριση αρχείων σε απομακρυσμένα συστήματα. Η επικοινωνία του FTP βασίζεται σε δύο ξεχωριστές συνδέσεις: μία για τις εντολές και μία για τα δεδομένα.
Σημαντικό: το απλό FTP δεν κρυπτογραφεί από προεπιλογή τα credentials ή τα δεδομένα. Για ασφαλή μεταφορά προτίμησε FTPS ή SFTP, ανάλογα με το τι υποστηρίζει ο server.
Θύρες και συνδέσεις FTP
| Θύρα | Πρωτόκολλο / χρήση | Περιγραφή |
|---|---|---|
| TCP 21 | FTP Control | Σύνδεση ελέγχου: εντολές, αυθεντικοποίηση και απαντήσεις server. |
| TCP 20 | FTP Data (Active mode) | Χρησιμοποιείται ως source port του server για τη σύνδεση δεδομένων στον ενεργό τρόπο λειτουργίας. |
| TCP 990 | Implicit FTPS | Συνηθισμένη προεπιλεγμένη θύρα για FTP over TLS με κρυπτογράφηση από την αρχή της σύνδεσης. |
| TCP 21 | Explicit FTPS | Ξεκινά ως FTP και αναβαθμίζεται σε TLS με την εντολή AUTH TLS. |
| TCP 22 | SFTP over SSH | Ανεξάρτητο πρωτόκολλο μεταφοράς αρχείων μέσω SSH· δεν είναι FTP και δεν χρησιμοποιεί τις θύρες 20/21. |
Πώς λειτουργεί το FTP;
Ο FTP client συνδέεται στον server και δημιουργεί πρώτα τη σύνδεση ελέγχου (control connection). Μέσω αυτής στέλνει εντολές, όπως σύνδεση χρήστη, αλλαγή καταλόγου, εμφάνιση αρχείων, λήψη και αποστολή αρχείων. Για τη μεταφορά των ίδιων των αρχείων δημιουργείται ξεχωριστή σύνδεση δεδομένων (data connection).
Active και Passive FTP
Active mode (ενεργή λειτουργία)
Ο client ανοίγει τη σύνδεση ελέγχου προς την TCP 21 του server και δηλώνει τη θύρα στην οποία θα δεχτεί τη σύνδεση δεδομένων. Ο server ξεκινά τη σύνδεση δεδομένων από την TCP 20 προς τον client. Αυτό μπορεί να δημιουργήσει προβλήματα όταν ο client βρίσκεται πίσω από NAT ή firewall που δεν επιτρέπει εισερχόμενες συνδέσεις.
Passive mode (παθητική λειτουργία)
Ο client ζητά από τον server να διαθέσει μια θύρα δεδομένων. Ο server επιστρέφει τη θύρα και ο client ξεκινά δεύτερη εξερχόμενη σύνδεση προς αυτήν. Η λειτουργία αυτή είναι συνήθως πιο φιλική σε NAT και firewalls client, γι’ αυτό χρησιμοποιείται ευρέως σε σύγχρονους FTP clients.
Σε passive mode ο server πρέπει να έχει ρυθμισμένο εύρος θυρών δεδομένων και το firewall/NAT του server να επιτρέπει την πρόσβαση σε αυτό το εύρος. Δεν χρησιμοποιείται υποχρεωτικά η TCP 20 για τα δεδομένα.
FTP, FTPS και SFTP: διαφορές
| Πρωτόκολλο | Κρυπτογράφηση | Συνήθης θύρα | Τεχνολογία |
|---|---|---|---|
| FTP | Όχι από προεπιλογή | TCP 21 | Ξεχωριστές συνδέσεις ελέγχου και δεδομένων. |
| FTPS | Ναι, μέσω TLS | TCP 21 ή 990 | FTP με κρυπτογράφηση TLS. |
| SFTP | Ναι, μέσω SSH | TCP 22 συνήθως | Ανεξάρτητο πρωτόκολλο μεταφοράς αρχείων μέσω SSH. |
Το FTPS είναι επέκταση του FTP με TLS, ενώ το SFTP λειτουργεί πάνω από SSH και έχει διαφορετικό τρόπο λειτουργίας. Η επιλογή εξαρτάται από τις δυνατότητες του server και τις απαιτήσεις ασφάλειας.
Σύνδεση με FTP client
Ένας δημοφιλής client είναι το FileZilla. Κατά τη δημιουργία σύνδεσης συμπλήρωσε το hostname του server, το πρωτόκολλο, τη θύρα και τα στοιχεία σύνδεσης που σου έχουν δοθεί. Για ασφαλή σύνδεση επίλεξε FTPS ή SFTP, εφόσον υποστηρίζεται από τον server, και έλεγξε το πιστοποιητικό ή το SSH host key πριν αποδεχτείς τη σύνδεση.
Έλεγχος σύνδεσης και διάγνωση
Σε Linux μπορείς να ελέγξεις αν η TCP 21 είναι προσβάσιμη με την εντολή:
nc -vz ftp.example.com 21
Σε Windows PowerShell μπορείς να χρησιμοποιήσεις:
Test-NetConnection ftp.example.com -Port 21
Ο επιτυχής έλεγχος της TCP 21 επιβεβαιώνει μόνο ότι είναι δυνατή η σύνδεση στη συγκεκριμένη θύρα. Δεν αποδεικνύει ότι λειτουργεί και το κανάλι δεδομένων. Αν η σύνδεση ελέγχου λειτουργεί αλλά η λίστα αρχείων ή η μεταφορά αποτυγχάνει, έλεγξε το Active/Passive mode, το εύρος passive ports και τους κανόνες firewall/NAT του server.
Βασικές πρακτικές ασφάλειας
- Απόφυγε το απλό FTP μέσω μη έμπιστων δικτύων, επειδή credentials και δεδομένα μπορούν να μεταδοθούν χωρίς κρυπτογράφηση.
- Προτίμησε SFTP ή FTPS και επιβεβαίωσε το SSH host key ή το TLS certificate.
- Περιόρισε την πρόσβαση στις θύρες ελέγχου και δεδομένων με firewall και allowlists όπου είναι δυνατό.
- Χρησιμοποίησε ξεχωριστούς λογαριασμούς με τα ελάχιστα απαραίτητα δικαιώματα και περιόρισε τους καταλόγους στους οποίους έχουν πρόσβαση.
- Απενεργοποίησε ανώνυμη πρόσβαση και μη χρησιμοποιούμενους λογαριασμούς, εκτός αν υπάρχει συγκεκριμένη ανάγκη.
- Κράτησε τον FTP server ενημερωμένο και έλεγχε τα logs για αποτυχημένες ή ασυνήθιστες συνδέσεις.