Το κλειδί VPN σας είναι αναγνώσιμο από όλους: τι να διορθώσετε
Ένα ιδιωτικό κλειδί πρέπει να είναι αναγνώσιμο μόνο από την υπηρεσία που το χρησιμοποιεί και από κανέναν άλλο. Διορθώστε τη λειτουργία, βρείτε τα αντίγραφα και αλλάξτε το κλειδί αν το αρχείο εκτέθηκε.
Το πρώτο σημάδι είναι συνήθως μια προειδοποίηση, όχι βλάβη. Ένας πελάτης αρνείται να φορτώσει κλειδί επειδή το αρχείο είναι αναγνώσιμο από την ομάδα ή από όλους, ή ένας έλεγχος ασφαλείας βρίσκει client.key με άδεια 644 σε κατάλογο προφίλ που περιέχει και εξαγμένα πακέτα. Τίποτα δεν έχει αποτύχει ακόμη, και γι' αυτό ακριβώς η προειδοποίηση αγνοείται. Το κλειδί λειτουργεί, η σήραγγα σηκώνεται και το αρχείο είναι αναγνώσιμο από κάθε λογαριασμό στο μηχάνημα.
Το σύμπτωμα είναι προειδοποίηση δικαιωμάτων, όχι διακοπή
Σε σύστημα τύπου Unix, ένα ιδιωτικό κλειδί πρέπει να είναι αναγνώσιμο μόνο από τον λογαριασμό που εκτελεί την υπηρεσία. Η άδεια 600 με τον σωστό ιδιοκτήτη είναι η συνηθισμένη διάταξη. Η άδεια 644 σημαίνει ότι κάθε τοπικός χρήστης μπορεί να αντιγράψει το κλειδί, και σε κοινόχρηστο build host αυτό είναι πραγματικό κοινό.
Οι πελάτες που το ελέγχουν σας κάνουν χάρη. Όσοι δεν το ελέγχουν δεν αποτελούν απόδειξη ότι το αρχείο είναι ασφαλές, και μια επιτυχής σύνδεση δεν λέει τίποτα για το ποιος άλλος μπορεί να διαβάσει το υλικό που την κατέστησε δυνατή. Αντιμετωπίστε την προειδοποίηση ως ολόκληρο το εύρημα. Είναι ακριβής και έφτασε πριν αντιγράψει κανείς το αρχείο.
Ταιριάξτε την άδεια με την ταυτότητα της υπηρεσίας
Η πρόσβαση μόνο για τον ιδιοκτήτη ταιριάζει σε κλειδί που χρησιμοποιεί αυτός ο ιδιοκτήτης. Μια υπηρεσία με σκόπιμα κοινόχρηστη ομάδα μπορεί να χρειάζεται άλλη ελεγχόμενη διάταξη, όπως ανάγνωση ομάδας σε κλειδί που ανήκει σε λογαριασμό υπηρεσίας. Η τυφλή τοποθέτηση κάθε αρχείου σε μία αριθμητική άδεια σπάει τους υποστηριζόμενους πελάτες, και το chmod -R 777 δεν είναι λύση για τίποτα.
Ελέγξτε τον ιδιοκτήτη και τον λογαριασμό υπηρεσίας πριν αλλάξετε οτιδήποτε. Τα δημόσια πιστοποιητικά CA και τα ιδιωτικά κλειδιά ταυτότητας έχουν διαφορετικές απαιτήσεις μυστικότητας ακόμη και όταν βρίσκονται στον ίδιο κατάλογο, οπότε μια αναδρομική άδεια σε όλο τον φάκελο τα αντιμετωπίζει ως το ίδιο αντικείμενο.
ls -l /etc/openvpn/client/
stat -c '%U %G %a %n' /etc/openvpn/client/*.key
id openvpn
Σε άλλες πλατφόρμες, χρησιμοποιήστε το τεκμηριωμένο χώρο κλειδιών ή το μοντέλο ελέγχου πρόσβασης αντί να μεταφράζετε τις άδειες Unix σε εικασία. Ένα όνομα αρχείου που τελειώνει σε private είναι ετικέτα, όχι μηχανισμός επιβολής.
Βρείτε τα αντίγραφα που δεν καλύπτει η άδεια
Επεξεργαστές, αρχεία αντιγράφων ασφαλείας, εξαγμένα προφίλ και προσωρινά πακέτα μπορούν καθένα να διατηρήσει την ίδια ταυτότητα. Προστατέψτε αυτά τα αντίγραφα ανάλογα με το περιεχόμενό τους, γιατί το σφίξιμο του αρχικού αρχείου δεν κάνει τίποτα για εκείνο στο tar του περασμένου μήνα.
Μια φράση πρόσβασης σε αρχείο κλειδιού είναι χρήσιμη για αποθηκευμένο υλικό και δεν δικαιολογεί τη δημοσίευση του κρυπτογραφημένου αρχείου δίπλα στον κωδικό του. Τα δικαιώματα προστατεύουν το τρέχον αντικείμενο του συστήματος αρχείων· δεν λένε τίποτα για διαπιστευτήριο που έχει ήδη αντιγραφεί αλλού.
Αναζητήστε τα αντίγραφα πριν δηλώσετε την εργασία ολοκληρωμένη: grep -rl τη γραμμή κεφαλίδας του κλειδιού σε πιθανούς καταλόγους και μια ματιά στις εξαιρέσεις αντιγράφων. Το αποτέλεσμα είναι συνήθως πιο ενδιαφέρον από το αρχείο με το οποίο ξεκινήσατε.
Μετά τη διόρθωση, επαληθεύστε και αλλάξτε
Δοκιμάστε ότι η προβλεπόμενη υπηρεσία εξακολουθεί να πιστοποιείται και μετά επιβεβαιώστε ότι κανένας περιττός λογαριασμός δεν απέκτησε πρόσβαση. Περιορίστε την έξοδο διαγνωστικών σε μεταδεδομένα, γιατί η εκτύπωση του κλειδιού δεν χρειάζεται για να αποδειχθεί ότι το αρχείο είναι αναγνώσιμο και βάζει το υλικό σε αρχείο καταγραφής.
Αν το κλειδί εκτέθηκε, σφίξτε την άδεια και μετά αντικαταστήστε το διαπιστευτήριο και ανακαλέστε το παλιό. Η προδιαγραφή POSIX chmod εξηγεί τι σημαίνει κάθε bit άδειας, κάτι που αξίζει να ξέρετε πριν ο επόμενος έλεγχος σας ζητήσει να δικαιολογήσετε τον αριθμό που επιλέξατε.