Βασικές Έννοιες

6.3 Ασφάλεια στα X Windows

6.3.1 Εισαγωγή

Τα X Windows είναι πολύ διαδεδομένα ανάμεσα στους χρήστες διαφορετικών λειτουργικών συστημάτων. Το client/server μοντέλο διαχείρισης εφαρμογών που χρησιμοποιούν επιτρέπει τη δυναμική και ευέλικτη χρήση των ηλεκτρονικών υπολογιστών. Εάν ωστόσο τα X Windows δεν τύχουν σωστής διαχείρισης μπορούν να δημιουργήσουν σοβαρά προβλήματα ασφάλειας.

6.3.2 Λειτουργία των X Windows

Ίσως να φαίνεται λίγο παράξενο το ότι ένα γραφικό περιβάλλον αλληλεπίδρασης μπορεί να δημιουργήσει κάποιο σοβαρό πρόβλημα στην ασφάλεια. Για να κατανοήσουμε πώς αυτό γίνεται ας δούμε πώς ακριβώς δουλεύουν τα X Windows.

Τα X Windows είναι στην πραγματικότητα και στο χαμηλότερο επίπεδό τους ένα πρωτόκολλο επικοινωνίας το οποίο λέγεται "X" πρωτόκολλο. Αυτό το πρωτόκολλο χρησιμοποιείται σε έναν υπολογιστή ή σε ένα δίκτυο υπολογιστών. Δεν είναι "δεμένο" στο λειτουργικό σύστημα και για αυτό είναι διαθέσιμο σε πολλές διαφορετικές πλατφόρμες. Τα X Windows ενεργοποιούν ένα client/server δικτυακό μοντέλο επικοινωνίας. Αυτό το μοντέλο επιτρέπει σε ένα χρήστη να τρέχει ένα πρόγραμμα σε μια τοποθεσία αλλά να το ελέγχει από κάποια άλλη.

Αντίθετα προς τη κλασσική σύμβαση λειτουργίας των client/server εφαρμογών, ο χρήστης δουλεύει άμεσα στον X server ο οποίος του προσφέρει την οθόνη, το πληκτρολόγιο και το mouse. Αναφερόμαστε σε αυτό σαν τον server διότι αυτό γεννάει τις εισόδους και διαχειρίζεται τις εξόδους των clients. X clients είναι εφαρμογές όπως οι xterm, emacs και xclock (λαμβάνουν και επεξεργάζονται εισόδους και παράγουν εξόδους).

Τις περισσότερες φορές οι ο server και clients τρέχουν στον ίδιο υπολογιστή (host). Ωστόσο το X πρωτόκολλο είναι πολύ ευέλικτο και επιτρέπει πολλές διαφορετικές διαμορφώσεις. Στην πραγματικότητα ένα "X" τερματικό είναι μια οθόνη χωρίς καμιά υπολογιστική δυνατότητα. Το μόνο πράγμα που μπορεί να κάνει είναι να επεξεργάζεται μηνύματα του "X" πρωτοκόλλου τα οποία έρχονται από clients που τρέχουν σε άλλα συστήματα. Ακόμα και αν ο server τρέχει σε κάποιον υπολογιστή-host ένας client μπορεί να θελήσει να τρέξει σε κάποιον απομακρυσμένο host ακόμα και αν αυτός βρίσκεται σε κάποια άλλη χώρα.

Το ερώτημα βέβαια είναι ποια η σχέση όλων αυτών με την ασφάλεια. Από τη στιγμή που πολλαπλοί clients τρέχουν σε στον ίδιο server θα πρέπει να παρακολουθείται η μεταξύ τους επικοινωνία διότι εάν κάποιος client είναι σε θέση να στείλει πληροφορία σε κάποιον άλλο ή να αιχμαλωτίσει άλλη που προορίζεται για κάποιον άλλο, τότε το σύστημα μπορεί να έχει πρόβλημα.

6.3.3 Απροστάτευτα X Windows

Μερικά παραδείγματα επικοινωνίας μεταξύ του X server και του X client περιλαμβάνουν τα ακόλουθα:

Κάθε client που έχει πρόσβαση στον server μπορεί να αποκτήσει πρόσβαση στις X επικοινωνίες και να τις τροποποιήσει. Αυτό μπορεί να περιλαμβάνει τα ακόλουθα:

Όπως φαίνεται από τα παραπάνω παραδείγματα οι X servers είναι πολύ επίφοβοι και ειδικά γιατί η αρχική τους ρύθμιση τους κάνει προσβάσιμους από παντού.

6.3.4 Λύσεις Ασφάλειας

Υπάρχουν δύο διαφορετικές προσεγγίσεις όσον αφορά την ασφάλιση των X servers.

    1. Host Authentication - επιτρέπει την αποδοχή μιας σύνδεσης βασιζόμενη στην προέλευσή της (IP διεύθυνση του υπολογιστή που ζητάει τη σύνδεση). Όταν πλέον ο χρήστης πάρει πρόσβαση στον X server τότε αυτός είναι ανοικτός σε συνδέσεις από οποιονδήποτε υπολογιστή. Το πρόγραμμα που λέγεται xhost διαχειρίζεται, σε επίπεδο host-by-host, το ποιοι hosts μπορούν να εμφανίζουν clients στον X server. Αυτό επιτυγχάνεται με τη διατήρηση μιας λίστας από hosts στους οποίους παρέχεται ή όχι πρόσβαση. Η απλή αυτή μορφή πιστοποίησης αποτελεί τόσο το πλεονέκτημα όσο και το μειονέκτημά της. Βέβαια οι περισσότεροι hosts υποστηρίζουν πολλαπλούς χρήστες και έτσι είναι αδύνατο να καθορισθεί το ποιοι χρήστες σε έναν συγκεκριμένο host έχουν δικαίωμα πρόσβασης.
    2. Token Authentication - η δεύτερη προσέγγιση είναι η πιστοποίηση κάθε client η οποία βασίζεται στο token που αυτός προσφέρει. Χρησιμοποιώντας ένα πρόγραμμα που ονομάζεται xauth, κάθε client παραλαμβάνει ένα "magic cookie" το οποίο είναι μια τυχαία τιμή που πρέπει να προσφέρει στον X server για να του επιτραπεί η πρόσβαση.

Το πρόγραμμα xhost έχει μεγαλύτερη προτεραιότητα από το token authentication.

Βασικές Έννοιες