لینوکس ۳۰۳؛ شب ۱۸: رمز خوب و sudo کماختیار؛ سیاستی که آدمها بتوانند رعایت کنند
فهرست نوشته
کارمند هر ماه رمز تازهای میسازد و فقط عدد انتهای رمز قبلی را عوض میکند. سیاست پیچیده شده، امنیت چقدر بهتر شده است؟ امشب سیاست گذرواژه، PAM و sudo را با یک حساب آزمایشی و معیارهای روشن بررسی میکنیم.
این جلسه بخشی از دورهٔ لینوکس ۳۰۳ در ۴۰ شب است.
محیط تمرین: Ubuntu 24.04؛ libpam-pwquality؛ حساب آزمایشگاهی student؛ کنسول و حساب sudo مستقل.
جایگاه در دوره: هدفهای 335.1 آزمون 303-300.
یک زنجیرهٔ تصمیم#
PAM یعنی ماژولهای قابل اتصال احراز هویت؛ برنامههایی که از آن استفاده میکنند میتوانند قواعد auth، account، password و session داشته باشند. policy یک سرویس لزوماً policy تمام سرویسها نیست. sshd با کلید عمومی و ورود با رمز، مسیرهای یکسانی در تمام مراحل ندارند.
تمرینهای PAM و sudo در این درس تکمیل کاربردیِ تهدیدهای هویتاند؛ در نسخهٔ فعلی ۳۰۳ هدف مستقل «تمام تنظیمات PAM و sudo» نداریم. شناخت salt و کند کردن حدس رمز را از شب دوم همراه بیاور.
تاریخ انقضا را از کیفیت رمز جدا کن#
sudo chage -l student
sudo passwd -S student
sudo chage -M 90 -W 14 student
sudo chage -l student
این تغییر فقط برای حساب آزمایشگاهی است. بازهٔ نمونه، توصیهٔ عمومی برای تعویض اجباری همهٔ رمزها نیست؛ تهدید، ورود چندعاملی و نشانهٔ افشا باید در policy حضور داشته باشند. مقدارهای /etc/login.defs معمولاً پیشفرض ساخت حساباند؛ انتظار نداشته باش همهٔ کاربران موجود خودکار تغییر کنند.
در Clone، نصب libpam-pwquality و زنجیرهٔ /etc/pam.d/common-password را بررسی کن. در /etc/security/pwquality.conf میتوانی حداقل طول آزمایشگاهی را تعیین کنی:
minlen = 14
اما تا زمانی که pam_pwquality.so در stack درست فراخوانی نشود، این فایل بهتنهایی سیاست اجرا نمیکند. خطهای control flag را از stack دیگری کپی نکن. با passwd در نشست خود student، یک رمز بسیار کوتاه و سپس یک گذرعبارت بلند امتحان کن؛ استفاده از root برای تغییر رمز میتواند رفتار متفاوتی داشته باشد.
sudo برای یک کار مشخص#
هدف این تمرین، اجازهٔ مشاهدهٔ وضعیت Apache است، نه ویرایش هر فایل root. با sudo visudo -f /etc/sudoers.d/lpic303-status این سطر را بنویس:
student ALL=(root) /usr/bin/systemctl --no-pager status apache2.service
بعد sudo visudo -c و sudo -l -U student را اجرا کن. روی سیستم دارای Apache، از student فرمان sudo /usr/bin/systemctl --no-pager status apache2.service را آزمایش کن؛ pager عمداً در خود فرمان غیرفعال است. دادن wildcard در نام سرویس یا اجازهٔ ویرایش unit میتواند دامنهٔ اختیار را بسیار بزرگتر کند. اگر student از قبل عضو گروه sudo است، در Clone یک حساب مستقل و فاقد دسترسی گسترده برای این آزمون بساز؛ rule محدود، مجوزهای قبلی را حذف نمیکند.
طرح برگشت#
فایل sudoers آزمایشی را از کنسول کنار بگذار و دوباره validate کن؛ stack PAM را از backup یا Snapshot بازگردان. اگر ورود شکست خورد، یک نشست باز را تنها شاهد سلامت حساب حساب نکن؛ ورود جدید باید آزموده شود.
تمرین: «رمز قوی» جلوی phishing را تضمین میکند؟ پاسخ: نه؛ روش ورود، مدیریت نشست و آموزش هم لازماند. منابع: Linux-PAM و مستندات رسمی sudoers .