مرحبا مجددا! تبدأ الدروس في مجموعة الدورة الجديدة غدا
في البرنامج التعليمي السابق أخبرناك بكيفية الاستخدام pam_cracklib
لجعل كلمات المرور على الأنظمة أكثر تعقيدًا pam_pwquality
استبدال cracklib
كما pam
الوحدة الافتراضية للتحقق من كلمات المرور. وحدة pam_pwquality
مدعوم أيضًا على Ubuntu وCentOS، بالإضافة إلى العديد من أنظمة التشغيل الأخرى. تسهل هذه الوحدة إنشاء سياسات كلمة المرور لضمان قبول المستخدمين لمعايير قوة كلمة المرور الخاصة بك.
لفترة طويلة، كان النهج الشائع لكلمات المرور هو إجبار المستخدم على استخدام الأحرف الكبيرة أو الصغيرة أو الأرقام أو الرموز الأخرى. تم الترويج لهذه القواعد الأساسية لتعقيد كلمة المرور على نطاق واسع خلال السنوات العشر الماضية. كان هناك الكثير من النقاش حول ما إذا كانت هذه ممارسة جيدة أم لا. كانت الحجة الرئيسية ضد وضع مثل هذه الشروط المعقدة هي أن المستخدمين يكتبون كلمات المرور على قطع من الورق ويخزنونها بشكل غير آمن.
سياسة أخرى تم التشكيك فيها مؤخرًا تجبر المستخدمين على تغيير كلمات المرور الخاصة بهم كل x من الأيام. وقد أظهرت بعض الدراسات أن هذا يضر أيضًا بالسلامة.
تمت كتابة العديد من المقالات حول موضوع هذه المناقشات، والتي تدعم وجهة نظر واحدة أو أخرى. لكن هذا ليس ما سنناقشه في هذا المقال. ستتحدث هذه المقالة عن كيفية ضبط تعقيد كلمة المرور بشكل صحيح بدلاً من إدارة سياسة الأمان.
إعدادات سياسة كلمة المرور
أدناه سترى خيارات سياسة كلمة المرور ووصفًا موجزًا لكل منها. العديد منها يشبه المعلمات الموجودة في الوحدة cracklib
. يسهل هذا الأسلوب نقل سياساتك من النظام القديم.
- difok – عدد الأحرف في كلمة المرور الجديدة التي لا ينبغي أن تكون موجودة في كلمة المرور القديمة. (الافتراضي 5)
- مينلين - الحد الأدنى لطول كلمة المرور. (الافتراضي 9)
- com.ucredit – الحد الأقصى لعدد الاعتمادات لاستخدام الأحرف الكبيرة (إذا كانت المعلمة > 0)، أو الحد الأدنى لعدد الأحرف الكبيرة المطلوبة (إذا كانت المعلمة > 0). الافتراضي هو 1.
- lcredit — الحد الأقصى لعدد الاعتمادات لاستخدام الأحرف الصغيرة (إذا كانت المعلمة > 0)، أو الحد الأدنى لعدد الأحرف الصغيرة المطلوبة (إذا كانت المعلمة > 0). الافتراضي هو 1.
- com.dcredit — الحد الأقصى لعدد الاعتمادات لاستخدام الأرقام (إذا كانت المعلمة > 0)، أو الحد الأدنى لعدد الأرقام المطلوبة (إذا كانت المعلمة > 0). الافتراضي هو 1.
- com.ocredit — الحد الأقصى لعدد الاعتمادات لاستخدام الرموز الأخرى (إذا كانت المعلمة > 0)، أو الحد الأدنى لعدد الرموز الأخرى المطلوبة (إذا كانت المعلمة > 0). الافتراضي هو 1.
- com.minclass - تحديد عدد الفصول المطلوبة. تتضمن الفئات المعلمات المذكورة أعلاه (الأحرف الكبيرة والأحرف الصغيرة والأرقام والأحرف الأخرى). الافتراضي هو 0.
- maxrepeat - الحد الأقصى لعدد المرات التي يمكن فيها تكرار الحرف في كلمة المرور. الافتراضي هو 0.
- com.maxclassrepeat - الحد الأقصى لعدد الأحرف المتتالية في فئة واحدة. الافتراضي هو 0.
- com.gecoscheck - التحقق مما إذا كانت كلمة المرور تحتوي على أي كلمات من سلاسل GECOS الخاصة بالمستخدم. (معلومات المستخدم، أي الاسم الحقيقي والموقع وما إلى ذلك) الإعداد الافتراضي هو 0 (إيقاف).
- dictpath - دعنا نذهب إلى قواميس cracklib.
- كلمات سيئة – الكلمات المفصولة بمسافات والممنوعة في كلمات المرور (اسم الشركة، كلمة “كلمة المرور”، وغيرها).
إذا كان مفهوم القروض يبدو غريبا، فلا بأس، إنه أمر طبيعي. سنتحدث أكثر عن هذا في الأقسام التالية.
تكوين سياسة كلمة المرور
قبل البدء في تحرير ملفات التكوين، من الممارسات الجيدة كتابة سياسة كلمة المرور الأساسية مسبقًا. على سبيل المثال، سوف نستخدم قواعد الصعوبة التالية:
- يجب أن يكون طول كلمة المرور 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 بالفعل.
انظر إلى هذا المثال. قمت بتعيين طول كلمة المرور على 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
يقرأ من
ترتبط نقاط جودة كلمة المرور بالمعلمة minlen
في ملف التكوين. بشكل عام، النتيجة الأقل من 50 تعتبر "كلمة مرور عادية"، والنتيجة الأعلى منها تعتبر "كلمة مرور قوية". أي كلمة مرور تجتاز اختبارات الجودة (خاصة التحقق القسري cracklib
) يجب أن يتحمل هجمات القاموس، وكلمة المرور بدرجة أعلى من 50 مع الإعداد minlen
حتى بشكل افتراضي brute force
الهجمات.
اختتام
تعديل pwquality
- إنه سهل وبسيط مقارنة بإزعاج الاستخدام cracklib
مع تحرير الملف المباشر pam
. في هذا الدليل، قمنا بتغطية كل ما ستحتاج إليه عند إعداد سياسات كلمة المرور على أنظمة Red Hat 7 وCentOS 7 وحتى أنظمة Ubuntu. كما تحدثنا عن مفهوم القروض الذي نادراً ما نكتب عنه بالتفصيل، لذلك ظل هذا الموضوع في كثير من الأحيان غير واضح لمن لم يسبق له أن واجهه.
مصادر:
روابط مفيدة:
المصدر: www.habr.com