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

Η διεπαφή, ο μηχανισμός και ο έλεγχος

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

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

Η ανάθεση είναι ο κανονικός σχεδιασμός

Η ανάθεση προνομιούχου δικτυακής εργασίας σε μια υπηρεσία είναι η λογική αρχιτεκτονική. Κρατά τις συνηθισμένες εφαρμογές χωρίς προνόμια και συγκεντρώνει τις λειτουργίες που χρειάζονται προσοχή. Ο σχεδιασμός αποδίδει μόνο όταν η υπηρεσία ελέγχει επίσης ποιος ρωτά και για τι. Χωρίς αυτόν τον έλεγχο είναι απλώς μια πιο φαρδιά πόρτα.

Το NetworkManager είναι το συγκεκριμένο παράδειγμα στο Linux. Ο οδηγός ρυθμίσεων του εξηγεί πώς το PolicyKit εξουσιοδοτεί αιτήματα που δεν προέρχονται από root στην προεπιλεγμένη ρύθμιση. Αυτό δείχνει ανατεθειμένη εξουσιοδότηση σε ένα πραγματικό προϊόν. Δεν αποδεικνύει ότι κάθε εμπορικός πελάτης χρησιμοποιεί το NetworkManager, και δεν περιγράφει τη διαδρομή υποδοχής ούτε την πολιτική κανενός συγκεκριμένου προμηθευτή.

Το μοτίβο είναι ανάθεση με μια πολιτική από πίσω. Το παράδειγμα είναι μία υλοποίηση αυτού του μοτίβου, όχι καθολική.

Διαβάστε το όριο, όχι την προτροπή

Βρείτε την υπηρεσία, τον ιδιοκτήτη της ρύθμισής της και την τοπική διεπαφή που χρησιμοποιεί το μέτωπο. Έπειτα ρωτήστε ποιοι χρήστες μπορούν να ζητήσουν ποιες λειτουργίες. Η δυνατότητα να ανεβάσετε και να κατεβάσετε ένα αποθηκευμένο προφίλ δεν είναι η ίδια άδεια με τη φόρτωση ρύθμισης που ο χειριστής δεν εξέτασε ποτέ. Η διαφορά είναι ολόκληρο το ζήτημα ασφαλείας.

Ξεκινήστε από τον διαχειριστή υπηρεσιών και από την άποψη του ίδιου του πελάτη για τις άδειές του. Οι εντολές παρακάτω δείχνουν αν ο δαίμονας εκτελείται, τι μπορεί να του ζητήσει ο καλών και τι εκθέτει ο δαίμονας κάτω από τον κατάλογο εκτέλεσής του.

systemctl status NetworkManager
nmcli general permissions
ls -l /run/NetworkManager

Ρωτήστε επίσης τι επηρεάζει η λειτουργία. Ένα στοιχείο μενού που φαίνεται προσωπικό μπορεί να αλλάξει διαδρομές και DNS για ολόκληρο το μηχάνημα, που σημαίνει ότι μπορεί να διαταράξει τις συνεδρίες άλλων χρηστών. Η ακτίνα επίπτωσης ανήκει στην ίδια εξέταση με την άδεια, και συνήθως αυτή αποφασίζει αν η υπηρεσία χρειάζεται στενότερο ρόλο.

Διορθώστε τις άδειες με τον υποστηριζόμενο τρόπο

Το να κάνετε ένα προστατευμένο υποδοχέα ελέγχου εγγράψιμο από όλους, ή να προσθέσετε λογαριασμό σε μια ευρεία διοικητική ομάδα, αφαιρεί ένα σφάλμα άδειας και δημιουργεί μεγαλύτερο. Το σφάλμα ήταν το μόνο που σας έλεγε ότι αυτό το όριο υπάρχει. Χρησιμοποιήστε τη τεκμηριωμένη διαδικασία μέλους ή εξουσιοδότησης, μαζί με την ανανέωση συνεδρίας που απαιτεί. Η ιδιότητα μέλους ομάδας συχνά ισχύει μόνο για νέες συνεδρίες σύνδεσης, γι' αυτό μια αλλαγή μπορεί να φαίνεται ότι δεν κάνει τίποτα μέχρι την επόμενη σύνδεση.

Αν το προϊόν εκθέτει στενότερο ρόλο για τη λειτουργία, προτιμήστε τον από μια γενική παραχώρηση. Γράψτε τον επιλεγμένο ρόλο και τον ιδιοκτήτη του δίπλα στο όνομα της υπηρεσίας.

Πώς μοιάζει ένας καλός διαχωρισμός

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

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

Σχετικά άρθρα