Δημιουργία πολιτικής κωδικού πρόσβασης στο Linux

Γεια σου και πάλι! Τα μαθήματα στη νέα ομάδα μαθημάτων ξεκινούν αύριο "Διαχειριστής Linux", σχετικά, δημοσιεύουμε ένα χρήσιμο άρθρο για το θέμα.

Δημιουργία πολιτικής κωδικού πρόσβασης στο Linux

Στο προηγούμενο σεμινάριο σας είπαμε πώς να το χρησιμοποιήσετε pam_cracklibγια να γίνουν πιο σύνθετοι οι κωδικοί πρόσβασης στα συστήματα Red Hat 6 ή CentOS. Στο Red Hat 7 pam_pwquality αντικαταστάθηκε cracklib ως pam προεπιλεγμένη μονάδα για τον έλεγχο κωδικών πρόσβασης. Μονάδα μέτρησης pam_pwquality υποστηρίζεται επίσης σε Ubuntu και CentOS, καθώς και σε πολλά άλλα λειτουργικά συστήματα. Αυτή η ενότητα διευκολύνει τη δημιουργία πολιτικών κωδικού πρόσβασης για να διασφαλιστεί ότι οι χρήστες αποδέχονται τα πρότυπα ισχύος του κωδικού πρόσβασής σας.

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

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

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

Ρυθμίσεις πολιτικής κωδικού πρόσβασης

Παρακάτω θα δείτε τις επιλογές της πολιτικής κωδικών πρόσβασης και μια σύντομη περιγραφή καθεμιάς. Πολλές από αυτές είναι παρόμοιες με τις παραμέτρους της ενότητας cracklib. Αυτή η προσέγγιση διευκολύνει τη μεταφορά των πολιτικών σας από το παλαιού τύπου σύστημα.

  • συγγνώμη – Ο αριθμός των χαρακτήρων στον νέο σας κωδικό πρόσβασης που ΔΕΝ πρέπει να υπάρχουν στον παλιό σας κωδικό πρόσβασης. (Προεπιλογή 5)
  • λεπτό – Ελάχιστο μήκος κωδικού πρόσβασης. (Προεπιλογή 9)
  • ucredit – Ο μέγιστος αριθμός μονάδων για τη χρήση κεφαλαίων χαρακτήρων (εάν παράμετρος > 0) ή ο ελάχιστος απαιτούμενος αριθμός κεφαλαίων χαρακτήρων (αν παράμετρος < 0). Η προεπιλογή είναι 1.
  • πίστωση — Ο μέγιστος αριθμός μονάδων για τη χρήση πεζών χαρακτήρων (εάν παράμετρος > 0) ή ο ελάχιστος απαιτούμενος αριθμός πεζών χαρακτήρων (εάν παράμετρος < 0). Η προεπιλογή είναι 1.
  • πίστωση — Ο μέγιστος αριθμός μονάδων για τη χρήση ψηφίων (εάν παράμετρος > 0) ή ο ελάχιστος απαιτούμενος αριθμός ψηφίων (εάν παράμετρος < 0). Η προεπιλογή είναι 1.
  • αυτος πιστευει — Ο μέγιστος αριθμός μονάδων για τη χρήση άλλων συμβόλων (εάν παράμετρος > 0) ή ο ελάχιστος απαιτούμενος αριθμός άλλων συμβόλων (εάν παράμετρος < 0). Η προεπιλογή είναι 1.
  • minclass – Ορίζει τον αριθμό των απαιτούμενων τάξεων. Οι κλάσεις περιλαμβάνουν τις παραπάνω παραμέτρους (κεφαλαίους χαρακτήρες, πεζούς χαρακτήρες, αριθμούς, άλλους χαρακτήρες). Η προεπιλογή είναι 0.
  • maxrepeat – Ο μέγιστος αριθμός φορών που μπορεί να επαναληφθεί ένας χαρακτήρας σε έναν κωδικό πρόσβασης. Η προεπιλογή είναι 0.
  • maxclassrepeat — Ο μέγιστος αριθμός διαδοχικών χαρακτήρων σε μία κλάση. Η προεπιλογή είναι 0.
  • gecoscheck – Ελέγχει εάν ο κωδικός πρόσβασης περιέχει λέξεις από τις συμβολοσειρές GECOS του χρήστη. (Στοιχεία χρήστη, π.χ. πραγματικό όνομα, τοποθεσία, κ.λπ.) Η προεπιλογή είναι 0 (απενεργοποίηση).
  • dictpath – Ας πάμε στα λεξικά cracklib.
  • κακές λέξεις – Λέξεις διαχωρισμένες σε διάστημα που απαγορεύονται στους κωδικούς πρόσβασης (Επωνυμία εταιρείας, λέξη «password» κ.λπ.).

Αν η έννοια των δανείων ακούγεται περίεργη, δεν πειράζει, είναι φυσιολογικό. Θα μιλήσουμε περισσότερα για αυτό στις επόμενες ενότητες.

Διαμόρφωση πολιτικής κωδικού πρόσβασης

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

  • Ο κωδικός πρόσβασης πρέπει να έχει ελάχιστο μήκος 15 χαρακτήρων.
  • Ο ίδιος χαρακτήρας δεν πρέπει να επαναλαμβάνεται περισσότερες από δύο φορές στον κωδικό πρόσβασης.
  • Οι κατηγορίες χαρακτήρων μπορούν να επαναληφθούν έως και τέσσερις φορές σε έναν κωδικό πρόσβασης.
  • Ο κωδικός πρόσβασης πρέπει να περιέχει χαρακτήρες από κάθε κλάση.
  • Ο νέος κωδικός πρέπει να έχει 5 νέους χαρακτήρες σε σύγκριση με τον παλιό.
  • Ενεργοποίηση ελέγχου GECOS.
  • Απαγόρευση των λέξεων "password, pass, word, putorius"

Τώρα που έχουμε ορίσει την πολιτική, μπορούμε να επεξεργαστούμε το αρχείο /etc/security/pwquality.confγια να αυξήσετε τις απαιτήσεις πολυπλοκότητας κωδικού πρόσβασης. Ακολουθεί ένα παράδειγμα αρχείου με σχόλια για καλύτερη κατανόηση.

# Make sure 5 characters in new password are new compared to old password
difok = 5
# Set the minimum length acceptable for new passwords
minlen = 15
# Require at least 2 digits
dcredit = -2
# Require at least 2 upper case letters
ucredit = -2
# Require at least 2 lower case letters
lcredit = -2
# Require at least 2 special characters (non-alphanumeric)
ocredit = -2
# Require a character from every class (upper, lower, digit, other)
minclass = 4
# Only allow each character to be repeated twice, avoid things like LLL
maxrepeat = 2
# Only allow a class to be repeated 4 times
maxclassrepeat = 4
# Check user information (Real name, etc) to ensure it is not used in password
gecoscheck = 1
# Leave default dictionary path
dictpath =
# Forbid the following words in passwords
badwords = password pass word putorius

Όπως ίσως έχετε παρατηρήσει, ορισμένες παράμετροι στο αρχείο μας είναι περιττές. Για παράδειγμα, η παράμετρος minclass είναι περιττό αφού χρησιμοποιούμε ήδη τουλάχιστον δύο χαρακτήρες από την κλάση χρησιμοποιώντας πεδία [u,l,d,o]credit. Η λίστα μας με τις λέξεις που δεν μπορούν να χρησιμοποιηθούν είναι επίσης περιττή, καθώς έχουμε απαγορεύσει την επανάληψη οποιασδήποτε κλάσης 4 φορές (όλες οι λέξεις στη λίστα μας είναι γραμμένες με πεζούς χαρακτήρες). Έχω συμπεριλάβει αυτές τις επιλογές μόνο για να δείξω πώς να τις χρησιμοποιήσετε για τη διαμόρφωση της πολιτικής κωδικού πρόσβασης.
Αφού δημιουργήσετε την πολιτική σας, μπορείτε να αναγκάσετε τους χρήστες να αλλάξουν τους κωδικούς πρόσβασής τους την επόμενη φορά που θα συνδεθούν. σύστημα.

Ένα άλλο περίεργο πράγμα που ίσως έχετε παρατηρήσει είναι ότι τα χωράφια [u,l,d,o]credit περιέχει αρνητικό αριθμό. Αυτό οφείλεται στο γεγονός ότι αριθμοί μεγαλύτεροι ή ίσοι του 0 θα αποδώσουν τη χρήση του χαρακτήρα στον κωδικό πρόσβασής σας. Εάν το πεδίο περιέχει αρνητικό αριθμό, σημαίνει ότι απαιτείται μια συγκεκριμένη ποσότητα.

Τι είναι τα δάνεια;

Τα ονομάζω δάνεια γιατί έτσι μεταφέρεται ο σκοπός τους όσο το δυνατόν ακριβέστερα. Εάν η τιμή της παραμέτρου είναι μεγαλύτερη από 0, προσθέτετε έναν αριθμό "πιστώσεων χαρακτήρων" ίσο με "x" στο μήκος του κωδικού πρόσβασης. Για παράδειγμα, εάν όλες οι παράμετροι (u,l,d,o)credit ορίστηκε σε 1 και το απαιτούμενο μήκος κωδικού πρόσβασης ήταν 6, τότε θα χρειαστείτε 6 χαρακτήρες για να ικανοποιήσετε την απαίτηση μήκους, επειδή κάθε κεφαλαίο, πεζό, ψηφίο ή άλλος χαρακτήρας θα σας δώσει μία πίστωση.

Εάν εγκαταστήσετε dcredit στο 2, θα μπορούσατε θεωρητικά να χρησιμοποιήσετε έναν κωδικό πρόσβασης 9 χαρακτήρων και να λάβετε 2 μονάδες χαρακτήρων για αριθμούς και, στη συνέχεια, το μήκος του κωδικού πρόσβασης θα μπορούσε να είναι ήδη 10.

Κοιτάξτε αυτό το παράδειγμα. Έβαλα το μήκος του κωδικού πρόσβασης στο 13, το dcredit στο 2 και όλα τα άλλα στο 0.

$ pwscore
 Thisistwelve
 Password quality check failed:
  The password is shorter than 13 characters

$ pwscore
 Th1sistwelve
 18

Ο πρώτος μου έλεγχος απέτυχε επειδή ο κωδικός πρόσβασης ήταν λιγότερος από 13 χαρακτήρες. Την επόμενη φορά που άλλαξα το γράμμα "I" με τον αριθμό "1" και έλαβα δύο μονάδες για τους αριθμούς, που έκαναν τον κωδικό πρόσβασης ίσο με 13.

Δοκιμή κωδικού πρόσβασης

Πακέτο libpwquality παρέχει τη λειτουργικότητα που περιγράφεται στο άρθρο. Έρχεται και με πρόγραμμα pwscore, το οποίο έχει σχεδιαστεί για να ελέγχει την πολυπλοκότητα του κωδικού πρόσβασης. Το χρησιμοποιήσαμε παραπάνω για να ελέγξουμε τα δάνεια.
Χρησιμότητα pwscore διαβάζει από stdin. Απλώς εκτελέστε το βοηθητικό πρόγραμμα και γράψτε τον κωδικό πρόσβασής σας, θα εμφανίσει ένα σφάλμα ή μια τιμή από 0 έως 100.

Η βαθμολογία ποιότητας κωδικού πρόσβασης σχετίζεται με την παράμετρο minlen στο αρχείο ρυθμίσεων. Γενικά, μια βαθμολογία μικρότερη από 50 θεωρείται «κανονικός κωδικός πρόσβασης» και μια βαθμολογία πάνω από αυτή θεωρείται «ισχυρός κωδικός πρόσβασης». Οποιοσδήποτε κωδικός πρόσβασης περνάει από ποιοτικούς ελέγχους (ειδικά αναγκαστική επαλήθευση cracklib) πρέπει να αντέχει σε επιθέσεις λεξικού και έναν κωδικό πρόσβασης με βαθμολογία πάνω από 50 με τη ρύθμιση minlen ακόμη και από προεπιλογή brute force επιθέσεις.

Συμπέρασμα

προσαρμογή pwquality – είναι εύκολο και απλό σε σύγκριση με την ταλαιπωρία της χρήσης cracklib με άμεση επεξεργασία αρχείων pam. Σε αυτόν τον οδηγό, καλύψαμε όλα όσα θα χρειαστείτε κατά τη ρύθμιση των πολιτικών κωδικών πρόσβασης στα συστήματα Red Hat 7, CentOS 7, ακόμη και Ubuntu. Μιλήσαμε επίσης για την έννοια των δανείων, για την οποία σπάνια γράφεται λεπτομερώς, επομένως αυτό το θέμα παρέμενε συχνά ασαφές σε όσους δεν το είχαν συναντήσει στο παρελθόν.

Πηγές:

pwquality man page
pam_pwquality man page
pwscore man page

Χρήσιμοι σύνδεσμοι:

Επιλογή ασφαλών κωδικών πρόσβασης – Bruce Schneier
Η Lorrie Faith Cranor συζητά τις σπουδές της για κωδικούς πρόσβασης στο CMU
Το διαβόητο καρτούν xkcd στο Entropy

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο