Η υπηρεσία OpenVPN σταματά στο αίτημα για τον κωδικό του ιδιωτικού κλειδιού: πώς διορθώνεται
Μια υπηρεσία δεν έχει τερματικό, άρα ένα κρυπτογραφημένο κλειδί χρειάζεται askpass και αναγνώσιμο αρχείο. Διαχωρίστε τη φράση του κλειδιού από τη σύνδεση στον διακομιστή και ελέγξτε τη μονάδα.
OpenVPN ζητά τη φράση του ιδιωτικού κλειδιού στον τοπικό υπολογιστή, οπότε ένα λειτουργικό αρχείο σύνδεσης δεν την απαντά ποτέ. Σε μια υπηρεσία δεν υπάρχει τερματικό για πληκτρολόγηση, και η εκκίνηση είτε κολλάει είτε αποτυγχάνει με μια καταχώριση στο ημερολόγιο που ονομάζει την είσοδο και όχι την αιτία. Εμπλέκονται δύο μυστικά, και το καθένα χρειάζεται τη δική του αναγνώσιμη πηγή πριν γίνει επανεκκίνηση της μονάδας. Η παρακάτω διαδρομή τα χωρίζει και μετά ελέγχει την ταυτότητα που ανοίγει πραγματικά κάθε αρχείο.
Ξεχωρίστε τα δύο αιτήματα
Η φράση του κλειδιού αποκρυπτογραφεί το τοπικό ιδιωτικό κλειδί· τα διαπιστευτήρια του λογαριασμού πιστοποιούν τη συνεδρία στον διακομιστή. Προέρχονται από διαφορετικά σημεία, αποτυγχάνουν σε διαφορετικές στιγμές και δίνουν διαφορετικά μηνύματα. Η σύγχυσή τους στέλνει τον κόσμο να ψάχνει επαναφορά κωδικού πρόσβασης, ενώ ο λογαριασμός δεν είχε καμία σχέση. Διαβάστε το κείμενο του αιτήματος πριν αλλάξετε οποιαδήποτε επιλογή, γιατί η διατύπωση είναι το μόνο αξιόπιστο στοιχείο για το ποιο μυστικό λείπει.
Στο Community OpenVPN 2.x το askpass ονομάζει αρχείο που κρατά τη φράση του κλειδιού στην πρώτη γραμμή, και το auth-user-pass αρχείο με το όνομα χρήστη σε μια γραμμή και τον κωδικό στην επόμενη. Κανένα από τα δύο αρχεία δεν ικανοποιεί την άλλη επιλογή. Μια εφαρμογή επιφάνειας εργασίας ή ένα προφίλ NetworkManager μπορεί να κρατά και τα δύο στο δικό του θησαυροφυλάκιο μυστικών, που ένας πελάτης γραμμής εντολών δεν διαβάζει ποτέ, οπότε σημειώστε ποιον πελάτη ρυθμίζετε πριν γράψετε οποιαδήποτε διαδρομή.
Στρέψτε και τις δύο επιλογές σε αναγνώσιμα αρχεία
Ένα προφίλ που χρειάζεται και τις δύο εισόδους καταλήγει με τρεις αναφορές αρχείων: το κρυπτογραφημένο κλειδί, τη φράση που το ξεκλειδώνει και το ζεύγος σύνδεσης. Προσθέστε τα χωρίς να αγγίξετε την CA ή τους ελέγχους ταυτότητας, γιατί αυτοί αποφασίζουν ποιος είναι ο διακομιστής και δεν ανήκουν σε αυτό το πρόβλημα. Αν η εγκατάσταση δεν χρησιμοποιεί καθόλου διαπιστευτήρια λογαριασμού, το auth-user-pass δημιουργεί είσοδο που κανείς δεν μπορεί να δώσει.
key /etc/openvpn/client/office.key
askpass /etc/openvpn/client/office-key.pass
auth-user-pass /etc/openvpn/client/office-login.authΟι επιλογές χωρίς όρισμα συμπεριφέρονται διαφορετικά από τις επιλογές με διαδρομή, και η διαφορά μετρά σε μια υπηρεσία. Ένα askpass χωρίς όρισμα διαβάζει ακόμη την κονσόλα, και ένα αρχείο auth-user-pass με μόνο όνομα χρήστη αφήνει ακόμη ένα αίτημα κωδικού σε αναμονή. Μόλις ο πελάτης γίνει δαίμονας δεν μπορεί καθόλου να ζητήσει είσοδο από τερματικό, οπότε μια υπηρεσία ρυθμισμένη έτσι δεν ξεκινά.
Οι απόλυτες διαδρομές αφαιρούν το ζήτημα του καταλόγου εργασίας αλλά δεν παρέχουν πρόσβαση. Ακολουθούν η ιδιοκτησία, η κατάσταση και η διέλευση, και τα τρία ελέγχονται με τον λογαριασμό υπό τον οποίο τρέχει η διεργασία.
Διαβάστε τη ρύθμιση της μονάδας πριν το προφίλ
Ποια ρύθμιση φορτώνει το στιγμιότυπο το αποφασίζει η μονάδα, όχι το αρχείο που επεξεργαζόσασταν. Διαβάστε τη γραμμή εντολών της και τυχόν drop-in, και μετά ακολουθήστε τον κατάλογο εργασίας έως το προφίλ που χρησιμοποιείται πραγματικά. Μια αναφορά φράσης που προστίθεται σε άλλο αρχείο .ovpn δεν αλλάζει τίποτα για αυτό το στιγμιότυπο.
Τρεις εντολές μόνο για ανάγνωση απαντούν στα περισσότερα. Η πρώτη εκτυπώνει τη μονάδα και τυχόν drop-in, η δεύτερη την ταυτότητα και τις ρυθμίσεις sandbox που δεσμεύουν τη διεργασία, και η τρίτη για τι παραπονέθηκε πραγματικά η τελευταία εκκίνηση. Χρησιμοποιήστε το όνομα στιγμιότυπου που υπάρχει στον κεντρικό υπολογιστή:
systemctl cat [email protected]
systemctl show [email protected] -p User -p Group -p WorkingDirectory -p ProtectHome
journalctl -u [email protected] -bΠροσέξτε το ProtectHome και τις δικές του επιλογές του προφίλ user, group και chroot. Ένα αρχείο κάτω από έναν κατάλογο χρήστη μπορεί να είναι αναγνώσιμο στο κέλυφός σας και αόρατο μέσα στην υπηρεσία όταν κρύβονται οι κατάλογοι χρήστη. Ο λογαριασμός με τον οποίο ξεκινά το systemd δεν είναι πάντα ο λογαριασμός που ανοίγει τελικά το κλειδί.
Αποδείξτε ότι η ταυτότητα εκτέλεσης ανοίγει και τα δύο αρχεία
Η ανάγνωση της κατάστασης δεν αρκεί, γιατί κάθε κατάλογος στη διαδρομή πρέπει να είναι διασχίσιμος από την ίδια ταυτότητα. Διαβείτε τη διαδρομή συστατικό προς συστατικό και μετά δοκιμάστε το άνοιγμα ως ο λογαριασμός που χρησιμοποιεί η διεργασία. Ένα αρχείο με κατάσταση 600 ιδιοκτησίας root λειτουργεί μόνο όσο η διεργασία είναι ακόμη root, κάτι που δεν ισχύει μετά την υποβάθμιση προνομίων που κάνουν πολλά προφίλ. Δύο εντολές καλύπτουν τη διέλευση και το άνοιγμα:
namei -l /etc/openvpn/client/office-key.pass
sudo -u openvpn test -r /etc/openvpn/client/office-key.pass && echo readableΗ πρώτη εντολή εκτυπώνει την κατάσταση κάθε συστατικού και αποτυγχάνει όπου ο λογαριασμός δεν μπορεί να διαβεί· η δεύτερη απαντά στο μόνο σημαντικό ερώτημα, αν δηλαδή η ταυτότητα εκτέλεσης μπορεί να ανοίξει το αρχείο για ανάγνωση. Καμία δεν εκτυπώνει περιεχόμενο αρχείου, και αυτό είναι το νόημα όταν το αρχείο κρατά φράση. Επαναλάβετε τη δοκιμή για το αρχείο σύνδεσης, γιατί τα δύο συχνά αποθηκεύονται με διαφορετική ιδιοκτησία.
Αν η διεργασία χρησιμοποιεί chroot ή περιορισμένο namespace, εκτελέστε την ίδια δοκιμή από μέσα σε αυτή την όψη, αλλιώς η απάντηση περιγράφει λάθος σύστημα αρχείων. Μια φράση αποθηκευμένη κάτω από κρυφό κατάλογο χρήστη είναι το συνηθισμένο παράδειγμα δοκιμής που περνά έξω από τη μονάδα και αποτυγχάνει μέσα της.
Ελέγξτε την πρώτη εκκίνηση και μετά μια επανασύνδεση
Ξεκινήστε το στιγμιότυπο μία φορά και διαβάστε την πρώτη αποτυχία, όχι την τελευταία. Ένα αρχείο εισόδου που λείπει, μια αποτυχημένη αποκρυπτογράφηση κλειδιού και ένα AUTH_FAILED από τον διακομιστή είναι τρία διαφορετικά γεγονότα με τρεις διαφορετικές επισκευές. Η διόρθωση μιας προειδοποίησης δικαιωμάτων δεν αποδεικνύει τίποτα για το αν ξεκλειδώθηκε το κλειδί.
Η γραμμή του ημερολογίου λέει ποιο από τα τρία έχετε. Η επισκευή προκύπτει από την είσοδο που απέτυχε:
| What the journal shows | Which input failed | Where to look |
|---|---|---|
| A path that cannot be opened | The file the profile names | Askpass or login path, and the unit's working directory |
| A key decryption error | The key passphrase | First line of the askpass file, and read access for the runtime identity |
AUTH_FAILED from the server | The account credentials | Login file contents, and whether the account is still valid |
Μετά δοκιμάστε τον κύκλο ζωής που πραγματικά χρειάζεστε: εκκίνηση στο boot και κάθε υποστηριζόμενη επανασύνδεση, όχι μόνο χειροκίνητη εκκίνηση από το κέλυφός σας. Με το auth-nocache οι είσοδοι απορρίπτονται μετά την πρώτη χρήση, άρα μια μεταγενέστερη επανασύνδεση χρειάζεται ακόμη αναγνώσιμη πηγή. Ένα κλειδί που ξεκλειδώνεται στη σύνδεση της επιφάνειας εργασίας δεν είναι διαθέσιμο σε υπηρεσία που ξεκίνησε πριν συνδεθεί κανείς, και αυτός είναι ο συνηθισμένος λόγος που μια χειροκίνητη δοκιμή περνά και μια επανεκκίνηση αποτυγχάνει. Αν η πρώτη εκκίνηση πετύχει και μια μεταγενέστερη επανασύνδεση αποτύχει, διαβάστε το ημερολόγιο για το γεγονός της επανασύνδεσης πριν αλλάξετε ξανά δικαιώματα.
Η αποθήκευση της φράσης δίπλα στο κλειδί μειώνει αυτό που σας δίνει η κρυπτογράφηση, οπότε περιορίστε το αρχείο και τα αντίγραφά του. Η αφαίρεση της φράσης του κλειδιού είναι ξεχωριστή απόφαση διαπιστευτηρίων, όχι επισκευή για είσοδο που λείπει. Μια εγκατάσταση που εξαρτάται από ανθρώπινη έγκριση ή διαδραστικό MFA χρειάζεται τον υποστηριζόμενο πράκτορα ή την ενσωμάτωση διαχείρισής της· ένας μόνιμα αποθηκευμένος κωδικός μίας χρήσης δεν είναι ισοδύναμη αντικατάσταση.