Το κουμπί VPN χρειάζεται sudo: περιόρισε τον κανόνα, επικύρωσε την πολιτική
Ένα κουμπί στην επιφάνεια εργασίας δεν είναι λόγος για root χωρίς κωδικό. Έλεγξε αν μπορεί ο διαχειριστής δικτύου, περιόρισε μία εντολή και μετά επικύρωσε όλη την πολιτική sudo.
Το κουμπί VPN λειτουργεί για τον διαχειριστή και αποτυγχάνει για όλους τους άλλους, οπότε κάποιος προσθέτει μια γραμμή στο sudoers. Αυτή η γραμμή συνήθως ζει περισσότερο από το πρόβλημα που έπρεπε να λύσει και συχνά δίνει περισσότερα απ’ όσα χρειάζεται το κουμπί. Πριν επεξεργαστείς την πολιτική, έλεγξε αν ο υποστηριζόμενος ιδιοκτήτης της σύνδεσης μπορεί ήδη να κάνει τη δουλειά. Οι τρεις παρακάτω συνθήκες αποφασίζουν αν το sudo εμπλέκεται καθόλου.
Συνθήκη 1: ο υποστηριζόμενος ιδιοκτήτης μπορεί να το κάνει χωρίς sudo
Στις περισσότερες επιφάνειες Linux ο διαχειριστής δικτύου κατέχει ήδη τις συνδέσεις VPN και η εξουσιοδότησή του περνά από το polkit και όχι από το sudo. Ένας χρήστης που του επιτρέπεται να σηκώσει μια σύνδεση μπορεί να το κάνει από τη γραμμή εντολών χωρίς κανέναν κανόνα root. Έλεγξε τι επιτρέπει ο διαχειριστής πριν υποθέσεις ότι το κουμπί χρειάζεται προνόμιο. Αν η απάντηση είναι ναι, η αλλαγή στο sudoers λύνει ένα πρόβλημα που δεν υπάρχει.
nmcli connection show
nmcli connection up "Work VPN"
Αν ο διαχειριστής αρνείται, διάβασε γιατί: ένας κανόνας polkit που λείπει, μια σύνδεση που ανήκει σε άλλον χρήστη ή ένα προφίλ αποθηκευμένο εκεί όπου ο χρήστης δεν μπορεί να το διαβάσει. Κάθε ένα από αυτά έχει υποστηριζόμενη λύση στενότερη από έναν κανόνα sudo. Η κλιμάκωση προνομίων είναι η τελευταία λύση, όχι η πρώτη.
Συνθήκη 2: ο κανόνας ονομάζει ένα εκτελέσιμο και τα ορίσματά του
Αν το sudo είναι πραγματικά απαραίτητο, ο κανόνας θα πρέπει να ονομάζει την ακριβή εντολή και, όπου είναι δυνατόν, τα ορίσματα που επιτρέπεται να χρησιμοποιεί. Ένας κανόνας που επιτρέπει σε έναν χρήστη να εκτελεί ένα σκριπτ περιτυλίγματος είναι τόσο ασφαλής όσο τα δικαιώματα αυτού του σκριπτ, επειδή ο χρήστης μπορεί να αλλάξει τι θα εκτελέσει το root. Ένας κανόνας με μπαλαντέρ μετά την εντολή είναι το ίδιο πρόβλημα σε συντομότερη μορφή.
sudo -l -U alice
ls -l /usr/local/sbin/vpn-up
Έλεγξε κάθε διαδρομή στην αλυσίδα της εντολής: το δυαδικό, το σκριπτ που καλεί, το αρχείο ρυθμίσεων που διαβάζει και κάθε κατάλογο ενδιάμεσα. Αν οποιοδήποτε από αυτά είναι εγγράψιμο από τον χρήστη, ο περιορισμένος κανόνας είναι στην πράξη root χωρίς περιορισμούς. Τα ορίσματα μετρούν επίσης, επειδή μια εντολή που δέχεται διαδρομή ρυθμίσεων μπορεί να στραφεί σε ένα αρχείο που ελέγχει ο χρήστης. Γράψε τον κανόνα για τη λειτουργία, όχι για το κουμπί.
Σταμάτα αν η εντολή χρειάζεται ένα αρχείο που ελέγχει ο χρήστης για να δουλέψει. Τότε ο σχεδιασμός είναι λάθος και καμία σύνταξη sudoers δεν θα το κάνει ασφαλές.
Συνθήκη 3: ολόκληρη η πολιτική αναλύεται, όχι μόνο η γραμμή σου
Επικύρωσε με τον επεξεργαστή που κλειδώνει το αρχείο και ελέγχει τη σύνταξη, και επικύρωσε τη συναρμολογημένη πολιτική και όχι ένα απόσπασμα. Ένα αρχείο που αναλύεται μόνο του μπορεί ακόμη να σπάσει τη σειρά συμπερίληψης ή να διπλασιάσει έναν κανόνα με τρόπο που αλλάζει τη συμπεριφορά.εγχειρίδιο visudo τεκμηριώνει και τον επεξεργαστή κλειδώματος και τη λειτουργία μόνο ελέγχου που χρησιμοποιείται εδώ.
sudo visudo -c
sudo visudo -cf /etc/sudoers.d/vpn-launcher
Ο έλεγχος αναφέρει το αρχείο και τη γραμμή όταν αποτυγχάνει, και αυτή η αναφορά είναι το χρήσιμο μέρος. Επισκεύασε την προβλεπόμενη αλλαγή μέσω του επεξεργαστή αντί να αποθηκεύσεις με τη βία ένα γνωστό σφάλμα, επειδή μια χαλασμένη πολιτική μπορεί να κλειδώσει όλους τους διαχειριστές ταυτόχρονα. Τα αρχεία στον κατάλογο συμπερίληψης χρειάζονται επίσης την ιδιοκτησία και τη λειτουργία που απαιτεί το εγχειρίδιο, αλλιώς θα αγνοηθούν ή θα απορριφθούν. Η σύνταξη είναι μόνο η πρώτη πύλη: αφού περάσει, διάβασε ξανά τον κανόνα και ρώτα τι επιτρέπει πραγματικά.
Σταμάτα αν ο μόνος τρόπος να δουλέψει η αλλαγή είναι να απενεργοποιήσεις τον έλεγχο σύνταξης. Αυτό δεν είναι πολιτική, είναι διακοπή που περιμένει επανεκκίνηση.
Ανάκτηση: κράτησε μια συνεδρία που ακόμη λειτουργεί
Πριν αποθηκεύσεις, βεβαιώσου ότι μια εξουσιοδοτημένη διοικητική συνεδρία είναι ήδη ανοιχτή και ότι υπάρχει δεύτερη διαδρομή στο μηχάνημα. Ένα λάθος στο sudoers μπορεί να σου αφαιρέσει τη δυνατότητα να το διορθώσεις, και ένα κουμπί στην επιφάνεια εργασίας δεν αξίζει αυτόν τον κίνδυνο. Αν το sudo είναι ήδη χαλασμένο, χρησιμοποίησε την τεκμηριωμένη διαδρομή ανάκτησης του συστήματος αντί να αυτοσχεδιάσεις μία.
sudo -n true
id
Εναλλακτικές όπως το pkexec εξαρτώνται από τη δική τους εγκατάσταση και πολιτική, οπότε δεν είναι εγγυημένο δεύτερο αίτημα root. Κράτησε την τοπική εξουσιοδότηση χωριστά και από την παροχή του μυστικού VPN: ένας κανόνας sudo δεν μπορεί να ξεκλειδώσει έναν απόντα πράκτορα μυστικών και δεν ικανοποιεί το MFA της πύλης. Μετά τη διόρθωση, δοκίμασε τον κανονικό λογαριασμό εκτελώντας μόνο την προβλεπόμενη λειτουργία και μετά χρησιμοποίησε τα συνήθη χειριστήρια του διαχειριστή.
Η απόφαση τελειώνει όταν μπορείς να πεις ποια συνθήκη δικαιολόγησε το sudo, τι ονομάζει ο κανόνας, ότι ολόκληρη η πολιτική αναλύεται και πώς θα ανακτούσες αν δεν συνέβαινε. Ένας προνομιούχος εκκινητής που σου κοστίζει τη διοικητική πρόσβαση είναι κακή ανταλλαγή και συνήθως είναι αποφεύξιμη.