إنشاء سياسة كلمة المرور على نظام Linux

مرحبا مرة أخرى! ستبدأ الفصول غداً في المجموعة الجديدة من دورة Linux Administrator ، وفي هذا الصدد ننشر مقالة مفيدة حول الموضوع.



في الدرس الأخير ، تحدثنا عن كيفية استخدام pam_cracklib لتعقيد كلمات المرور على أنظمة Red Hat 6 أو CentOS. في Red Hat 7 ، استبدل cracklib كوحدة pam للتحقق من كلمة المرور. يتم pam_pwquality وحدة pam_pwquality أيضًا على Ubuntu و CentOS ، وكذلك على العديد من أنظمة التشغيل الأخرى. تسهل هذه الوحدة إنشاء سياسات كلمة المرور للتأكد من قبول المستخدمين لمعايير تعقيد كلمة المرور الخاصة بك.

لفترة طويلة ، كانت الطريقة المعتادة لكلمات المرور هي إجبار المستخدم على استخدام الأحرف أو الأحرف الكبيرة أو الصغيرة أو الأحرف الأخرى فيها. لقد تم الترويج لقواعد تعقيد كلمة المرور الأساسية هذه بنشاط خلال السنوات العشر الماضية. كان هناك الكثير من النقاش حول ما إذا كانت هذه ممارسة جيدة أم لا. وكانت الحجة الرئيسية ضد وضع مثل هذه الظروف الصعبة هي أن المستخدمين يكتبون كلمات المرور على الورق ويخزنونها بطريقة غير آمنة.

هناك سياسة أخرى تم استدعاؤها مؤخراً موضع تساؤل يدفع المستخدمين إلى تغيير كلمات المرور الخاصة بهم كل يوم. تم إجراء العديد من الدراسات التي أظهرت أن هذا يضر أيضًا بالسلامة.

تمت كتابة الكثير من المقالات حول موضوع هذه المناقشات التي تبرر وجهة النظر هذه أو تلك. لكن هذا ليس ما سنناقشه في هذا المقال. ستخبرك هذه المقالة بكيفية تعيين تعقيد كلمة المرور بشكل صحيح ، وليس إدارة سياسة الأمان.

إعدادات سياسة كلمة المرور

ستجد أدناه إعدادات سياسة كلمة المرور ووصفًا موجزًا ​​لكل منها. العديد منهم يشبه المعلمات في وحدة cracklib . يسهل هذا النهج نقل سياساتك من النظام القديم.

  • difok - عدد الأحرف في كلمة المرور الجديدة التي يجب ألا تكون موجودة في كلمة المرور القديمة. (الافتراضي هو 5)
  • minlen - الحد الأدنى لطول كلمة المرور. (الافتراضي هو 9)
  • ucredit - الحد الأقصى لعدد الأرصدة لاستخدام الأحرف الكبيرة (إذا كانت المعلمة> 0) ، أو الحد الأدنى لعدد الأحرف الكبيرة (إذا كانت المعلمة <0). الافتراضي هو 1.
  • lcredit - الحد الأقصى لعدد الأرصدة لاستخدام الأحرف الصغيرة (إذا كانت المعلمة> 0) ، أو الحد الأدنى لعدد الأحرف الصغيرة (إذا كانت المعلمة <0). الافتراضي هو 1.
  • dcredit - الحد الأقصى لعدد الأرصدة لاستخدام الأرقام (إذا كانت المعلمة> 0) ، أو الحد الأدنى لعدد الأرقام المطلوبة (إذا كانت المعلمة <0). الافتراضي هو 1.
  • ocredit - الحد الأقصى لعدد الأرصدة لاستخدام الرموز الأخرى (إذا كانت المعلمة> 0) ، أو الحد الأدنى المطلوب للرموز الأخرى (إذا كانت المعلمة <0). الافتراضي هو 1.
  • minclass - يحدد عدد الفصول المطلوبة. تشمل الفئات المعلمات أعلاه (الحالة العلوية والصغيرة والأرقام والأحرف الأخرى). الافتراضي هو 0.
  • maxrepeat - الحد الأقصى لعدد مرات تكرار الحرف في كلمة المرور. الافتراضي هو 0.
  • maxclassrepeat - الحد الأقصى لعدد الأحرف المتتالية في فئة واحدة. الافتراضي هو 0.
  • gecoscheck - للتحقق مما إذا كانت كلمة المرور تحتوي على أي كلمات من خطوط GECOS للمستخدم. (معلومات المستخدم ، مثل الاسم الحقيقي ، والموقع ، وما إلى ذلك) الافتراضي 0 (إيقاف).
  • dictpath - واسمحوا ل cracklib القواميس.
  • الكلمات المفتاحية - الكلمات المفصولة بمساحة محظورة في كلمات المرور (اسم الشركة ، كلمة "كلمة المرور" ، إلخ).

إذا كان مفهوم القروض يبدو غريباً ، فلا بأس ، فهذا جيد. سنتحدث عن هذا بمزيد من التفصيل في الأقسام التالية.

تكوين سياسة كلمة المرور

قبل البدء في تحرير ملفات التكوين ، من الممارسات الجيدة الكتابة المسبقة لسياسة كلمة المرور الأساسية. على سبيل المثال ، سوف نستخدم قواعد التعقيد التالية:

  • يجب ألا يقل طول كلمة المرور عن 15 حرفًا.
  • في كلمة المرور ، يجب عدم تكرار نفس الحرف أكثر من مرتين.
  • في كلمة المرور ، يمكن تكرار فئات الأحرف حتى أربع مرات.
  • يجب أن تحتوي كلمة المرور على أحرف من كل فصل.
  • يجب أن تحتوي كلمة المرور الجديدة على 5 أحرف جديدة مقارنةً بالحرف القديم.
  • تمكين التحقق من صحة GECOS.
  • رفض الكلمات "كلمة المرور ، تمرير ، كلمة ، 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 المعلمة 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 أحرف والحصول على رصيدين للأحرف للأرقام ، ومن ثم يمكن أن تكون كلمة المرور 10.

نلقي نظرة على هذا المثال. قمت بتعيين طول كلمة المرور إلى 13 ، وتعيين dcredit إلى 2 ، وكل شيء آخر إلى 0.

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

أخفق الفحص الأول لأن كلمة المرور كانت أقل من 13 حرفًا. في المرة التالية التي غيرت فيها الحرف "أنا" إلى الرقم "1" ، وحصلت على رصيدين للأرقام ، أي ما يعادل كلمة المرور بـ 13.

اختبار كلمة المرور

توفر حزمة libpwquality الوظيفة الموضحة في المقالة. كما يأتي مع برنامج pwscore ، والذي تم تصميمه للتحقق من كلمة المرور للتعقيد. استخدمناها أعلاه للتحقق من القروض.

الأداة المساعدة pwscore يقرأ من stdin . مجرد تشغيل الأداة المساعدة وكتابة كلمة المرور الخاصة بك ، وسوف يعطي خطأ أو قيمة 0 حتي 100.

ترتبط درجة جودة كلمة المرور minlen في ملف التكوين. بشكل عام ، يعتبر المؤشر الأقل من 50 كلمة "كلمة مرور عادية" ، وفوق ذلك "كلمة مرور قوية". يجب أن تصمد أي كلمة مرور cracklib إجراء cracklib الجودة (خاصة الشيكات القسرية لـ cracklib ) أمام هجمات القاموس ، وكلمة مرور أعلى من 50 مع إعداد minlen الافتراضي minlen .

استنتاج

يعد إعداد pwquality وسهلاً مقارنة بإزعاج استخدام cracklib مع التحرير المباشر لملفات pam . في هذا الدليل ، قمنا بتغطية كل ما تحتاجه لإعداد سياسات كلمة المرور على أنظمة Red Hat 7 و CentOS 7 وحتى أنظمة Ubuntu. تحدثنا أيضًا عن مفهوم القروض ، والتي نادراً ما تتم كتابتها بالتفصيل ، لذلك غالبًا ما ظل هذا الموضوع غير مفهوم بالنسبة لأولئك الذين لم يواجهوه من قبل.

مصادر:

صفحة رجل pwquality
صفحة رجل pam_pwquality
صفحة رجل pwscore

روابط مفيدة:

اختيار كلمات مرور آمنة - بروس شنير
لوري فيث كرانور تناقش دراسات كلمة المرور الخاصة بها في جامعة CMU
الرسوم المتحركة xkcd سيئة السمعة على Entropy

Source: https://habr.com/ru/post/ar448996/


All Articles