Κλείδωμα λογαριασμού ή απαγόρευση διεύθυνσης: πού μετράει πραγματικά το OpenVPN
Η απαγόρευση πηγής και το κλείδωμα λογαριασμού μετρούν διαφορετικά πράγματα. Βρείτε το χώρο που κατέχει τον μετρητή αποτυχιών πριν επιλέξετε όριο για VPN βασισμένο σε PAM.
Το μπλοκάρισμα μιας διεύθυνσης και το κλείδωμα ενός λογαριασμού είναι δύο διαφορετικοί μηχανισμοί και αποτυγχάνουν σε αντίθετες κατευθύνσεις. Η απαγόρευση διεύθυνσης σταματά μία πηγή και αφήνει τον λογαριασμό-στόχο προσβάσιμο από αλλού· το κλείδωμα σταματά αυτή την ταυτότητα παντού, ακόμη και στον φορητό του ίδιου του χρήστη.
Για ένα VPN που αναθέτει τον έλεγχο ταυτότητας στο PAM, ο μετρητής είναι αυτό που φτάνει η στοίβα PAM, όχι αυτό που κατέγραψε ο ακροατής.
Δύο μετρητές, δύο διαφορετικά θύματα
Ο περιοριστής ρυθμού κοιτά μια πηγή και ρωτά πόσες προσπάθειες ήρθαν πρόσφατα από εκείνη. Το κλείδωμα κοιτά μια ταυτότητα και ρωτά πόσες αποτυχίες έχει συγκεντρώσει ο λογαριασμός. Το πρώτο προστατεύει τη διαθεσιμότητα, το δεύτερο τα διαπιστευτήρια· κανένα δεν αντικαθιστά το άλλο.
Γι’ αυτό η φράση μπλοκάρουμε τη διεύθυνση μετά από πέντε αποτυχίες δεν είναι απάντηση σε αναφορά για γέμισμα διαπιστευτηρίων. Ο επιτιθέμενος εναλλάσσει πηγές, καθεμία παίρνει λίγες προσπάθειες και ο λογαριασμός δεν μετριέται ποτέ. Αντίστροφα, κλείδωμα χωρίς έλεγχο πηγών επιτρέπει στον επιτιθέμενο να κρατά τον λογαριασμό κλειδωμένο επ’ αόριστον αποτυγχάνοντας σκόπιμα.
Οι δύο έλεγχοι έχουν και διαφορετικές ιστορίες ανάκτησης. Η απαγόρευση διεύθυνσης λήγει με χρονόμετρο για το οποίο κανείς δεν χρειάζεται να σκεφτεί· το κλείδωμα μπορεί να απαιτεί διαχειριστή, τεκμηριωμένη περίοδο αναμονής ή επαναφορά αυτοεξυπηρέτησης.
Βρείτε το χώρο που κατέχει ήδη τη μέτρηση
Πριν προσθέσετε οτιδήποτε, διαπιστώστε αν υπάρχει ήδη χώρος αποτυχιών. Ένας τοπικός λογαριασμός Linux, μια υπηρεσία καταλόγου και ένας εξωτερικός πάροχος ταυτότητας κρατούν ο καθένας τη δική του μέτρηση, και μια μονάδα PAM μπροστά τους δημιουργεί δεύτερη αντί να επεκτείνει την πρώτη.
grep -rnE 'faillock|pam_tally|pam_unix' /etc/pam.d/
ls -l /etc/pam.d/ | head -20
Διαβάστε το αρχείο υπηρεσίας που ονομάζει πραγματικά το VPN και ακολουθήστε τις γραμμές συμπερίληψης. Σε πολλές διανομές η υπηρεσία VPN συμπεριλαμβάνει ένα κοινό αρχείο, που σημαίνει ότι η μέτρηση που ρυθμίζετε ισχύει και για SSH και για τοπικές συνδέσεις.
Αν ο κατάλογος επιβάλλει ήδη κλείδωμα, το χρήσιμο ερώτημα είναι πώς φτάνει η συνομιλία PAM σε αυτή την απόφαση και πώς την αναφέρει το VPN. Μια τοπική μέτρηση από πάνω δεν γίνεται ο μετρητής του καταλόγου, και οι δύο πολιτικές μπορεί να διαφωνούν για το πότε ξεκλειδώνει ο λογαριασμός.
Το pam_faillock έχει τρεις θέσεις κλήσης, όχι μία
Η μονάδα διαχωρίζει τρεις ενέργειες που μια αντιγραμμένη γραμμή συνήθως θολώνει: έλεγχο αν ο λογαριασμός είναι ήδη κλειδωμένος, καταγραφή αποτυχίας και εκκαθάριση του ιστορικού μετά από επιτυχία.
Εδώ συνήθως σφάλλει η μετάβαση από παλαιότερη μονάδα μέτρησης. Η αντιγραφή γραμμής από ένα παράδειγμα pam_tally2 που λειτουργεί σε στοίβα pam_faillock δεν είναι μετονομασία· η τεκμηριωμένη ρύθμιση διαφέρει, και μια λανθασμένη θέση κλήσης μπορεί να καταγράφει αποτυχίες χωρίς ποτέ να τις ελέγχει.
faillock --user alice
faillock --user alice --reset
Το εργαλείο επιθεώρησης είναι ο γρηγορότερος τρόπος να δείτε αν ο μετρητής είναι πραγματικός: αναφέρει τις καταγεγραμμένες αποτυχίες ενός λογαριασμού και μπορεί να τις σβήσει. Αν μια ελεγχόμενη αποτυχία δεν αλλάζει αυτή την έξοδο, η θέση κλήσης είναι λάθος.
Ένα αποκλειστικό όνομα υπηρεσίας δεν είναι απομόνωση
Το να δώσετε στο VPN το δικό του αρχείο υπηρεσίας PAM κάνει ορατή την επιδιωκόμενη πολιτική, αλλά δεν περιορίζει το αποτέλεσμα. Κάθε συμπερίληψη κοινού αρχείου φέρνει ό,τι κάνει εκείνο το αρχείο, μαζί με μετρήσεις για όλο το σύστημα.
Αποφασίστε ρητά αν το κλείδωμα καλύπτει μόνο την πρόσβαση VPN ή κάθε υπηρεσία που επαληθεύει τον ίδιο λογαριασμό. Και οι δύο απαντήσεις είναι υπερασπίσιμες· το λάθος είναι να πιστεύετε ότι διαλέξατε τη μία ενώ η στοίβα εφαρμόζει την άλλη.
Στη συνέχεια υπολογίστε το κόστος. Ένας επιτιθέμενος μπορεί να προκαλέσει το κλείδωμα, και ο χρήστης που υποφέρει είναι ο ιδιοκτήτης του λογαριασμού. Το όριο, η περίοδος αναμονής και η διαχειριστική διαδρομή ανάκτησης είναι μέρος της πολιτικής, και η ανάκτηση δεν πρέπει να εξαρτάται από επαναδιαμόρφωση του VPN κατά τη διάρκεια περιστατικού.
Δεχθείτε την ακολουθία, όχι μία μεμονωμένη απόρριψη
Δοκιμάστε με καθορισμένες ταυτότητες βάσει εγκεκριμένου σχεδίου, και δοκιμάστε αλυσίδα αντί για ένα γεγονός: έγκυρος λογαριασμός επαληθεύεται, σκόπιμα λάθος κωδικός κινεί τον μετρητή, το ρυθμισμένο κλείδωμα ενεργοποιείται και η τεκμηριωμένη ανάκτηση επιστρέφει την πρόσβαση.
faillock --user test-vpn-01
journalctl -u openvpn-server@lab -n 30 --no-pager | grep -i 'auth\|pam'
Εξετάστε τη συμπεριφορά επιτυχίας εξίσου προσεκτικά με της αποτυχίας. Αν μια επιτυχημένη σύνδεση δεν εκκαθαρίζει το ιστορικό, ο λογαριασμός θα κλειδωθεί μετά από αργή συσσώρευση συνηθισμένων λαθών. Αν εκκαθαρίζει τα πάντα από κάθε υπηρεσία, ο μετρητής είναι ασθενέστερος απ’ ό,τι ισχυρίζεται η πολιτική.
Τέλος, σταματήστε τους μη εποπτευόμενους πελάτες πριν κηρύξετε νίκη. Αποθηκευμένα διαπιστευτήρια που επαναλαμβάνουν στο παρασκήνιο θα δημιουργήσουν ξανά αποτυχίες λεπτά μετά την ανάκτηση και θα κλειδώσουν ξανά τον λογαριασμό. Ο περιορισμός ρυθμού βάσει πηγής μπορεί να μείνει ως πρόσθετος έλεγχος, αλλά δεν είναι η πολιτική λογαριασμού.