ایجاد یک سیاست رمز عبور در لینوکس

دوباره سلام! کلاس های گروه دوره جدید از فردا شروع می شود "مدیر لینوکس"، در همین راستا مقاله مفیدی در این زمینه منتشر می کنیم.

ایجاد یک سیاست رمز عبور در لینوکس

در آموزش قبلی نحوه استفاده را به شما گفتیم pam_cracklibبرای پیچیده تر کردن رمزهای عبور در سیستم ها کلاه قرمزی 6 یا CentOS در کلاه قرمزی 7 pam_pwquality جایگزین شده است cracklib مانند pam ماژول پیش فرض برای بررسی رمزهای عبور مدول pam_pwquality همچنین در اوبونتو و CentOS و همچنین بسیاری از سیستم عامل های دیگر پشتیبانی می شود. این ماژول ایجاد سیاست های رمز عبور را آسان می کند تا اطمینان حاصل شود که کاربران استانداردهای قدرت رمز عبور شما را می پذیرند.

برای مدت طولانی، رویکرد رایج در مورد رمز عبور این بود که کاربر را مجبور به استفاده از حروف بزرگ، کوچک، اعداد یا نمادهای دیگر کند. این قوانین اساسی برای پیچیدگی رمز عبور به طور گسترده در ده سال گذشته ترویج شده است. بحث های زیادی در مورد اینکه آیا این تمرین خوب است یا خیر، وجود داشته است. استدلال اصلی علیه تنظیم چنین شرایط پیچیده ای این بود که کاربران رمزهای عبور را روی کاغذ می نویسند و آنها را به طور ناامن ذخیره می کنند.

سیاست دیگری که اخیراً زیر سؤال رفته است، کاربران را مجبور می کند رمزهای عبور خود را هر x روز تغییر دهند. مطالعاتی انجام شده است که نشان داده است این برای ایمنی نیز مضر است.

مقالات زیادی در مورد این بحث ها نوشته شده است که این یا آن دیدگاه را اثبات می کند. اما این چیزی نیست که در این مقاله به آن خواهیم پرداخت. این مقاله در مورد چگونگی تنظیم صحیح پیچیدگی رمز عبور به جای مدیریت خط مشی امنیتی صحبت خواهد کرد.

تنظیمات خط مشی رمز عبور

در زیر گزینه های خط مشی رمز عبور و شرح مختصری از هر کدام را مشاهده خواهید کرد. بسیاری از آنها شبیه به پارامترهای ماژول هستند cracklib. این رویکرد انتقال سیاست های خود را از سیستم قدیمی آسان تر می کند.

  • متاسفم - تعداد کاراکترهای رمز عبور جدید شما که نباید در رمز عبور قدیمی شما وجود داشته باشد. (پیش فرض 5)
  • مینیل - حداقل طول رمز عبور (پیش فرض 9)
  • ucredit – حداکثر تعداد اعتبار برای استفاده از نویسه‌های بزرگ (اگر پارامتر > 0)، یا حداقل تعداد مورد نیاز نویسه‌های بزرگ (اگر پارامتر < 0) باشد. پیش فرض 1 است.
  • اعتبار — حداکثر تعداد اعتبار برای استفاده از نویسه‌های کوچک (اگر پارامتر > 0)، یا حداقل تعداد مورد نیاز نویسه‌های کوچک (اگر پارامتر < 0). پیش فرض 1 است.
  • اعتبار — حداکثر تعداد اعتبار برای استفاده از ارقام (اگر پارامتر > 0)، یا حداقل تعداد ارقام مورد نیاز (اگر پارامتر < 0). پیش فرض 1 است.
  • او معتقد است - حداکثر تعداد اعتبار برای استفاده از سایر نمادها (اگر پارامتر > 0)، یا حداقل تعداد مورد نیاز نمادهای دیگر (اگر پارامتر < 0). پیش فرض 1 است.
  • من کلاس - تعداد کلاس های مورد نیاز را تنظیم می کند. کلاس ها شامل پارامترهای بالا (حروف حروف بزرگ، حروف کوچک، اعداد، کاراکترهای دیگر) هستند. پیش فرض 0 است.
  • حداکثر تکرار - حداکثر تعداد دفعاتی که یک کاراکتر می تواند در یک رمز عبور تکرار شود. پیش فرض 0 است.
  • maxclassrepeat - حداکثر تعداد کاراکترهای متوالی در یک کلاس. پیش فرض 0 است.
  • gecoscheck - بررسی می کند که آیا رمز عبور حاوی کلماتی از رشته های GECOS کاربر است یا خیر. (اطلاعات کاربر، یعنی نام واقعی، مکان و غیره) پیش فرض 0 است (خاموش).
  • مسیر دیکته – بیایید به دیکشنری های cracklib برویم.
  • کلمات بد - کلمات جدا شده با فاصله که در رمزهای عبور ممنوع هستند (نام شرکت، کلمه "گذرواژه" و غیره).

اگر مفهوم وام عجیب به نظر برسد، اشکالی ندارد، طبیعی است. در بخش های بعدی بیشتر در این مورد صحبت خواهیم کرد.

پیکربندی خط مشی رمز عبور

قبل از شروع ویرایش فایل های پیکربندی، تمرین خوبی است که از قبل یک خط مشی اساسی رمز عبور را یادداشت کنید. به عنوان مثال، ما از قوانین سختی زیر استفاده خواهیم کرد:

  • رمز عبور باید حداقل 15 کاراکتر داشته باشد.
  • یک کاراکتر نباید بیش از دو بار در رمز عبور تکرار شود.
  • کلاس های کاراکتر را می توان تا چهار بار در یک رمز عبور تکرار کرد.
  • رمز عبور باید شامل کاراکترهای هر کلاس باشد.
  • رمز عبور جدید باید 5 کاراکتر جدید نسبت به رمز قبلی داشته باشد.
  • بررسی GECOS را فعال کنید.
  • کلمات "رمز عبور، پاس، کلمه، پوتوریوس" را ممنوع کنید

اکنون که خط‌مشی را تنظیم کرده‌ایم، می‌توانیم فایل را ویرایش کنیم /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 و حتی سیستم‌های اوبونتو نیاز دارید، پوشش داده‌ایم. ما همچنین در مورد مفهوم وام صحبت کردیم که به ندرت در مورد آن با جزئیات نوشته می شود، بنابراین این موضوع اغلب برای کسانی که قبلاً با آن مواجه نشده بودند نامشخص می ماند.

منابع:

صفحه مرد pwquality
صفحه مرد pam_pwquality
صفحه مرد pwscore

پیوندهای مفید:

انتخاب رمزهای عبور امن - بروس اشنایر
Lorrie Faith Cranor در مورد مطالعات رمز عبور خود در CMU بحث می کند
کارتون Xkcd بدنام در آنتروپی

منبع: www.habr.com

اضافه کردن نظر