Κρατήστε κάθε λογαριασμό σε θέση να συνδέεται κανονικά, αλλά επιτρέψτε μόνο σε μία ομάδα να χρησιμοποιεί το VPN. Το PAM μπορεί να εκφράσει αυτή τη διαφορά χωρίς δεύτερη αποθήκη κωδικών πρόσβασης, και το πρόσθετο OpenVPN μπορεί να στραφεί σε μια υπηρεσία που περιέχει μόνο τους ελέγχους που σκοπεύετε. Το κόλπο είναι να χτίσετε αυτή την υπηρεσία χωρίς να κληρονομήσετε κατά λάθος μια στοίβα σε επίπεδο συστήματος.

Η περιήγηση εδώ ξεκινά από το όνομα υπηρεσίας του πρόσθετου, χτίζει μια πολιτική και έπειτα δοκιμάζει τα τρία αποτελέσματα που μετράνε: ένα μέλος, έναν εξωτερικό με έγκυρο κωδικό πρόσβασης και μια κακή πιστοποίηση.

Γιατί ξεχωριστή υπηρεσία PAM

Το πρόσθετο auth-pam παίρνει ένα όνομα υπηρεσίας ως όρισμά του. Αυτό το όνομα επιλέγει ένα αρχείο κάτω από το /etc/pam.d, και η στοίβα σε αυτό το αρχείο είναι αυτό που εκτελείται κατά τη σύνδεση στο VPN. Αν περάσετε το ίδιο όνομα που χρησιμοποιεί μια σύνδεση σε επίπεδο συστήματος, κληρονομείτε κάθε απόφαση σε αυτή τη στοίβα, συμπεριλαμβανομένων όσων προστέθηκαν αργότερα για άσχετους λόγους.

Δημιουργήστε αντ' αυτού μια αποκλειστική υπηρεσία. Ξεκινήστε από μια λειτουργική στοίβα που ήδη πιστοποιεί στο προβλεπόμενο backend, όπως ένα τοπικό αρχείο κωδικών πρόσβασης, το SSSD ή μια υπηρεσία καταλόγου, και έπειτα προσθέστε τον κανόνα επιλεξιμότητας. Η αντιγραφή δύο γραμμών σε ένα κενό αρχείο είναι το συνηθισμένο λάθος: η λήξη του κωδικού πρόσβασης, το κλείδωμα λογαριασμού και άλλοι έλεγχοι μπορεί να βρίσκονται στη στοίβα που δεν αντιγράψατε.

Ο διαχωρισμός της υπηρεσίας περιορίζει επίσης την έκταση της ζημιάς. Ένας κανόνας μόνο για VPN σε μια κοινόχρηστη στοίβα μπορεί να αρνηθεί πρόσβαση SSH ή κονσόλας σε όλους, πράγμα που μετατρέπει μια αλλαγή πρόσβασης σε διακοπή.

Γράφοντας τον κανόνα της ομάδας

Ο έλεγχος επιλεξιμότητας ανήκει στη φάση λογαριασμού, αφού επαληθευτεί η πιστοποίηση. Ένας κανόνας όπως account required pam_succeed_if.so user ingroup vpnusers επιτρέπει στην επεξεργασία να συνεχίσει μόνο όταν ο πιστοποιημένος χρήστης είναι μέλος αυτής της ομάδας.

Αυτή η γραμμή είναι απόσπασμα, όχι πλήρης υπηρεσία. Ενσωματώστε την εκεί όπου φτάνει κάθε αποδεκτή διαδρομή και ελέγξτε τις σημαίες ελέγχου γύρω της. Ένας έλεγχος sufficient ή άλματος νωρίτερα στη στοίβα μπορεί να τερματίσει την επεξεργασία πριν εκτελεστεί ο κανόνας σας, πράγμα που μετατρέπει τον περιορισμό σε πρόταση.

Μην προσθέτετε το use_uid από συνήθεια. Χωρίς αυτό, η μονάδα αξιολογεί τον χρήστη που πιστοποιείται· με αυτό, η μονάδα αξιολογεί τον λογαριασμό υπό τον οποίο εκτελείται η διεργασία OpenVPN, που είναι συνήθως root ή λογαριασμός υπηρεσίας και επομένως όχι το άτομο που συνδέεται.

Η ιδιότητα μέλους ομάδας προέρχεται από την επίλυση ταυτότητας του συστήματος, όχι από ένα όνομα που αναγνωρίζετε. Για χρήστες καταλόγου, επιβεβαιώστε ότι το ίδιο backend απαντά σε ερωτήματα ομάδας για αυτόν τον χρήστη, επειδή μια τοπική ομάδα με γνωστό όνομα είναι διαφορετικό αντικείμενο από την ομάδα καταλόγου με το ίδιο όνομα.

Παγίδες σειράς και ταυτότητας

Τοποθετήστε τον κανόνα της ομάδας μετά τη στοίβα πιστοποίησης και μετά από κάθε έλεγχο που πρέπει να εξακολουθεί να ισχύει, αλλά πριν ή δίπλα στους ελέγχους λογαριασμού που διατηρείτε. Το PAM αξιολογεί τις μονάδες με τη σειρά του αρχείου, και η τιμή ελέγχου σε κάθε γραμμή καθορίζει αν μια αποτυχία είναι τελική.

Προσέξτε τις διπλές στοίβες. Ένα συνηθισμένο μοτίβο είναι μια συμπερίληψη που περιέχει ήδη έναν κανόνα λογαριασμού, ακολουθούμενη από τον δικό σας κανόνα ομάδας, που παράγει δύο αποφάσεις εκεί που περιμένατε μία. Διαβάστε το συμπεριλαμβανόμενο αρχείο, όχι μόνο αυτό που επεξεργαστήκατε. Ένας γρήγορος τρόπος να δείτε την πραγματική σειρά είναι να διαβάσετε το αρχείο από πάνω προς τα κάτω και να σημειώσετε κάθε τιμή ελέγχου.

Κρατήστε τις άλλες απαιτήσεις εισόδου άθικτες. Ένας επιτυχής κωδικός πρόσβασης δεν αντικαθιστά τους ελέγχους πιστοποιητικού, έναν δεύτερο παράγοντα ή την εξουσιοδότηση μετά τη σύνδεση, και αυτή η πολιτική δεν υποκαθιστά κανένα από αυτά. Αποφασίζει μόνο αν ο λογαριασμός είναι επιλέξιμος για να εξεταστεί για πρόσβαση στο VPN.

Δοκιμή μελών, εξωτερικών και λανθασμένων κωδικών

Δοκιμάστε τρεις περιπτώσεις πριν θεωρήσετε την πολιτική έτοιμη. Ένα μέλος συνδέεται με επιτυχία. Ένας έγκυρος λογαριασμός εκτός της ομάδας πιστοποιεί τον κωδικό του αλλά του αρνείται η πρόσβαση στο VPN. Ένας λάθος κωδικός πρόσβασης για οποιονδήποτε από τους δύο λογαριασμούς απορρίπτεται στο στάδιο πιστοποίησης, όχι από τον κανόνα της ομάδας.

Εξετάστε το σφάλμα που βλέπει ο πελάτης και το αρχείο καταγραφής του διακομιστή μαζί, επειδή και οι δύο αποτυχίες μπορεί να φαίνονται παρόμοιες στο άτομο που συνδέεται. Η διάκριση μετράει για την υποστήριξη: ένας εξωτερικός με σωστό κωδικό χρειάζεται αλλαγή ομάδας, ενώ ένας λάθος κωδικός απαιτεί επαναφορά πιστοποίησης.

Κρατήστε μια δεύτερη συνεδρία ανοιχτή όσο επεξεργάζεστε το PAM, και επαληθεύστε και την κανονική σύνδεση SSH μετά την αλλαγή. Το νόημα της αποκλειστικής υπηρεσίας είναι ότι η σύνδεση στο σύστημα πρέπει να μείνει ανεπηρέαστη, και ο μόνος τρόπος να το ξέρετε είναι να το δοκιμάσετε.

Αν κάτι σπάσει, επαναφέρετε το προηγούμενο αρχείο υπηρεσίας από ένα αντίγραφο. Ο κανόνας που θέλετε είναι απλός να διατυπωθεί: η ιδιότητα μέλους καθιστά έναν λογαριασμό επιλέξιμο για πρόσβαση στο VPN, και κάθε άλλος απαιτούμενος έλεγχος εξακολουθεί να ισχύει.

Σχετικά άρθρα