OpenVPN PAM: το όρισμα σύνδεσης είναι υπηρεσία, όχι χρήστης
Η λέξη μετά τη διαδρομή του πρόσθετου auth-pam επιλέγει μια στοίβα PAM. Διαβάστε αυτή τη στοίβα, βρείτε την πηγή λογαριασμών της και δοκιμάστε την με το pamtester πριν επεξεργαστείτε προφίλ.
Προστέθηκε ένας χρήστης στον διακομιστή, ο κωδικός πρόσβασης πληκτρολογήθηκε σωστά, και η σύνδεση εξακολουθεί να τελειώνει με AUTH_FAILED. Η γραμμή του πρόσθετου εξηγεί συνήθως το γιατί: η λέξη μετά τη διαδρομή του πρόσθετου είναι όνομα υπηρεσίας PAM, και αυτή καθορίζει ποια στοίβα μονάδων απαντά στην ερώτηση. Δεν είναι όνομα χρήστη και δεν είναι δείκτης σε αρχείο κωδικών που διαβάζει OpenVPN μόνο του.
Τι επιλέγει η δεύτερη λέξη
Η γραμμή διαμόρφωσης παίρνει μια διαδρομή πρόσθετου και ένα όρισμα:
plugin /usr/lib/openvpn/plugins/openvpn-plugin-auth-pam.so openvpnΑυτό το όρισμα περνά στη βιβλιοθήκη PAM ως όνομα υπηρεσίας, κάτι που κάνει τη στοίβα στο /etc/pam.d/openvpn αυτή που εκτελείται. Αν γράψετε εκεί login, παίρνετε αντ' αυτού την πολιτική διαδραστικής σύνδεσης, με όποιες μονάδες περιλαμβάνει αυτή η πολιτική στη διανομή σας.
Χρησιμοποιήστε τη διαδρομή πρόσθετου που παρέχει το εγκατεστημένο πακέτο, όχι μια διαδρομή αντιγραμμένη από άλλον κεντρικό υπολογιστή. Το όνομα αρχείου και ο κατάλογος διαφέρουν μεταξύ διανομών, και μια λανθασμένη διαδρομή αποτυγχάνει κατά την εκκίνηση με σφάλμα φόρτωσης πρόσθετου, όχι κατά τον έλεγχο ταυτότητας.
Από πού διαβάζει πραγματικά η στοίβα τους λογαριασμούς
Το PAM είναι διανομέας. Το αρχείο υπηρεσίας απαριθμεί τις μονάδες με σειρά, και η πρώτη που μπορεί να απαντήσει καθορίζει το αποτέλεσμα. Μια στοίβα που καλεί το pam_unix διαβάζει τοπικούς λογαριασμούς· μια στοίβα που καλεί μονάδα LDAP ή RADIUS στέλνει τα διαπιστευτήρια εντελώς αλλού.
Διαβάστε το αρχείο στο οποίο επιλύεται το όνομα υπηρεσίας, μαζί με ό,τι περιλαμβάνει:
cat /etc/pam.d/openvpn
grep -H pam_ /etc/pam.d/openvpn /etc/pam.d/common-authΑν η στοίβα αναθέτει σε έναν κατάλογο, η προσθήκη τοπικού λογαριασμού δεν αλλάζει τίποτα. Αν διαβάζει τοπικούς λογαριασμούς, η δημιουργία του χρήστη στον κατάλογο δεν αλλάζει τίποτα επίσης. Ο λογαριασμός πρέπει να υπάρχει εκεί όπου κοιτά η στοίβα, και αυτή είναι όλη η διάγνωση στις περισσότερες από αυτές τις αναφορές.
Μία προσπάθεια, δύο αρχεία καταγραφής
Συσχετίστε μία αποτυχημένη σύνδεση και στις δύο πλευρές. Το αρχείο καταγραφής του OpenVPN δείχνει το αποτέλεσμα του πρόσθετου και την απόρριψη του πελάτη· το αρχείο καταγραφής ελέγχου ταυτότητας του συστήματος δείχνει ποια μονάδα εκτελέστηκε και τι αποφάσισε. Το να τα διαβάζετε στο ίδιο χρονικό παράθυρο είναι αυτό που ξεχωρίζει ένα αρχείο υπηρεσίας που λείπει από ένα χρονικό όριο του backend. Ένα κενό στο αρχείο ελέγχου ταυτότητας σημαίνει ότι η στοίβα δεν προσεγγίστηκε καθόλου.
journalctl -u openvpn-server@server --since "-2 min"
journalctl -t sshd -t sudo --since "-2 min"Δοκιμάστε την υπηρεσία απευθείας με ένα βοηθητικό πρόγραμμα που μιλά PAM, ώστε να μην εντοπίζετε σφάλματα στο VPN και τη στοίβα ταυτόχρονα. Μια επιτυχημένη άμεση δοκιμή με το ίδιο όνομα υπηρεσίας και λογαριασμό περιορίζει το πρόβλημα στον τρόπο με τον οποίο ο δαίμονας περνά τα διαπιστευτήρια, όχι στον ίδιο τον λογαριασμό.
pamtester openvpn alice authenticateΑν η άμεση δοκιμή αποτύχει με τα ίδια διαπιστευτήρια που λειτουργούν σε κονσόλα, η στοίβα δεν διαβάζει την πηγή λογαριασμών που υποθέσατε. Αν πετύχει, δείτε τη συνομιλία που εκτελεί το πρόσθετο και τι έστειλε πραγματικά ο πελάτης. Εκτελέστε την και μία φορά με σκόπιμα λάθος κωδικό, ώστε να δείτε τη διαφορά μεταξύ άρνησης και σφάλματος μονάδας. Αυτά τα δύο αποτελέσματα φαίνονται ίδια στο αρχείο καταγραφής του VPN και εντελώς διαφορετικά εδώ.
Μια αποκλειστική υπηρεσία υπερτερεί της επεξεργασίας της σύνδεσης
Δώστε στο VPN δικό του αρχείο υπηρεσίας όταν οι απαιτήσεις του διαφέρουν από τη διαδραστική σύνδεση, όπως συμβαίνει συνήθως. Η επεξεργασία του login ή του common-auth αλλάζει την πολιτική για κάθε πρόγραμμα που τα περιλαμβάνει, και το επόμενο άτομο που θα εντοπίσει σφάλματα σε ένα άσχετο πρόβλημα σύνδεσης θα κληρονομήσει την αλλαγή σας.
Αντιγράψτε τις μονάδες που χρειάζεστε σε ένα μικρό αρχείο υπηρεσίας, κρατήστε τη σειρά ρητή και σημειώστε ποιος το κατέχει. Αυτό το αρχείο είναι αυτό που ελέγχεται όταν μια επαναφορά κωδικού φαίνεται να μην έχει αποτέλεσμα.
Τι στέλνει ο πελάτης και τι δεν στέλνει
Ο πελάτης παρέχει όνομα χρήστη και κωδικό μέσω της υποστηριζόμενης προτροπής ή αρχείου του. Το πρόσθετο του διακομιστή περνά αυτές τις τιμές στη συνομιλία PAM· δεν τις διαβάζει από τη διαμόρφωση του διακομιστή. Μια γραμμή στην πλευρά του διακομιστή που φαίνεται να ορίζει κωδικό δεν το κάνει, και καμία επεξεργασία προφίλ δεν θα δημιουργήσει λογαριασμό.
Το όνομα χρήστη και ο κωδικός μπορούν να συνυπάρχουν με πιστοποιητικά πελάτη, και η ενεργοποίηση του PAM δεν είναι λόγος να σταματήσετε να επαληθεύετε πιστοποιητικά. Διατηρήστε τα επίπεδα που προέβλεπε η ανάπτυξη και διορθώστε μόνο την πηγή λογαριασμών.
Η αποδοχή είναι αμφίδρομη: ο προβλεπόμενος λογαριασμός πετυχαίνει, και ένας λογαριασμός που θα έπρεπε να απορριφθεί εξακολουθεί να αποτυγχάνει. Το αρχείο README του πρόσθετου auth-pam τεκμηριώνει το όρισμα υπηρεσίας και τα backend που μπορεί να εξυπηρετήσει, και εκεί είναι το σημείο για να επιβεβαιώσετε τη διάταξη που προσπαθείτε να φτιάξετε.