file sharing!

Konstantinos Togias ktogias at math.upatras.gr
Mon Nov 24 16:25:46 GMT 2008


2008/11/24 Nikos Alexandris <nikos.alexandris at uranus.uni-freiburg.de>:
> On Sun, 2008-11-23 at 21:42 +0200, Konstantinos Togias wrote:
>> 2008/11/23 Nikos Alexandris <nikos.alexandris at uranus.uni-freiburg.de>:
>> > On Sat, 2008-11-22 at 22:34 +0200, Konstantinos Togias wrote:
>> >> 2008/11/22 Nikos Alexandris <nikos.alexandris at uranus.uni-freiburg.de>:
>> >> > On Fri, 2008-11-21 at 20:56 +0200, apix wrote:
> [...]
>> >> > Ερώτηση 1η: Γιατί μας τα κάνει δύσκολα το gnome?
> [...]
>> > Με προβληματίζει το γεγονός ότι ούτε το gftp δεν δουλεύει.
> [...]
>
>> Έχω κάποιες ισχυρές υποψίες ότι το πρόβλημα οφείλεται στις ρυθμίσεις
>> του ftp server ή κάποιου firewall που κόβει τις εισερχόμενες συνδέσεις
>> στις > 1023 port του server. Το όλο μπάχαλο οφείλεται στο γεγονός ότι
>> για να επιτευχθεί μια ftp σύνδεση απαιτείται η διασύνδεση πελάτη και
>> εξυπηρετητή μέσω δύο διαδικτυακών θυρών του εξυπηρετητή, της 21 για
>> την ανταλλαγή εντολών και της  20 ή κάποιας > 1023 για την ανταλλαγή
>> δεδομένων. Υπάρχουν δύο μέθοδοι σύνδεσης η ACTIVE και η PASSIVE.
>
>>  Η
>> ACTIVE είναι η default που χρησιμοποιεί η εφαρμογή κονσόλας ftp,
>> εμπλέκει τις θύρες 20 και 21 του server και απαιτεί να μην κόβονται
>> από κάποιο firewall οι εισερχόμενες συνδέσεις σε θύρες > 1023 του
>> client.
>
> ACTIVE mode: "απαιτεί να μην κόβονται
>> από κάποιο firewall οι εισερχόμενες συνδέσεις σε θύρες > 1023"
>
>> H PASSIVE mode αναπτύχθηκε για να αντιμετωπίσει περιπτώσεις
>> όπου ο client είναι πίσω από κάποιο firewall που δεν του επιτρέπει να
>> δέχεται εισερχόμενες συνδέσεις σε θύρες > 1023. Αντίθετα απαιτεί το
>> firewall του server να επιτρέπει εισερχόμενες συνδέσεις προς τον
>> server σε θύρες > 1023.
>
> PASSIVE mode: "απαιτεί το
>> firewall του server να επιτρέπει εισερχόμενες συνδέσεις προς τον
>> server σε θύρες > 1023"
>
> Αν καταλαβαίνω σωστά και οι δυο μέθοδοι θέλουν/απαιτούν *ανοιχτά* ports
>> 1023. Σωστά; Δεν υπάρχει δηλαδή διαφορά μεταξύ active-passive σχετικά
> με τις θύρες > 1023;

ACTIVE mode: Ο client ξεκινά μια σύνδεση από μια δικιά του τυχαία N >
1023 port στην 21 port του server. Αυτή είναι μια εισερχόμενη σύνδεση
προς την port 21 για τον server. Η σύνδεση  ( Client N <--> Server 21)
 εγκαθιδρύεται (είναι πλέον μια ήδη ανοικτή υπάρχουσα σύνδεση) και ο
server απαντά μέσω αυτής ότι όλα ΟΚ μέχρι εδώ. Ο client ανοίγει την
δική του πόρτα N+1 και περιμένει για εισερχόμενες συνδέσεις σε αυτή.
Μέσω της ήδη υπάρχουσας σύνδεσης ( Client N <---> Server 21 ) ο Client
πληροφορεί το server ότι για την αποστολή και λήψη δεδομένων
χρησιμοποιεί την πόρτα Ν+1 (μέσω της εντολής PORT N+1). Ο Server τότε
ξεκινά μια νέα σύνδεση από τη δικιά του πόρτα 20 (η 20 είναι
προκαθορισμένη από το πρωτόκολλο ως η θύρα που χρησιμοποιείται από τη
μεριά του server για την επικοινωνία δεδομένων) στην πόρτα N+1 του
client. Αυτή η σύνδεση είναι μια εισερχόμενη προς την τυχαία θύρα N+1
του client. Ο client λαμβάνει την αίτηση για τη νέα σύνδεση στην πόρτα
Ν+1, η νέα σύνδεση (Server 20 <---> Client N+1 ) εγκαθιδρύεται και
αρχίζει η ανταλλαγή δεδομένων.

Το πρόβλημα εδώ είναι ότι ο client δεν πρέπει να βρίσκεται πίσω από
firewall που να κόβει τις εισερχόμενες συνδέσεις (αυτές δηλαδή που δεν
έχουν ξεκινήσει από το εσωτερικό του δίκτυο, αλλά έρχονται από έξω ως
νέες αιτήσεις σύνδεσης) από την πόρτα 20 του server (ή οποιοδήποτε
υπολογιστή αν θέλουμε να μπορούμε να συνδεθούμε σε οποιοδήποτε ftp
server) προς την τυχαία πόρτα N+1 (N > 1023) του client. Πολλά
εταιρικά ή οικιακά firewall δεν είναι ρυθμισμένα να επιτρέπουν τέτοιου
είδους συνδέσεις, μια και αυτές θα μπορούσαν να χρησιμοποιηθούν από
κακόβουλο λογισμικό που υποκρίνεται ότι είναι ένας ftp server που
θέλει να κάνει data connection από την 20 πόρτα του σε κάποια N > 1024
του προστατευόμενου υπολογιστή. Αν στον προστατευόμενο έχει ήδη
εγκατασταθεί ένα rootkit ή κάτι άλλο χωρίς να το γνωρίζει ο χρήστης,
και τέτοιου είδους εισερχόμενες συνδέσεις επιτρέπονται, τότε ο
επιτιθέμενος μπορεί να χρησιμοποιήσει ανεμπόδιστα μια τέτοια σύνδεση
για να αποκτήσει μη εξουσιοδοτημένη πρόσβαση στο προστατευμένο
μηχάνημα του χρήστη.

PASSIVE mode:

O client ξεκινά όπως και στην ACTIVE mode μια σύνδεση από μια δικιά
του τυχαία N > 1023 port στην 21 port του server. Αυτή είναι μια
εισερχόμενη σύνδεση προς την port 21 για τον server. Η σύνδεση  (
Client N <--> Server 21)  εγκαθιδρύεται (είναι πλέον μια ήδη ανοικτή
υπάρχουσα σύνδεση) και ο server απαντά μέσω αυτής ότι όλα ΟΚ μέχρι
εδώ. Αντί τώρα ο client να ανοίξει μια δεύτερη δική του πόρτα και να
πει στον server να συνδεθεί σε αυτή, λέει στο server μέσω της ήδη
υπάρχουσας σύνδεσης  ( Client N <--> Server 21) ότι θέλει να
χρησιμοποιήσει PASSIVE mode στέλνοντας την εντολή PASV. O server τότε,
εφόσον υποστηρίζει PASSIVE mode, ανοίγει μια δικιά του πόρτα P > 1023,
στην οποία περιμένει εισερχόμενες συνδέσεις, και ενημερώνει τον client
(μέσω της ήδη υπάρχουσας Client N <--> Server 21 σύνδεσης) ότι πρέπει
να συνδεθεί σε αυτή την πόρτα για επικοινωνία δεδομένων. Ο client τότε
ξεκινά μια νέα σύνδεση από την τυχαία δικιά του Ν+1 πόρτα στην τυχαία
P πόρτα του server.  Ο server λαμβάνει την αίτηση για τη νέα σύνδεση
στην πόρτα P, η νέα σύνδεση (Client N+1 <---> Server P ) εγκαθιδρύεται
και αρχίζει η ανταλλαγή δεδομένων.

Όπως γίνεται φανερό στην περίπτωση της PASSIVE mode και οι 2 συνδέσεις
που πραγματοποιούνται μεταξύ Server και Client ξεκινάνε από τον
client. Αυτό επιτρέπει την επικοινωνία ακόμα και όταν ο client
βρίσκεται πίσω από firewall που κόβει όλες τις νέες εισερχόμενες προς
αυτόν συνδέσεις προκειμένου να τον προστατέψει από επιθέσεις. Η άλλη
όψη όμως του νομίσματος είναι ότι πλέον και οι δυο συνδέσεις είναι
νέες εισερχόμενες για τον server. Έτσι ο server πρέπει να βρίσκεται
πίσω από firewall που δεν κόβει τις εισερχόμενες στις > 1023 πόρτες
συνδέσεις από όλο κάθε υπολογιστή προς τον server. Ο λόγος που
προτιμάται αυτή η μέθοδος είναι ότι ο server τρέχει συγκεκριμένο ια
ελεγχόμενο software, ενώ επιθεωρείται τακτικά από τον διαχειριστή του,
οπότε διατρέχει πολύ λιγότερο κίνδυνο από εισερχόμενες συνδέσεις σε
πόρτες > 1024 από ότι ο υπολογιστής-client που συνήθως είναι το pc
ενός υχαίου απλού χρήστη που κανεις δεν ξέρει τι λογιαμικό τρέχει, και
τι ιούς, trojans και rookits μπορεί να έχει κολλήσει.

Οι περισσότεροι σύγχρονοι ftp clients επιχειρούν πρώτα να
δημιουργήσουν μια PASSIVE mode σύνδεση με τον server. Του στέλνουν την
εντολή PASV και αν αυτός απαντήσει με PORT P καταλαβαίνουν ότι
υποστηρίζει PASSIVE mode επιχειρούν να συνδεθούν στην πόρτα P. Αν τα
καταφέρουν τότε όλα καλώς. Το ερώτημα είναι τι γίνεται αν δεν τα
καταφέρουν. Πιθανότατα η αίτηση για σύνδεση κάνει timeout ή
απορρίπτεται, οπότε παίρνεις ένα Unable to connect και τέλος. Βέβαια,
αν στην εντολή PASV ο server απαντήσει ότι δεν υποστηρίζει ή επιτρέπει
PASSIVE mode, τότε πιθανότατα ο client (ανάλογα με τις ρυθμίσεις του)
δοκιμάζει ACTIVE mode. Αν δεν τα καταφέρει ούτε με active mode τότε
πάλι παίρνεις Unable to connect.

Η προβληματική κατάσταση στα παραπάνω (και κατα τη γνώμη μου
πιθανότατα η περίπτωσή σου) είναι αυτή που ο server απαντά ότι μπορεί
να χρησιμοποιήσει PASSIVE mode, στέλνει την πόρτα P στον client, αλλά
τα πακέτα από τον client πρός την P του server δεν φτάνουν ποτέ στον
προορισμό τους, με αποτέλεσμα να αποτυγχάνει η σύνδεση. Αυτό μπορεί να
λυθεί με 3 πιθανούς τρόπους:

1. Ο καλός: Να ρυθμιστεί το firewall/router πίσω από το οποίο είναι ο
server να επιτρέπει εισερχόμενες συνδέσεις προς τον server για τις
μεγάλες (>1023) πόρτες.

2. O κακός: Να ρυθμιστεί ο server έτσι ώστε να απορρίπτει τις αιτήσεις
για PASSV mode. Έτσι ελπίζουμε ότι ίσως οι clients δοκιμάσουν active
mode, αντι να αναρωτιούνται τι γίνονται τα πακέτα που στέλνουν μέσω
PASSIVE.

3. Ο άσχημος: Να ρυθμίσεις τον client σου (αν ρυθμίζεται) να μην
δοκιμάζει πρώτα PASSIVE mode , αλλά να την πέφτει με την μία ACTIVEly
στον server, όπως κάνει το παλιό κλασσικό command line ftp. (Και λέω
αυτόν άσχημο, γιατί πάλι αν πας σε άλλο client που είναι ρυθμισμένος
αλλιώς οπότε θα προσπαθεί PASSIVE mode ή βρεθείς κάποια στιγμή πίσω
από ένα αυστηρό firewall πάλι δεν θα μπορείς να συνδεθείς στον server
αφού το ACTIVE θα το κόβει το δικό σου firewall και το passive το δικό
του, ενώ παράλληλα θα έχεις ρυθμίσει τον client σου σε μη default
λιγότερο ασφαλείς ρυθμίσεις.)

Έχεις αρχίσει να μισείς ήδη το FTP πρωτόκολλο; Δεν είσαι ο μόνος... Τα
προβλήματα αυτά εξανεμίζονται, αφήνοντάς σου μόνο ένα ακόμα bonus,
αυτό της από άκρη σε άκρη κρυπτογραφημένης σύνδεσης, αν
χρησιμοποιήσεις sftp/scp αντί του απαρχαιωμένου πλέον ftp.


>
>>  Για περισσότερες λεπτομέρειες για το πως
>> γίνεται η επικοινωνία ftp μεταξύ client και server και τι διαφορές
>> έχει το passive από το active mode, δες εδώ:
>> http://www.slacksite.com/other/ftp.html .
> (Συγγνώμη, δεν διάβασα με προσοχή τον σύνδεσμο που έδωσες).
> [...]
>
> Ο διαχειριστής ή μάλλον δεν ξέρει πολλά ή δεν θέλει να μου πει πολλά.
> Δεν βλέπω το λόγο όμως να μην θέλει να μου πει.
>
> Μου απάντησε ότι δεν γνωρίζει που είναι το πρόβλημα. Χρησιμοποιούνε
> TotalCommander και δεν έχουν πρόβλημα (!!). Γιατί δεν λειτουργεί,
> γράφει, με linux-clients δεν μπορεί να μου το πεί ( :-) ). Δεν έκανα
> κάποιες ειδικές ρυθμίσεις, μου γράφει.
>
> Φιλικά, Νίκος
>
>
> --
> Ubuntu-gr mailing list
> Ubuntu-gr at lists.ubuntu.com
>
> If you do not want to receive any more messages from the ubuntu-gr mailing list, please follow this link and choose unsubscribe:
> https://lists.ubuntu.com/mailman/listinfo/ubuntu-gr
>



-- 
Konstantinos Togias
Dipl.-Math., M.Sc.
Research Academic Computer Technology Institute


More information about the Ubuntu-gr mailing list