Άδεια αναζήτησης σε κάθε κατάλογο πριν από το κλειδί
Ένα κλειδί μπορεί να είναι 0600 και να αρνείται να ανοίξει όταν ένας γονικός κατάλογος μπλοκάρει τη διέλευση. Ελέγξτε ολόκληρη τη διαδρομή ως λογαριασμός υπηρεσίας πριν αλλάξετε οποιαδήποτε λειτουργία.
Η λειτουργία 0600 και ο σωστός ιδιοκτήτης δεν εγγυώνται ότι η υπηρεσία μπορεί να ανοίξει ένα κλειδί. Η άδεια που λείπει βρίσκεται συνήθως σε κατάλογο πιο πάνω. Το Linux επιλύει μια διαδρομή ένα συστατικό τη φορά, και κάθε βήμα χρειάζεται άδεια αναζήτησης πριν δοκιμαστεί το επόμενο. Διαβάστε ολόκληρη τη διαδρομή, όχι την τελευταία γραμμή της λίστας.
Η άδεια ανάγνωσης είναι το τελευταίο βήμα, όχι το μόνο
Το άνοιγμα ενός αρχείου απαιτεί από τον πυρήνα να διασχίσει από τη ρίζα ή τον κατάλογο εργασίας κάθε συστατικό της διαδρομής. Ένας κατάλογος χωρίς άδεια αναζήτησης σταματά αυτή τη διάσχιση με σφάλμα άδειας. Η λειτουργία του ίδιου του αρχείου δεν εξετάζεται ποτέ, οπότε ένα απολύτως αναγνώσιμο κλειδί φαίνεται μη αναγνώσιμο. Το σφάλμα εμφανίζεται συχνά τη στιγμή του ανοίγματος χωρίς να ονομάζει τον κατάλογο, και γι’ αυτό κατηγορείται το τελευταίο αρχείο.
Για έναν κατάλογο, το bit εκτέλεσης σημαίνει αναζήτηση, όχι εκτέλεση του περιεχομένου. Ένα κλειδί παραμένει δεδομένα, και κανένα μέρος αυτής της επισκευής δεν απαιτεί να σημειωθεί ως εκτελέσιμο.
Διασχίστε τη διαδρομή ως λογαριασμός υπηρεσίας
Καταγράψτε κάθε συστατικό με τον ιδιοκτήτη και τη λειτουργία του, και επαναλάβετε την ανάγνωση ως η πραγματική ταυτότητα της υπηρεσίας. Η διαφορά ανάμεσα στο κέλυφός σας και στον δαίμονα είναι συχνά ολόκληρη η απάντηση. Ακολουθήστε τους συμβολικούς δεσμούς προς τον πραγματικό στόχο, γιατί η επιλυμένη διαδρομή είναι αυτή που ελέγχεται.
namei -l /etc/openvpn/client/office.key
sudo -u vpn-reader stat -c '%A %U:%G %n' /etc/openvpn/client/office.key
Μια υπηρεσία μπορεί επίσης να ανοίγει αρχεία σε περισσότερες από μία φάσεις. Κάποιο υλικό διαβάζεται κατά τη διάρκεια της προνομιακής ρύθμισης, ενώ άλλα αρχεία ανοίγουν αφού απορριφθούν τα προνόμια. Ένα κέλυφος root που διαβάζει το αρχείο δεν αναπαράγει την πρόσβαση του μεταγενέστερου εργάτη. Ένας χώρος ονομάτων προσάρτησης μπορεί να παρουσιάσει διαφορετική όψη της ίδιας διαδρομής, ειδικά μέσα σε ένα κοντέινερ, γι’ αυτό συγκρίνετε την όψη του συστήματος αρχείων του δαίμονα με τη δική σας.
Αλλάξτε την πιο στενή άδεια που αρκεί
Επιλέξτε τη μικρότερη ρύθμιση που δίνει πρόσβαση στη διεργασία: μια ελεγχόμενη ομάδα με αναζήτηση στους απαραίτητους καταλόγους, μια διαχειριζόμενη θέση που η υπηρεσία κατέχει ήδη, ή έναν άλλο τεκμηριωμένο μηχανισμό. Η ανάγνωση ενός αρχείου δεν απαιτεί άδεια εγγραφής στον κατάλογό του. Η ευρεία άδεια εγγραφής ομάδας σε προνομιακή διαμόρφωση δεν είναι συνήθης επισκευή διέλευσης. Το αναδρομικό 0777 επίσης δεν είναι λύση.
Καταγράψτε ποιο συστατικό αλλάξατε και γιατί. Μια αλλαγή άδειας χωρίς καταγεγραμμένο λόγο είναι δύσκολο να ελεγχθεί και εύκολο να ξεχαστεί.
Κοιτάξτε πέρα από τις λειτουργίες μόνο μετά τη διάσχιση
Αν τα bits λειτουργίας φαίνονται αρκετά, οι υπόλοιποι έλεγχοι είναι ACL, πολιτική ασφαλείας και περιορισμοί sandbox. Ένα ACL μπορεί να δώσει πρόσβαση που τα bits λειτουργίας υποδηλώνουν ως απούσα, ή να αρνηθεί πρόσβαση που φαίνεται να επιτρέπουν. Αυτές οι ρυθμίσεις ανήκουν στον υπάρχοντα ιδιοκτήτη της διαμόρφωσης και πρέπει να προσαρμόζονται στενά αντί να απενεργοποιούνται. Μια διαφορά ρίζας ή καταλόγου εργασίας μπορεί επίσης να εξηγήσει μια απόλυτη διαδρομή που λειτουργεί σε ένα περιβάλλον και αποτυγχάνει σε άλλο.
Μην χάσετε την εικόνα του τι είναι το αρχείο όσο διορθώνετε την πρόσβαση. Ένα πιστοποιητικό CA είναι δημόσιο εξ ορισμού, ένα ιδιωτικό κλειδί δεν είναι. Τα αρχεία που ξαναγράφει ο πελάτης χρειάζονται επίσης διαφορετικά δικαιώματα εγγραφής από ένα κλειδί ταυτότητας που είναι μόνο για ανάγνωση. Ελέγξτε τα μεταδεδομένα χωρίς να εκτυπώσετε μυστικά, και στη συνέχεια επιβεβαιώστε ότι η ίδια η υπηρεσία λειτουργεί μετά την αλλαγή. Μια σύντομη σημείωση στην τεκμηρίωση της υπηρεσίας γλιτώνει από το ίδιο πέρασμα τον επόμενο άνθρωπο.