| PAM_KRB5(5) | pam-krb5 | PAM_KRB5(5) |
نام (NAME)
pam_krb5 - ماژول احراز هویت کربروس برای PAM
خلاصه دستور (SYNOPSIS)
auth sufficient pam_krb5.so minimum_uid=1000 session required pam_krb5.so minimum_uid=1000 account required pam_krb5.so minimum_uid=1000 password sufficient pam_krb5.so minimum_uid=1000
توضیحات (DESCRIPTION)
ماژول سرویس کربروس برای PAM، که معمولاً در مسیر /lib/security/pam_krb5.so نصب میشود، قابلیتهایی را برای چهار عملیات PAM فراهم میآورد: احراز هویت، مدیریت حساب، مدیریت نشست و مدیریت گذرواژه. فایل pam_krb5.so یک شیء اشتراکی است که در صورت نیاز بر اساس پیکربندی PAM سیستم به صورت پویا توسط زیرسیستم PAM بارگیری میشود. سامانه PAM ساختاری برای اتصال ماژولهای خارجی احراز هویت و مدیریت نشست است تا هر برنامه مجبور نباشد بهترین راه بررسی احراز هویت کاربر یا ایجاد نشست کاربری را در آن سیستم بداند. برای جزئیات بیشتر در مورد نحوه پیکربندی PAM در سیستم خود، صفحه راهنمای PAM، اغلب pam(7) را ببینید.
اقدامات این ماژول هنگام فراخوانی از هر گروه به شرح زیر است:
- auth
- پیادهسازی
توابع pam_authenticate()
و pam_setcred() را
فراهم
میکند.
تابع اول
نام کاربری
را از نشست PAM
دریافت
میکند،
گذرواژه
کاربر را
درخواست
مینماید
(مگر اینکه
برای
استفاده از
گذرواژه
واردشده
قبلی
پیکربندی
شده باشد)،
و سپس احراز
هویت اولیه
کربروس را
انجام داده
و در صورت
موفقیت،
اعتبارنامههای
بهدستآمده
را در یک
کَش بلیت
موقت ذخیره
میکند.
تابع دوم،
بسته به
فلگهایی
که با آن
فراخوانی
شده است، یا
محتویات
کَش بلیت
موقت را در
یک کَش بلیت
ماندگار
متعلق به
کاربر
مینویسد
یا از کَش
بلیت موقت
برای
تازهسازی
کَش بلیت
موجود
کاربر
استفاده
میکند.
گذرواژههایی با طول برابر یا بیشتر از PAM_MAX_RESP_SIZE بایت (معمولاً ۵۱۲ بایت) رد خواهند شد، زیرا گذرواژههای بیش از حد طولانی میتوانند برای حمله منع سرویس (DoS) استفاده شوند.
پس از انجام احراز هویت اولیه، ماژول PAM کربروس تلاش میکند تا بلیتهایی را برای یک کلید در جدول کلید (keytab) محلی سیستم دریافت کرده و سپس آن بلیتها را اعتبارسنجی کند. تا زمانی که این مرحله انجام نشود، احراز هویت در برابر جعل KDC آسیبپذیر است، اما این کار مستلزم آن است که سیستم دارای کلید محلی باشد و ماژول PAM به عنوان کاربری اجرا شود که بتواند فایل keytab (معمولاً /etc/krb5.keytab) را بخواند. میتوانید با گزینه keytab ماژول PAM کربروس را به یک keytab دیگر هدایت کنید. اگر آن keytab قابل خواندن نباشد یا هیچ کلیدی در آن یافت نشود، رفتار پیشفرض (که بالقوه ناامن است) نادیده گرفتن این بررسی است. اگر میخواهید در صورت عدم امکان بررسی بلیتهای بهدستآمده، احراز هویت با شکست مواجه شود، "verify_ap_req_nofail" را در بخش [libdefaults] فایل /etc/krb5.conf روی true تنظیم کنید. توجه داشته باشید که این کار بر برنامههای دیگر غیر از این ماژول PAM نیز تأثیر میگذارد.
به طور پیشفرض، هر زمان که کاربر احراز هویت شود، یک بررسی مجازشماری پایه نیز با استفاده از krb5_kuserok() انجام میشود. رفتار پیشفرض این تابع بررسی حساب کاربر برای وجود فایل .k5login است و در صورت وجود، اطمینان حاصل میکند که پرینسیپال کاربر در آن فایل فهرست شده باشد. اگر .k5login وجود نداشته باشد، بررسی پیشفرض این است که اطمینان حاصل شود پرینسیپال کاربر در قلمرو محلی پیشفرض قرار دارد و بخش کاربری پرینسیپال با نام حساب مطابقت دارد (این را میتوان با پیکربندی نگاشت سفارشی aname به localname در krb5.conf تغییر داد؛ برای جزئیات به مستندات کربروس مراجعه کنید). این رفتار را میتوان با چندین گزینه پیکربندی سفارشی کرد؛ به بخشهای زیر مراجعه کنید.
اگر نام کاربری ارائهشده به PAM شامل علامت "@" باشد و کربروس بتواند با در نظر گرفتن نام کاربری به عنوان یک پرینسیپال، آن را به یک نام حساب محلی نگاشت کند، pam_authenticate() کاربر PAM را به آن نام حساب محلی تغییر میدهد. این به کاربران اجازه میدهد با پرینسیپال کربروس خود وارد شوند و نگاشت به حساب را به کربروس بسپارند. این قابلیت را میتوان با گزینه no_update_user غیرفعال کرد. با این حال توجه داشته باشید که این امکان را نمیتوان با OpenSSH استفاده کرد. OpenSSH نامهای کاربری را که قبل از انجام این بازنگاشت با حسابهای محلی مطابقت ندارند رد میکند و یک گذرواژه نامعتبر را به ماژول PAM ارسال مینماید. همچنین آگاه باشید که چندین ماژول رایج دیگر PAM، مانند pam_securetty، انتظار دارند بتوانند کاربر را با getpwnam() جستجو کنند و در صورت استفاده از این ویژگی، نمیتوان آنها را قبل از pam_krb5 فراخوانی کرد.
هنگامی که pam_setcred() برای مقداردهی اولیه یک کَش بلیت جدید فراخوانی میشود، متغیر محیطی KRB5CCNAME روی مسیر آن کَش بلیت تنظیم میشود. به طور پیشفرض، نام کَش به صورت /tmp/krb5cc_UID_RANDOM خواهد بود که در آن UID شناسه عددی کاربر و RANDOM شش حرف تصادفی است. این مورد را میتوان با گزینههای ccache و ccache_dir پیکربندی کرد.
ماژول pam-krb5 از مکان پیشفرض کَش بلیت یا default_cc_name در بخش "[libdefaults]" فایل krb5.conf استفاده نمیکند. مکان پیشفرض کَش، یک کَش مشترک را برای تمام نشستهای همان کاربر استفاده میکند که در هنگام خروج کاربر از یکی از چندین نشست، باعث رفتار گیجکننده میشود.
اگر pam_setcred() یک کَش بلیت جدید را مقداردهی اولیه کند، آن کَش بلیت را طوری تنظیم میکند که با بسته شدن نشست PAM حذف شود. به طور معمول، برنامه فراخواننده (login، sshd و غیره) شل کاربر را به عنوان یک زیرپردازش اجرا میکند، منتظر خروج آن میماند و سپس نشست PAM را میبندد و در نتیجه نشست کاربر را پاکسازی مینماید.
- session
- پیادهسازی pam_open_session() (که معادل فراخوانی pam_setcred() با فلگ PAM_ESTABLISH_CRED است) و pam_close_session() (که کَش بلیت ایجادشده توسط pam_setcred() را از بین میبرد) را فراهم میکند.
- account
- پیادهسازی pam_acct_mgmt() را فراهم میکند. تمام کاری که انجام میدهد این است که همان بررسی مجازشماری را که توسط پیادهسازی pam_authenticate() شرح داده شده در بالا انجام میشود، تکرار کند.
- password
- پیادهسازی
pam_chauthtok() را
فراهم
میکند که
تغییر
گذرواژه را
اجرا
مینماید.
از کاربر
گذرواژه
فعلیاش
درخواست
میشود (مگر
اینکه برای
استفاده از
گذرواژه از
پیش
واردشده
پیکربندی
شده باشد) و
سپس ماژول PAM
اعتبارنامههایی
را برای
پرینسیپال
ویژه
کربروس
"kadmin/changepw"
دریافت
میکند. سپس
دو بار از
کاربر
گذرواژه
جدید
درخواست
میکند تا
اطمینان
حاصل شود که
کاربر آن را
به درستی
وارد کرده
است (باز هم
مگر اینکه
برای
استفاده از
گذرواژه از
پیش
واردشده
پیکربندی
شده باشد)،
و سپس تغییر
گذرواژه
کربروس را
انجام
میدهد.
گذرواژههایی با طول برابر یا بیشتر از PAM_MAX_RESP_SIZE بایت (معمولاً ۵۱۲ بایت) رد خواهند شد، زیرا گذرواژههای بیش از حد طولانی میتوانند به عنوان حمله منع سرویس استفاده شوند.
برخلاف ماژول گذرواژه عادی یونیکس، این ماژول در صورتی که کاربر گذرواژه قدیمی را بداند، به هر کاربری اجازه میدهد گذرواژه هر کاربر دیگری را تغییر دهد. همچنین برخلاف ماژول گذرواژه عادی یونیکس، از کاربر root همیشه گذرواژه قدیمی درخواست میشود، زیرا root وضعیت ویژهای در کربروس ندارد. (برای تغییر گذرواژهها در کربروس بدون دانستن گذرواژه قدیمی، به جای آن از kadmin(8) استفاده کنید.)
هر دو فراخوانی مدیریت حساب و نشست ماژول PAM کربروس، اگر در زمینه نشست PAM برای کاربری فراخوانی شوند که با کربروس احراز هویت نکرده است، PAM_IGNORE را برمیگردانند (کد بازگشتی "ignore" در زبان پیکربندی Linux PAM).
توجه داشته باشید که این ماژول برای انجام احراز هویت کربروس فرض میکند شبکه در دسترس است. اگر شبکه در دسترس نباشد، زمان انتظار (timeout) برخی از کتابخانههای کربروس طولانیتر از زمان انتظار تحمیلشده توسط فرآیند ورود است. این بدان معناست که استفاده بیاحتیاط از این ماژول میتواند ورود به کنسول را به عنوان root غیرممکن کند. به همین دلیل، همیشه باید از گزینههای ignore_root یا minimum_uid استفاده کنید، و یک ماژول احراز هویت محلی مانند pam_unix را ابتدا با فیلد کنترلی "sufficient" فهرست نمایید تا در صورت موفقیتآمیز بودن احراز هویت محلی با گذرواژه، ماژول PAM کربروس نادیده گرفته شود.
این ماژول همان ماژول PAM کربروس موجود در Sourceforge یا ماژول ارائهشده در سیستمهای Red Hat نیست. این ماژول از بسیاری از همان گزینهها پشتیبانی میکند، برخی گزینههای اضافی دارد و از برخی گزینههایی که آن ماژولها پشتیبانی میکنند پشتیبانی نمیکند.
پیکربندی (CONFIGURATION)
ماژول PAM کربروس گزینههای متعددی میپذیرد که همه آنها به هر گروه PAM مربوط نمیشوند؛ گزینههای نامربوط بدون اخطار نادیده گرفته خواهند شد. هر یک از این گزینهها را میتوان در پیکربندی PAM به عنوان آرگومانهای فهرستشده پس از "pam_krb5.so" تنظیم کرد. برخی از گزینهها را میتوان در فایل krb5.conf سیستم نیز تنظیم کرد؛ در صورت امکان، این موضوع در توضیحات آن گزینه در زیر ذکر شده است.
برای تنظیم یک گزینه بولی در فایل پیکربندی PAM، فقط نام گزینه را در آرگومانها بیاورید. برای تنظیم گزینهای که آرگومان میگیرد، پس از نام گزینه یک علامت مساوی (=) و مقدار آن را بدون هیچ فاصله خالی قرار دهید. فاصله خالی در آرگومانهای گزینهها در پیکربندی PAM پشتیبانی نمیشود.
برای تنظیم یک گزینه برای ماژول PAM در فایل krb5.conf سیستم، آن گزینه را در بخش "[appdefaults]" قرار دهید. همه گزینهها باید با علامت مساوی (=) و یک مقدار همراه باشند، بنابراین برای گزینههای بولی عبارت "= true" را اضافه کنید. ماژول PAM کربروس گزینهها را در بالاترین سطح بخش "[appdefaults]" یا در زیربخشی به نام "pam"، در داخل یا خارج از بخشی برای قلمرو، جستجو میکند. برای نمونه، قطعه کد زیر از یک فایل krb5.conf گزینه forwardable را روی true، گزینه minimum_uid را روی 1000، و ignore_k5login را فقط در صورتی که قلمرو EXAMPLE.COM باشد تنظیم میکند.
[appdefaults]
forwardable = true
pam = {
minimum_uid = 1000
EXAMPLE.COM = {
ignore_k5login = true
}
}
برای اطلاعات بیشتر درباره نحو نگارش krb5.conf، به krb5.conf(5) مراجعه کنید. توجه داشته باشید که گزینههای وابسته به قلمرو تنها بر اساس قلمرو پیشفرض تنظیم میشوند، خواه طبق پیکربندی در krb5.conf(5) یا تنظیمشده توسط گزینه realm که در زیر شرح داده شده است. اگر کاربر در حسابی که با قلمرو مشخص شده احراز هویت کند، آن قلمرو در تعیین گزینههای اعمالی استفاده نخواهد شد.
برای ماژول PAM تفاوتی ندارد که گزینهها در سطح بالا یا در بخش "pam" مشخص شوند؛ بخش "pam" برای مواردی پشتیبانی میشود که گزینههایی باید برای ماژول PAM تنظیم شوند اما برای سایر برنامهها اعمال نگردند.
اگر یک گزینه هم در krb5.conf و هم در پیکربندی PAM تنظیم شود، پیکربندی PAM تقدم دارد. اما توجه داشته باشید به دلیل نحو پیکربندی، راهی برای خاموش کردن یک گزینه بولی در پیکربندی PAM که در krb5.conf روشن شده است وجود ندارد.
ابتدای توضیحات هر گزینه با نسخهای از pam-krb5 علامتگذاری شده که آن گزینه با معنای فعلیاش در آن اضافه شده است.
مجازشماری (Authorization)
- alt_auth_map=<format>
- [3.12] عملکردی
مشابه
گزینه search_k5login
دارد.
آرگومان <format>
به عنوان
پرینسیپال
احراز هویت
کربروس
استفاده
میشود، و
هر %s در
<format> با نام
کاربری
جایگزین
میگردد.
اگر نام
کاربری
شامل علامت
"@"
باشد، تنها
بخش قبل از
قلمرو در
نام کاربری
برای
جایگزینی
%s به کار
میرود. اگر
<format> شامل یک
قلمرو
باشد، همان
استفاده
خواهد شد؛
در غیر این
صورت،
قلمرو نام
کاربری (در
صورت وجود)
به نتیجه
الحاق
میشود.
هیچگونه
حذف علامت
نقلقول
صورت
نمیگیرد.
اگر این گزینه موجود باشد، رفتار پیشفرض این است که ابتدا این پرینسیپال جایگزین را امتحان کرده و در صورت شکست، به رفتار استاندارد بازگردد. کاربرد اصلی آن اجازه دادن به استفاده از پرینسیپالهای جایگزین برای احراز هویت در برنامههایی مانند sudo است. بیشتر نمونهها شبیه این خواهند بود:
alt_auth_map=%s/root
که تلاش میکند ابتدا با نمونه root نام کاربری احراز هویت کند و سپس به نام کاربری عادی بازگردد (اما force_alt_auth و only_alt_auth را ببینید).
این گزینه همچنین راهی کمهزینه برای تلاش جهت احراز هویت در یک قلمرو جایگزین در ابتدا و سپس بازگشت به قلمرو اصلی را فراهم میکند. تنظیمی مانند:
alt_auth_map=%s@EXAMPLE.COM
ابتدا تلاش برای احراز هویت را در قلمرو EXAMPLE.COM انجام میدهد و سپس به قلمرو پیشفرض محلی بازمیگردد. این روش راحتتر از اجرای چندباره ماژول با چندین قلمرو پیشفرض تنظیمشده با realm است، اما بسیار محدود است: فقط دو قلمرو را میتوان امتحان کرد و قلمرو جایگزین همیشه ابتدا امتحان میشود.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد، هرچند معمولاً این کار منطقی نیست؛ معمولاً در گزینههای PAM پیکربندی برای برنامههای خاص استفاده میشود. این گزینه فقط برای گروههای auth و account کاربرد دارد. اگر این گزینه برای گروه auth تنظیم شده است، حتماً آن را برای گروه account نیز تنظیم کنید وگرنه مجازشماری حساب ممکن است با شکست مواجه شود.
- force_alt_auth
- [3.12] این گزینه
به همراه
alt_auth_map
استفاده
میشود و در
صورتی که
پرینسیپال
نگاشتشده
در KDC وجود
داشته
باشد،
احراز هویت
را با آن
اجباری
میکند.
ماژول PAM
کربروس
تنها در
صورتی که KDC
وضعیت
ناشناخته
بودن
پرینسیپال
را
برگرداند،
به احراز
هویت عادی
بازمیگردد.
این مورد
میتواند
برای اجبار
احراز هویت
با یک نمونه
جایگزین
استفاده
شود. اگر alt_auth_map
تنظیم نشده
باشد، هیچ
اثری ندارد.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.
- ignore_k5login
- [2.0] هرگز به
دنبال فایل
.k5login در
دایرکتوری
خانگی
کاربر نگرد.
در عوض، فقط
بررسی کن که
پرینسیپال
کربروس به
نام حساب
محلی نگاشت
میشود.
بررسی
پیشفرض
این است که
اطمینان
حاصل شود
قلمرو با
قلمرو محلی
مطابقت
دارد و بخش
کاربری
پرینسیپال
با نام حساب
محلی
مطابقت
دارد، اما
این مورد را
میتوان با
تنظیم
نگاشت aname به localname
در krb5.conf
سفارشی کرد.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و account کاربرد دارد.
- ignore_root
- [1.1] اگر نام
کاربری
"root" باشد
هیچ کاری
انجام نده.
فراخوانیهای
احراز هویت
و گذرواژه
در سکوت
شکست
میخورند
(که اجازه
میدهد این
وضعیت از
طریق کنترل
"optional" یا
"sufficient"
نادیده
گرفته شود)،
و
فراخوانیهای
حساب و نشست
(از جمله pam_setcred)
مقدار PAM_IGNORE را
برمیگردانند
که به
کتابخانه PAM
میگوید
طوری ادامه
دهد که گویی
در
پیکربندی PAM
نامی از
آنها برده
نشده است.
این گزینه
پشتیبانی
میشود و
باقی خواهد
ماند، اما
معمولاً
بهتر است به
جای آن از
minimum_uid
استفاده
کنید.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد.
- minimum_uid=<uid>
- [2.0] اگر نام
حساب احراز
هویتشده
با یک حساب
محلی
مطابقت
داشته باشد
و آن حساب
محلی دارای
UID کمتر از <uid>
باشد، هیچ
کاری انجام
نده. اگر هر
دوی این
شرایط
برقرار
باشد،
فراخوانیهای
احراز هویت
و گذرواژه
در سکوت
شکست
خواهند
خورد (که
اجازه
میدهد این
وضعیت با
کنترل
"optional" یا
"sufficient"
نادیده
گرفته شود)،
و
فراخوانیهای
حساب و نشست
(از جمله pam_setcred)
مقدار PAM_IGNORE را
برمیگردانند
که به
کتابخانه PAM
میگوید
طوری ادامه
دهد که گویی
در
پیکربندی PAM
نامی از
آنها برده
نشده است.
استفاده از این گزینه اگر نیازی به استفاده از کربروس برای احراز هویت ورودهای مبتنی بر گذرواژه به حساب root ندارید (که به دلیل نیاز کربروس به اتصال شبکه توصیه نمیشود) به شدت توصیه میگردد. این گزینه نوعی دفاع در عمق در برابر پرینسیپالهای کاربری که تصادفاً با یک حساب سیستمی مطابقت دارند و ممکن است به نادرستی به عنوان آن حساب سیستمی احراز هویت شوند، فراهم میآورد.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد.
- only_alt_auth
- [3.12] این گزینه
به همراه
alt_auth_map
استفاده
میشود و
استفاده از
پرینسیپال
نگاشتشده
را برای
احراز هویت
اجباری
میکند. این
گزینه
بازگشت به
احراز هویت
عادی را در
تمام موارد
غیرفعال
کرده و بر
search_k5login و force_alt_auth
ارجحیت
دارد. اگر
alt_auth_map تنظیم
نشده باشد،
هیچ اثری
ندارد و
رفتار
احراز هویت
استاندارد
استفاده
میشود.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.
- search_k5login
- [2.0] معمولاً
پیادهسازی
کربروس از
pam_authenticate تلاش
میکند تا
بلیتهایی
را برای نام
کاربری در
حال احراز
هویت در
قلمرو محلی
دریافت کند.
اگر این
گزینه
تنظیم شده
باشد و
کاربر محلی
یک فایل .k5login
در
دایرکتوری
خانگی خود
داشته
باشد،
ماژول در
عوض آن فایل
.k5login را باز
کرده و
میخواند،
و تلاش
میکند تا
با استفاده
از گذرواژه
ارائهشده
به عنوان هر
یک از
پرینسیپالهای
فهرستشده
در آن به
نوبت احراز
هویت کند.
اگر هر یک
از این
احراز
هویتها
موفقیتآمیز
باشد،
کاربر با
موفقیت
احراز هویت
خواهد شد؛
در غیر این
صورت،
احراز هویت
با شکست
مواجه
میشود. این
گزینه برای
اجازه دادن
به احراز
هویت با
گذرواژه (از
طریق کنسول
یا sshd بدون
پشتیبانی GSS-API)
در
حسابهای
اشتراکی
مفید است.
اگر فایل .k5login
وجود
نداشته
باشد،
رفتار
مانند حالت
عادی است.
استفاده از
این گزینه
مستلزم آن
است که فایل
.k5login کاربر در
زمان احراز
هویت قابل
خواندن
باشد.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.
رفتار کربروس (Kerberos Behavior)
- anon_fast
- [4.6] تلاش برای
استفاده از
تونلزنی
امن احراز
هویت
انعطافپذیر
(FAST) با احراز
هویت اولیه
به عنوان
کاربر
ناشناس (WELLKNOWN/ANONYMOUS)
و استفاده
از
اعتبارنامههای
آن به عنوان
زره FAST. این
امر مستلزم
فعال بودن PKINIT
ناشناس
برای قلمرو
محلی،
پیکربندی PKINIT
روی سیستم
محلی و
پشتیبانی
کتابخانه
کربروس از FAST
و PKINIT ناشناس
است.
مکانیزم FAST روشی برای محافظت از کربروس در برابر حملات حدس گذرواژه و ارائه سایر بهبودهای امنیتی است. برای کار کردن، FAST نیازمند دریافت بلیتی با یک کلید قوی است تا تبادلات با گذرواژههای کاربر را که بالقوه ضعیفتر هستند محافظت کند. این گزینه از احراز هویت ناشناس برای بهدست آوردن آن کلید استفاده کرده و سپس از آن برای محافظت از احراز هویت بعدی بهره میبرد.
اگر PKINIT ناشناس در دسترس نباشد یا با شکست مواجه شود، FAST استفاده نخواهد شد و احراز هویت به صورت عادی ادامه مییابد.
برای استفاده از یک کَش بلیت موجود برای اعتبارنامههای FAST، به جای این گزینه از fast_ccache استفاده کنید. اگر هر دوی fast_ccache و anon_fast تنظیم شده باشند، ابتدا کَش بلیت مشخصشده توسط fast_ccache امتحان میشود، و در صورتی که آن کَش قابل استفاده نباشد، ماژول PAM کربروس به تلاش برای PKINIT ناشناس بازمیگردد.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و password کاربرد دارد.
عملکرد مانند استفاده از گزینه fast_ccache است، اما کَش به صورت خودکار ایجاد و تخریب میشود. اگر هر دو گزینه fast_ccache و anon_fast استفاده شوند، fast_ccache اولویت دارد و هیچ احراز هویت ناشناسی انجام نمیشود.
- fast_ccache=<ccache_name>
- [4.3] مانند anon_fast،
اما از یک
کَش بلیت
کربروس
موجود به
جای PKINIT
ناشناس
استفاده
میکند. این
امکان
استفاده از
FAST را با
قلمرویی که
از PKINIT یا
احراز هویت
ناشناس
پشتیبانی
نمیکند
فراهم
میسازد.
آرگومان <ccache_name> باید کَش اعتبارنامهای حاوی بلیتی باشد که با استفاده از یک کلید قوی بهدست آمده است، مانند کلید تصادفی برای پرینسیپال میزبان سیستم محلی. اگر <ccache_name> به کَش بلیتی اشاره کند که توسط فرآیند احراز هویتکننده قابل خواندن است و بلیت دارد، آنگاه FAST امتحان خواهد شد. سادهترین راه برای استفاده از این گزینه استفاده از برنامهای مانند k5start برای نگهداری کَش بلیت با استفاده از keytab میزبان است. این کَش بلیت معمولاً فقط باید توسط root قابل خواندن باشد، بنابراین این گزینه قادر به محافظت از احراز هویتهایی که به عنوان کاربران غیر root انجام میشوند (مانند محافظهای صفحه نمایش) نخواهد بود.
اگر هیچ اعتبارنامهای در کَش بلیت موجود نباشد، یا اگر کَش بلیت وجود نداشته باشد یا قابل خواندن نباشد، FAST استفاده نخواهد شد و احراز هویت به صورت عادی ادامه مییابد. با این حال، اگر اعتبارنامههای موجود در آن کَش بلیت منقضی شده باشند و KDC از FAST پشتیبانی کند، احراز هویت شکست خواهد خورد.
برای استفاده از PKINIT ناشناس جهت محافظت از تبادل FAST، به جای آن از گزینه anon_fast استفاده کنید. پیکربندی anon_fast آسانتر است زیرا به کَش بلیت موجود نیازی ندارد، اما مستلزم در دسترس بودن و پیکربندی PKINIT و پشتیبانی قلمرو محلی از احراز هویت ناشناس است. اگر هر دوی fast_ccache و anon_fast تنظیم شده باشند، ابتدا کَش بلیت مشخصشده توسط fast_ccache امتحان میشود، و اگر آن کَش قابل استفاده نباشد، ماژول PAM کربروس به تلاش برای PKINIT ناشناس بازمیگردد.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و password کاربرد دارد.
- forwardable
- [1.0] دریافت
بلیتهای
قابل هدایت
(forwardable). در صورت
تنظیم (روی true
یا false، اگرچه
در krb5.conf فقط
میتوان آن
را روی false
تنظیم کرد)،
این گزینه
پیشفرض
کتابخانه
کربروس
تنظیمشده
در بخش [libdefaults]
فایل krb5.conf را
بازنویسی
میکند.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.
- keytab=<path>
- [3.0] فایل keytab
مورد
استفاده
هنگام
اعتبارسنجی
اعتبارنامههای
کاربر را
مشخص
میکند.
پیشفرض، keytab
پیشفرض
سیستم است
(معمولاً
/etc/krb5.keytab)، که
معمولاً
فقط توسط root
قابل
خواندن است.
برنامههایی
که به عنوان
root اجرا
نمیشوند و
از این
ماژول PAM
برای احراز
هویت
استفاده
میکنند،
ممکن است
مایل باشند
آن را به keytab
دیگری که
برنامه
میتواند
بخواند
هدایت کنند.
اولین
پرینسیپال
یافتشده
در keytab به
عنوان
پرینسیپال
برای
اعتبارسنجی
اعتبارنامه
استفاده
خواهد شد.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.
- realm=<realm>
- [2.2] تنظیم
قلمرو
پیشفرض
کربروس و
دریافت
اعتبارنامهها
در آن
قلمرو، به
جای قلمرو
پیشفرض
عادی این
سیستم. در
صورت
استفاده از
این گزینه،
برای نتایج
یکدست باید
برای تمام
گروههای
مورد
استفاده
تنظیم شود.
این تنظیم
بر تصمیمات
مجازشماری
تأثیر
میگذارد
زیرا قلمرو
پیشفرض را
تغییر
میدهد. این
تنظیم
همچنین
پرینسیپال
سرویس مورد
استفاده
برای
اعتبارسنجی
اعتبارنامههای
بهدستآمده
را تغییر
میدهد تا
در قلمرو
مشخصشده
باشد.
اگر فقط میخواهید قلمرو فرضی برای پرینسیپالهای کاربر را بدون تغییر قلمرو برای تصمیمات مجازشماری یا پرینسیپال سرویس مورد استفاده برای اعتبارسنجی اعتبارنامهها تنظیم کنید، گزینه user_realm را ببینید.
- renew_lifetime=<lifetime>
- [2.0] دریافت
بلیتهای
قابل تمدید
با حداکثر
طول عمر
تمدید <lifetime>.
مقدار <lifetime>
باید یک
رشته طول
عمر کربروس
مانند
"2d4h10m" یا
زمانی بر
حسب دقیقه
باشد. در
صورت
تنظیم، این
گزینه
مقدار
پیشفرض
کتابخانه
کربروس
تنظیمشده
در بخش [libdefaults]
فایل krb5.conf را
بازنویسی
میکند.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.
- ticket_lifetime=<lifetime>
- [3.0] دریافت
بلیتها با
حداکثر طول
عمر <lifetime>.
مقدار <lifetime>
باید یک
رشته طول
عمر کربروس
مانند
"2d4h10m" یا
زمانی بر
حسب دقیقه
باشد. در
صورت
تنظیم، این
گزینه
پیشفرض
کتابخانه
کربروس
تنظیمشده
در بخش [libdefaults]
فایل krb5.conf را
بازنویسی
میکند.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.
- user_realm
- [4.6] دریافت اعتبارنامهها در قلمرو مشخصشده به جای قلمرو پیشفرض این سیستم. اگر این گزینه استفاده شود، برای نتایج یکدست باید برای تمام گروههای مورد استفاده تنظیم گردد (اگرچه گروه account در حال حاضر به قلمرو اهمیتی نمیدهد). این کار تصمیمات مجازشماری را تغییر نمیدهد. اگر قرار است اعتبارنامههای بهدستآمده اجازه دسترسی به یک حساب پوسته را بدهند، کاربر به یک مدخل مناسب در فایل .k5login نیاز خواهد داشت یا سیستم باید نگاشت سفارشی aname_to_localname داشته باشد.
رفتار PAM (PAM Behavior)
- clear_on_fail
- [3.9] هنگام
تغییر
گذرواژهها،
PAM ابتدا یک
بررسی
مقدماتی در
کل پشته
گذرواژه
انجام
میدهد و
سپس هر
ماژول را
دوباره
برای انجام
تغییر
گذرواژه
فراخوانی
میکند. پس
از آن بررسی
مقدماتی،
ترتیب
فراخوانی
ماژولها
ثابت است.
این بدان
معناست که
حتی اگر
تغییر
گذرواژه
کربروس
شکست بخورد
(یا اگر یکی
از
تغییرهای
گذرواژه
دیگر در
پشته شکست
بخورد)،
سایر
ماژولهای
گذرواژه PAM
در پشته
همچنان
فراخوانی
خواهند شد
حتی اگر
ماژول
شکستخورده
required یا requisite
علامتگذاری
شده باشد.
هنگام
استفاده از
چندین
ماژول
گذرواژه PAM
برای
همگامسازی
گذرواژهها
بین چندین
سیستم در
زمان
تغییر، این
رفتار
میتواند
باعث
تفاوتهای
ناخواسته
بین
محیطها
شود.
تنظیم این گزینه راهکاری برای دور زدن این رفتار فراهم میکند. اگر این گزینه تنظیم شده باشد و تغییر گذرواژه کربروس تلاش شود و شکست بخورد (برای نمونه به دلیل خطاهای شبکه یا بررسی استحکام گذرواژه در KDC)، این ماژول گذرواژه ذخیرهشده در پشته PAM را پاک میکند. این کار هر ماژول بعدی را که گزینه use_authtok برای آن تنظیم شده باشد مجبور به شکست میکند تا آن محیطها از همگامی با گذرواژه در کربروس خارج نشوند. ماژول PAM کربروس اگر کاربر را به دلیل پیکربندی مانند minimum_uid رد کند، در گذرواژه ذخیرهشده دستکاری نخواهد کرد.
متأسفانه تنظیم این گزینه با سایر پیکربندیهای مطلوب PAM تداخل ایجاد میکند، مانند تلاش برای تغییر گذرواژه در کربروس در ابتدا و بازگشت به پایگاهداده محلی گذرواژه یونیکس در صورت شکست. بنابراین به صورت پیشفرض فعال نیست. هنگام همگامسازی گذرواژهها بین چندین محیط، آن را روشن کنید (و در صورت استفاده از pam_cracklib، ماژول pam_krb5 را بلافاصله پس از آن قرار دهید).
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه password کاربرد دارد.
- debug
- [1.0] ثبت
اطلاعات
ردیابی و
اشکالزدایی
پرجزئیاتتر
در syslog با
اولویت LOG_DEBUG،
شامل ورود
به هر یک از
رابطهای
خارجی PAM و
خروج از
آنها (به
جز pam_close_session).
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد.
- defer_pwchange
- [3.11] به طور
پیشفرض، pam-krb5
مدیریت
اعلان برای
تغییر
گذرواژه در
صورت
انقضای
گذرواژه یک
حساب در طول
گروه auth را به
کتابخانه
کربروس
واگذار
میکند. اگر
این کار
شکست
بخورد، pam_authenticate()
یک خطا
برمیگرداند.
طبق استاندارد PAM، این روش درستی برای مدیریت گذرواژههای منقضیشده نیست. در عوض، pam_authenticate() باید بدون تلاش برای تغییر گذرواژه موفقیت را برگرداند، و سپس pam_acct_mgmt() باید PAM_NEW_AUTHTOK_REQD را برگرداند، که در آن نقطه برنامه فراخواننده مسئول رد کردن احراز هویت یا فراخوانی pam_chauthtok() است. با این حال، پیروی از استاندارد مستلزم آن است که همه برنامهها pam_acct_mgmt() را فراخوانی کرده و وضعیت بازگشتی آن را بررسی کنند؛ در غیر این صورت، حسابهای منقضیشده ممکن است بتوانند با موفقیت احراز هویت شوند. بسیاری از برنامهها این کار را انجام نمیدهند.
اگر این گزینه تنظیم شود، pam-krb5 به جای شکست در pam_authenticate() از مکانیزم کاملاً استاندارد PAM برای مدیریت حسابهای منقضیشده استفاده میکند. با توجه به خطرات امنیتی برنامههای معیوب و فراگیر، در فعال کردن این گزینه بسیار محتاط باشید. معمولاً فقط باید برای حل یک مشکل خاص (مانند استفاده از کتابخانههای کربروس Solaris که از درخواست تغییر گذرواژه در طول احراز هویت پشتیبانی نمیکنند) و فقط برای برنامههای خاصی که مشخص است pam_acct_mgmt() را فراخوانی و وضعیت بازگشتی آن را به درستی بررسی میکنند، روشن شود.
این گزینه تنها زمانی پشتیبانی میشود که pam-krb5 با MIT Kerberos کامپایل شده باشد. اگر در برابر Heimdal کامپایل شده باشد، این گزینه هیچ کاری انجام نمیدهد و مدیریت عادی تغییر گذرواژه منقضیشده همچنان رخ میدهد. (Heimdal فاقد API لازم برای پیادهسازی این گزینه است، حداقل تا نسخه 1.6).
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.
- fail_pwchange
- [4.2] به طور
پیشفرض، pam-krb5
مدیریت
اعلان
تغییر
گذرواژه را
در صورت
انقضای
گذرواژه یک
حساب در
گروه auth به
کتابخانه
کربروس
واگذار
میکند. اگر
این گزینه
تنظیم شود،
با
گذرواژههای
منقضیشده
به عنوان یک
شکست احراز
هویت مشابه
با گذرواژه
نادرست
رفتار
میشود.
همچنین defer_pwchange
و force_pwchange را
ببینید.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.
- force_pwchange
- [3.11] اگر این
گزینه
تنظیم شده
باشد و
احراز هویت
با خطای
کربروس
مبنی بر
منقضی شدن
گذرواژه
کاربر شکست
بخورد،
بلافاصله
در طول
مرحله authenticate
برای تغییر
گذرواژه
آنها تلاش
میشود. در
شرایط
عادی، این
کار
غیرضروری
است. بیشتر
کتابخانههای
کربروس این
کار را برای
شما انجام
میدهند، و
تنظیم این
گزینه باعث
میشود در
صورت شکست
اولین تلاش
(انجامشده
توسط
کتابخانه
کربروس)، دو
بار از
کاربر برای
تغییر
گذرواژهاش
درخواست
شود. با این
حال، برخی
از
کتابخانههای
کربروس
سیستمی
(مانند Solaris)
درخواست
تغییر
گذرواژه در
کتابخانه
کربروس را
غیرفعال
کردهاند؛
در این
سیستمها،
میتوانید
این گزینه
را برای
شبیهسازی
رفتار عادی
کتابخانه
تنظیم کنید.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.
- no_update_user
- [4.7] به طور
معمول، اگر
pam-krb5 بتواند
پرینسیپال
را با
استفاده از
فراخوانیهای
krb5_aname_to_localname() یا
مشابههای
آن به یک
نام محلی
تبدیل کند،
متغیر PAM_USER را
برای این
نشست PAM به
نام محلی
استاندارد
تغییر
میدهد.
تنظیم این
گزینه این
رفتار را
غیرفعال
کرده و PAM_USER را
روی هویت
احراز هویت
اولیه رها
میکند.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.
- silent
- [1.0] پیامها و
خطاهای
کربروس،
مانند
هشدارهای
انقضای
گذرواژه را
از طریق
اعلانگر
به کاربر
نشان نده.
این معادل
رفتاری است
که برنامه
PAM_SILENT را ارسال
میکند،
اما
میتواند
در
پیکربندی PAM
تنظیم شود.
این گزینه فقط برای گروههای auth و password کاربرد دارد.
- trace=<log-file>
- [4.6] در صورت پشتیبانی توسط کتابخانه کربروس، ثبت ردیابی کتابخانه کربروس را در فایل لاگ مشخصشده فعال میکند. این قابلیت برای اشکالزدایی موقت در نظر گرفته شده است. دادهها بدون بررسیهای امنیتی بیشتر به فایل مشخصشده الحاق میشوند، بنابراین فایلی را در یک دایرکتوری با قابلیت نوشتن همگانی مشخص نکنید.
PKINIT
- pkinit_anchors=<anchors>
- [3.0] هنگام
انجام
احراز هویت
PKINIT، از <anchors> به
عنوان
لنگرهای
اعتماد
کارخواه (trust anchors)
استفاده کن.
این مقدار
معمولاً
ارجاعی به
یک فایل
حاوی مراجع
صدور گواهی
(CA) معتمد است.
این گزینه
تنها در
صورتی
استفاده
میشود که
try_pkinit یا use_pkinit
تنظیم شده
باشند.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و password کاربرد دارد.
- pkinit_prompt
- [3.0] قبل از
تلاش برای
احراز هویت
PKINIT، از کاربر
بخواهید
کارت
هوشمند را
وارد کند.
ممکن است
بخواهید
این گزینه
را برای
برنامههایی
مانند gnome-screensaver
تنظیم کنید
که به محض
حرکت ماوس PAM
را
فراخوانی
میکنند و
به کاربر
فرصتی برای
وارد کردن
ابتدا کارت
هوشمند
نمیدهند.
هرگونه
اطلاعات
واردشده در
اولین
اعلان
نادیده
گرفته
میشود. اگر
try_pkinit تنظیم
شده باشد،
کاربری که
مایل است به
جای آن از
گذرواژه
استفاده
کند
میتواند
به سادگی
کلید Enter را
فشار دهد و
سپس
گذرواژه
خود را به
صورت عادی
وارد نماید.
این گزینه
تنها در
صورتی
استفاده
میشود که
try_pkinit یا use_pkinit
تنظیم شده
باشند.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و password کاربرد دارد.
- pkinit_user=<userid>
- [3.0] هنگام
انجام
احراز هویت
PKINIT، از <userid> به
عنوان
شناسه
کاربر (ID)
استفاده کن.
مقدار این
رشته بسیار
به نوع
پیادهسازی
PKINIT مورد
استفاده
شما بستگی
دارد، اما
عموماً
چیزی شبیه
به این
خواهد بود:
PKCS11:/usr/lib/pkcs11/lib/soft-pkcs11.so
تا ماژول مورد استفاده با کارت هوشمند را مشخص کند. همچنین ممکن است به یک گواهی کاربر یا انواع دیگر شناسههای کاربری اشاره داشته باشد. برای جزئیات بیشتر به مستندات کتابخانه کربروس مراجعه کنید. این گزینه تنها در صورتی استفاده میشود که try_pkinit یا use_pkinit تنظیم شده باشند.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و password کاربرد دارد.
- preauth_opt=<option>
- [3.3] یک گزینه
پیشاحراز
هویت (preauth) را
تنظیم
میکند (در
حال حاضر
تنها زمانی
کاربرد
دارد که با MIT
Kerberos کامپایل
شده باشد).
مقدار <option> یا
یک جفت
کلید/مقدار
است که کلید
با "=" از
مقدار جدا
شده است یا
یک گزینه
بولی (که در
این صورت
روشن
میشود). در
krb5.conf،
گزینههای
چندگانه
باید با
فاصله خالی
جدا شوند.
در
پیکربندی
PAM، این
گزینه
میتواند
چندین بار
برای تنظیم
چند گزینه
آورده شود.
در هر دو
حالت، <option>
نباید شامل
فاصله خالی
باشد.
کاربرد اصلی این گزینه، حداقل در آینده نزدیک، تنظیم گزینههایی برای پشتیبانی PKINIT در MIT Kerberos خواهد بود. برای فهرست کامل گزینههای ممکن، به مستندات پلاگین PKINIT مراجعه کنید. در زمان نگارش این سند، "X509_user_identity" معادل pkinit_user و "X509_anchors" معادل pkinit_anchors است. گزینه "flag_DSA_PROTOCOL" تنها از طریق این گزینه قابل تنظیم است.
هرگونه تنظیمی که با این گزینه انجام شود پس از گزینههای pkinit_anchors و pkinit_user اعمال میشود، بنابراین اگر تنظیم معادلی از طریق preauth_opt انجام شود، احتمالاً تنظیم دیگر را بازنویسی خواهد کرد.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و password کاربرد دارد. توجه داشته باشید که هیچ راهی برای حذف تنظیمی که در krb5.conf انجام شده با استفاده از پیکربندی PAM وجود ندارد، اما گزینههای تنظیمشده در پیکربندی PAM پس از گزینههای تنظیمشده در krb5.conf اعمال میشوند و بنابراین ممکن است تنظیمات قبلی را بازنویسی کنند.
- try_pkinit
- [3.0] قبل از
امتحان
گذرواژه
عادی،
احراز هویت
PKINIT را امتحان
کن.
احتمالاً
باید گزینه
پیکربندی
pkinit_user را نیز
تنظیم کنید.
اگر PKINIT با
شکست مواجه
شود، ماژول
PAM به احراز
هویت با
گذرواژه
عادی
بازمیگردد.
این گزینه
در حال حاضر
تنها در
صورتی
پشتیبانی
میشود که pam-krb5
در برابر Heimdal 0.8rc1
یا جدیدتر
یا MIT Kerberos 1.6.3 یا
جدیدتر
کامپایل
شده باشد.
اگر این گزینه تنظیم شود و pam-krb5 با MIT Kerberos کامپایل شده باشد، و PKINIT با شکست مواجه شده و ماژول به احراز هویت با گذرواژه بازگردد، گذرواژه کاربر در دادههای پشته PAM برای ماژولهای بعدی ذخیره نخواهد شد. این یک اشکال در تعامل بین ماژول و MIT Kerberos است که برای رفع آن نیاز به بازنگری در روش احراز هویت PKINIT دارد.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و password کاربرد دارد.
- use_pkinit
- [3.0, 4.9 برای MIT Kerberos]
احراز هویت
PKINIT را الزامی
کن.
احتمالاً
باید گزینه
پیکربندی
pkinit_user را نیز
تنظیم کنید.
اگر PKINIT با
شکست مواجه
شود، احراز
هویت شکست
خواهد خورد.
این گزینه
تنها در
صورتی
پشتیبانی
میشود که pam-krb5
در برابر Heimdal 0.8rc1
یا جدیدتر
یا MIT Kerberos 1.12 یا
جدیدتر
کامپایل
شده باشد.
توجه داشته باشید که با MIT Kerberos، این گزینه با استفاده از یک پاسخدهنده بدون اعلانگر پیادهسازی شده است، و بنابراین هرگونه پیام اطلاعاتی از کتابخانههای کربروس یا KDC در طول احراز هویت نمایش داده نخواهد شد.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و password کاربرد دارد.
اعلانها (Prompting)
- [3.0] به طور
پیشفرض،
اعلانها
هنگام
تغییر
گذرواژه
توسط کاربر
به شرح زیر
هستند:
Current Kerberos password: Enter new Kerberos password: Retype new Kerberos password:
رشته "Kerberos" درج شده است تا کاربران درباره اینکه کدام گذرواژه را تغییر میدهند سردرگم نشوند. تنظیم این گزینه کلمه "Kerberos" را با هر آنچه این گزینه روی آن تنظیم شده جایگزین میکند. تنظیم این گزینه روی یک رشته خالی، کلمه قبل از "password:" را به طور کامل حذف میکند.
در صورت تنظیم در پیکربندی PAM، مقدار <banner> نباید شامل فاصله خالی باشد. اگر مقداری حاوی فاصله خالی میخواهید، آن را در krb5.conf تنظیم کنید.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه password کاربرد دارد.
- expose_account
- [3.0] به طور
پیشفرض،
اعلان
گذرواژه
ماژول PAM
کربروس به
سادگی "Password:"
است. این
امر از
افشای
هرگونه
اطلاعات
درباره
قلمرو
سیستم یا
تبدیلهای
حساب به
پرینسیپال
جلوگیری
میکند. اگر
این گزینه
تنظیم شود،
رشته "for <principal>"
قبل از دو
نقطه اضافه
میشود، که
در آن <principal>
پرینسیپال
کاربر است.
این رشته
همچنین قبل
از دو نقطه
در
اعلانهای
هنگام
تغییر
گذرواژه
کاربر
اضافه
میشود.
فعال کردن این گزینه با فعال بودن ChallengeResponseAuthentication در OpenSSH ممکن است برای برخی از کارخواههای ssh که فقط "Password:" را به عنوان اعلان میشناسند مشکلاتی ایجاد کند. این گزینه در صورت فعال بودن search_k5login به طور خودکار غیرفعال میشود زیرا پرینسیپال نمایشدادهشده نادرست خواهد بود.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و password کاربرد دارد.
- force_first_pass
- [4.0] استفاده
از گذرواژه
بهدستآمده
توسط یک
ماژول
احراز هویت
یا گذرواژه
قبلی برای
احراز هویت
کاربر بدون
درخواست
مجدد از
کاربر. اگر
هیچ ماژول
قبلی
گذرواژه
کاربر را
بهدست
نیاورده
باشد، بدون
درخواست از
کاربر شکست
بخور.
همچنین
برای
نسخههای
ضعیفتر
این گزینه
به try_first_pass و use_first_pass
مراجعه
کنید.
این گزینه فقط برای گروههای auth و password کاربرد دارد. برای گروه password، فقط برای گذرواژه قدیمی اعمال میشود. برای تنظیمی مشابه در مورد گذرواژه جدید به use_authtok مراجعه کنید.
- no_prompt
- [4.6] هرگز برای
گذرواژه
فعلی اعلان
نشان نده.
در عوض، یک
گذرواژه NULL
به
کتابخانه
کربروس
ارسال کن و
اجازه بده
کتابخانه
کربروس
اعلان را
انجام دهد.
این ممکن
است در
صورتی لازم
باشد که
برای نمونه
کتابخانه
کربروس
برای
استفاده از
مکانیزمهای
احراز هویت
دیگری غیر
از گذرواژه
پیکربندی
شده باشد و
نیاز به
کنترل کامل
بر فرآیند
اعلان
داشته باشد.
عیب عمده این گزینه این است که ماژول PAM هرگز گذرواژه کاربر را نخواهد دید و بنابراین نمیتواند آن را در دادههای ماژول PAM برای ماژولهای بعدی ذخیره کند. به عبارت دیگر، اگر ماژول دیگری در پشته پشت ماژول PAM کربروس قرار داشته باشد و بخواهد از use_first_pass استفاده کند، این گزینه قابل استفاده نیست. کتابخانه کربروس همچنین معمولاً پرینسیپال را در اعلان میآورد، و بنابراین این گزینه رفتاری مشابه با expose_account را ایجاب میکند. همانند expose_account، این امر میتواند در صورت فعال بودن ChallengeResponseAuthentication در OpenSSH مشکلاتی ایجاد کند، زیرا کارخواهها ممکن است اعلانهای گذرواژهای غیر از "Password:" را نشناسند.
استفاده از این گزینه با search_k5login منجر به اعلان گذرواژه برای هر پرینسیپال فهرستشده در فایل .k5login کاربر خواهد شد. این احتمالاً رفتار مطلوبی نیست، هرچند توسط ماژول منع نشده است.
این گزینه فقط برای گروههای auth و password کاربرد دارد. برای گروه password، فقط برای فرآیند احراز هویت اعمال میشود؛ همچنان برای گذرواژه جدید از کاربر درخواست خواهد شد.
- prompt_principal
- [3.6] قبل از
درخواست
گذرواژه
کاربر (یا
استفاده از
گذرواژه
واردشده
قبلی در
صورت تنظیم
try_first_pass، use_first_pass یا
force_first_pass)، از
کاربر
پرینسیپال
کربروس
مورد
استفاده
برای احراز
هویت را
درخواست کن.
این به
کاربر
اجازه
میدهد با
پرینسیپالی
متفاوت از
پرینسیپال
متناظر با
نام کاربری
محلی احراز
هویت کند،
مشروط بر
اینکه فایل
.k5login یا نگاشت
محلی
پرینسیپال
کربروس به
حساب، به آن
پرینسیپال
اجازه
دسترسی به
حساب محلی
را بدهد.
هنگام استفاده از این گزینه پیکربندی محتاط باشید و آن را با PasswordAuthentication در OpenSSH استفاده نکنید، بلکه فقط با ChallengeResponseAuthentication به کار برید. برخی از برنامههای مبتنی بر PAM انتظار دارند ماژولهای PAM فقط برای گذرواژه اعلان دهند و حتی ممکن است بدون توجه به اینکه اعلان چیست، کورکورانه گذرواژه را به اولین اعلان بدهند. چنین برنامههایی در ترکیب با این گزینه ممکن است گذرواژه کاربر را در پیامهای لاگ و درخواستهای کربروس افشا کنند.
- try_first_pass
- [1.0] اگر ماژول
احراز هویت
اولین
ماژول در
پشته نباشد
و یک ماژول
قبلی
گذرواژه
کاربر را
بهدست
آورده
باشد، از آن
گذرواژه
برای احراز
هویت کاربر
بدون
درخواست
مجدد از او
استفاده کن.
اگر آن
احراز هویت
شکست
بخورد، به
درخواست
گذرواژه از
کاربر
بازگرد. این
گزینه در
صورتی که
ماژول
احراز هویت
اولین در
پشته باشد
یا هیچ
ماژول قبلی
گذرواژه
کاربر را
بهدست
نیاورده
باشد، هیچ
اثری ندارد.
همچنین
برای
نسخههای
قویتر این
گزینه به
use_first_pass و force_first_pass
مراجعه
کنید.
این گزینه فقط برای گروههای auth و password کاربرد دارد. برای گروه password، فقط برای گذرواژه قدیمی اعمال میشود.
- use_authtok
- [4.0] هنگام
تغییر
گذرواژهها،
از گذرواژه
جدید
بهدستآمده
توسط یک
ماژول
گذرواژه
قبلی
استفاده
کن، به جای
اینکه
گذرواژه
جدید را
درخواست
کنی. اگر
گذرواژه
جدید در
دسترس
نباشد،
شکست بخور.
این
میتواند
برای الزام
بررسی
گذرواژهها
توسط یک
ماژول قبلی
دیگر مانند
pam_cracklib
استفاده
شود.
این گزینه فقط برای گروه password کاربرد دارد.
- use_first_pass
- [1.0] از
گذرواژه
بهدستآمده
توسط یک
ماژول
احراز هویت
قبلی برای
احراز هویت
کاربر بدون
درخواست
مجدد
استفاده کن.
اگر هیچ
ماژول قبلی
گذرواژه
کاربر را
برای احراز
هویت یا
تغییر
گذرواژه
بهدست
نیاورده
باشد، به
درخواست از
کاربر
بازگرد. اگر
یک ماژول
قبلی
گذرواژه
کاربر را
بهدست
آورده باشد
اما احراز
هویت با آن
گذرواژه
شکست
بخورد،
بدون
درخواست
بیشتر از
کاربر شکست
بخور.
همچنین
برای
نسخههای
دیگر این
گزینه به
try_first_pass و force_first_pass
مراجعه
کنید.
این گزینه فقط برای گروههای auth و password کاربرد دارد. برای گروه password، فقط برای گذرواژه قدیمی اعمال میشود. برای تنظیمی مشابه در مورد گذرواژه جدید به use_authtok مراجعه کنید.
کَشهای بلیت (Ticket Caches)
- ccache=<pattern>
- [2.0] از <pattern> به
عنوان الگو
برای ساخت
نامهای
کَش
اعتبارنامه
استفاده کن.
مقدار <pattern>
باید به شکل
<type>:<residual> باشد
که در صورت
استفاده از
کَش مبتنی
بر فایل، <type>
و دو نقطه
بعدی
اختیاری
هستند. توکن
ویژه %u
در هر کجای
<pattern> با شناسه
عددی (UID)
کاربر
جایگزین
میشود.
توکن ویژه
%p در هر
کجای <pattern> با
شناسه
فرآیند
فعلی (PID)
جایگزین
میشود.
اگر <pattern> به رشته دقیق "XXXXXX" (شش تا X) ختم شود، آن رشته با نویسههای تصادفی تولیدشده جایگزین خواهد شد و کَش بلیت با استفاده از mkstemp(3) ایجاد میشود. در صورتی که <pattern> به دایرکتوری با امکان نوشتن همگانی اشاره کند، این کار به شدت توصیه میشود.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و session کاربرد دارد.
- ccache_dir=<directory>
- [1.2] هم کَش
بلیت موقت
مورد
استفاده در
طول احراز
هویت و هم
کَشهای
بلیت کاربر
را به جای /tmp
در <directory>
ذخیره کن.
الگوریتم
تولید نام
کَش بلیت در
غیر این
صورت بدون
تغییر باقی
میماند.
میتوان
پیشوند
"FILE:" را
به <directory>
اضافه کرد
تا نوع کَش
بدون ابهام
باشد (و این
ممکن است در
سیستمهایی
که از نوع
کَشی غیر از
فایل به
عنوان
پیشفرض
استفاده
میکنند
الزامی
باشد).
توجه داشته باشید که pam_krb5 در طول فرآیند ورود یک فایل کَش بلیت موقت متعلق به root ایجاد و ذخیره میکند. اگر گزینه ccache را در بالا تنظیم کنید تا از استفاده از دایرکتوری /tmp سیستم برای کَشهای بلیت کاربر خودداری شود، ممکن است بخواهید ccache_dir را نیز تنظیم کنید تا آن کَشهای موقت به مکان دیگری منتقل شوند. این به pam_krb5 اجازه میدهد حتی در صورت پر بودن دایرکتوری /tmp سیستم به کار خود ادامه دهد.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و session کاربرد دارد.
- no_ccache
- [1.0] پس از
احراز هویت
کَش بلیت
ایجاد نکن.
این گزینه
نباید به
طور کلی
تنظیم شود،
اما به
عنوان بخشی
از
پیکربندی PAM
برای سرویس
خاصی که از PAM
برای احراز
هویت
استفاده
میکند اما
نشستهای
کاربری
ایجاد
نمیکند و
سربار
نوشتن
اعتبارنامههای
کاربر روی
دیسک را
نمیخواهد،
مفید است.
هنگام
استفاده از
این گزینه،
برنامه فقط
باید pam_authenticate()
را
فراخوانی
کند؛ توابع
دیگر مانند
pam_setcred()، pam_start_session() و
pam_acct_mgmt() با این
گزینه
منطقی
نیستند. اگر
برنامه به
فراخوانیهای
مدیریت
حساب و نشست
PAM نیاز
دارد، از
این گزینه
استفاده
نکنید.
این گزینه فقط برای گروه auth کاربرد دارد.
- retain_after_close
- [2.3] به طور
معمول، کَش
بلیت کاربر
هنگام
فراخوانی
pam_end() یا pam_close_session()
توسط
برنامه
احراز
هویتکننده
از بین
میرود تا
پس از خروج
کاربر
کَشهای
بلیت باقی
نمانند. اما
در برخی
موارد این
رفتار
مطلوب نیست.
(برای نمونه
در Solaris 8 رفتار
پیشفرض به
این معنی
است که
فرآیند
ورود قبل از
اجرای
پوسته
کاربر، کَش
بلیت را از
بین
میبرد).
اگر این
گزینه
تنظیم شود،
ماژول PAM
هرگز کَش
بلیت کاربر
را از بین
نخواهد برد.
اگر این
گزینه را
تنظیم
کنید، ممکن
است
بخواهید kdestroy
را در
پیکربندی
خروج پوسته
فراخوانی
کنید یا یک
برنامه حذف
فایل موقت
را اجرا
کنید تا از
انباشت
صدها کَش
بلیت در /tmp
جلوگیری
شود.
این گزینه را میتوان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروههای auth و session کاربرد دارد.
محیط (ENVIRONMENT)
- KRB5CCNAME
- توسط pam_setcred() با گزینه PAM_ESTABLISH_CRED و در نتیجه همچنین توسط pam_open_session() تنظیم میشود تا به کَش اعتبارنامه جدید برای کاربر اشاره کند. گزینههای ccache و ccache_dir را ببینید. به طور پیشفرض، نام کَش با پیشوند "FILE:" همراه خواهد بود تا نوع کَش بدون ابهام باشد.
- PAM_KRB5CCNAME
- توسط pam_authenticate() تنظیم میشود تا به کَش بلیت موقت مورد استفاده برای احراز هویت اشاره کند (مگر اینکه گزینه no_ccache داده شده باشد). سپس pam_setcred() از آن متغیر محیطی برای یافتن کَش موقت استفاده میکند حتی اگر در همان نشست PAM به عنوان pam_authenticate() فراخوانی نشده باشد (مشکلی در sshd که در برخی حالتها اجرا میشود). این متغیر محیطی فقط در داخل ماژول PAM استفاده میشود.
فایلها (FILES)
- /tmp/krb5cc_UID_RANDOM
- نام پیشفرض کَش اعتبارنامه. مقدار UID شناسه عددی دهدهی کاربر محلی و RANDOM یک رشته تصادفی ششنویسهای است. الگو را میتوان با گزینه ccache و دایرکتوری را با گزینه ccache_dir تغییر داد.
- /tmp/krb5cc_pam_RANDOM
- نام کَش اعتبارنامه مورد استفاده برای کَش اعتبارنامه موقت ایجادشده توسط pam_authenticate(). این کَش هنگام پایان نشست PAM یا فراخوانی pam_setcred() دوباره حذف میشود و معمولاً برای کاربر قابل مشاهده نخواهد بود. مقدار RANDOM یک رشته تصادفی ششنویسهای است.
- ~/.k5login
- فایل حاوی پرینسیپالهای کربروس که مجاز به دسترسی به آن حساب هستند.
اشکالات (BUGS)
اگر try_pkinit تنظیم شده باشد و pam-krb5 با MIT Kerberos کامپایل شده باشد، در صورتی که PKINIT شکست بخورد و ماژول به احراز هویت با گذرواژه بازگردد، گذرواژه کاربر در دادههای PAM برای ماژولهای بعدی ذخیره نمیشود.
هشدارها (CAVEATS)
هنگام استفاده از این ماژول برای ورودهای تعاملی، حتماً آن را هم در گروه session و هم در گروه auth فهرست کنید. در غیر این صورت، برخی از برنامهها (مانند OpenSSH) کَش بلیت کاربر را به درستی تنظیم نخواهند کرد.
کتابخانه کربروس، از طریق pam-krb5، در صورت منقضی شدن گذرواژه به کاربر اعلان میکند که گذرواژه خود را تغییر دهد، اما هنگام استفاده از OpenSSH، این کار تنها در صورتی کار میکند که ChallengeResponseAuthentication فعال باشد. مگر اینکه این گزینه فعال باشد، OpenSSH پیامهای PAM را به کاربر ارسال نمیکند و فقط میتواند به یک اعلان ساده گذرواژه پاسخ دهد.
اگر از MIT Kerberos استفاده میکنید، توجه داشته باشید که از کاربرانی که گذرواژهشان منقضی شده است درخواست تغییر گذرواژه نخواهد شد مگر اینکه پیکربندی KDC برای قلمرو شما در بخش [realms] فایل krb5.conf حاوی تنظیم master_kdc باشد یا در صورت استفاده از رکوردهای DNS SRV، یک مدخل DNS برای _kerberos-master و همچنین _kerberos داشته باشید.
تابع pam_authenticate() هنگام فراخوانی برای یک حساب نادیدهگرفتهشده، شکست را برمیگرداند، که مدیر سیستم را ملزم میکند از "optional" یا "sufficient" برای نادیده گرفتن ماژول و رفتن به ماژول بعدی استفاده کند. مسلماً بازگرداندن PAM_IGNORE درستتر است که باعث میشود ماژول طوری نادیده گرفته شود که گویی در پیکربندی نبوده است، اما این امر خطر رخنه امنیتی ناخواسته را هنگام فهرست کردن pam-krb5 به عنوان تنها ماژول احراز هویت افزایش میدهد.
این ماژول به جای تلاش برای استفاده از گذرواژه خالی جهت اجتناب از رفتارهای ناخواسته اعلان در کتابخانههای کربروس، با گذرواژه خالی به عنوان یک شکست احراز هویت رفتار میکند. اگر پرینسیپال کربروسی دارید که عمداً دارای گذرواژه خالی است، با این ماژول کار نخواهد کرد.
اگر این ماژول با UID یا GID مؤثری متفاوت از UID یا GID واقعی فراخوانی شود، کَش بلیت موجود را تازهسازی نخواهد کرد، زیرا تازهسازی کَش بلیت موجود مستلزم اعتماد به متغیر محیطی KRB5CCNAME است و در زمینه setuid نباید به متغیرهای محیطی اعتماد کرد.
نسخههای قدیمی OpenSSH معروف هستند به اینکه pam_authenticate را به همراه pam_setcred(PAM_REINITIALIZE_CRED) بدون فراخوانی قبلی pam_open_session فراخوانی میکنند، و بدین ترتیب درخواست تمدید یک کَش بلیت موجود را دارند (مشابه آنچه یک محافظ صفحه نمایش میخواهد) به جای اینکه درخواست ایجاد یک کَش بلیت جدید را داشته باشند. از آنجا که این رفتار در سطح PAM از یک محافظ صفحه نمایش قابل تشخیص نیست، pam-krb5 هنگام استفاده با این نسخههای قدیمی OpenSSH، کَش بلیت دیمن OpenSSH را به جای راهاندازی یک کَش بلیت جدید برای کاربر تازهسازی میکند. کَش بلیت حاصل دارای دسترسیهای درستی خواهد بود، اما نام درستی نخواهد داشت یا در محیط کاربر به آن ارجاع داده نخواهد شد و با ورود کاربر بعدی بازنویسی میشود. بهترین راهحل برای این مشکل ارتقای OpenSSH است. دقیقاً مشخص نیست که این مشکل چه زمانی برطرف شد، اما حداقل OpenSSH 4.3 و نسخههای جدیدتر آن را نشان نمیدهند.
نویسنده (AUTHOR)
ماژول pam-krb5 در ابتدا توسط فرانک کیوساک (Frank Cusack) نوشته شد. آندرس سالومون (Andres Salomon) تغییرات گستردهای اعمال کرد، و سپس راس آلبرت (Russ Allbery) <eagle@eyrie.org> نگهداری آن را بر عهده گرفت و اصلاحات گستردهتری انجام داد. راس آلبرت در حال حاضر نگهداری این ماژول را بر عهده دارد.
حق نشر و مجوز (COPYRIGHT AND LICENSE)
حق نشر 2005-2010, 2014, 2020 متعلق به Russ Allbery <eagle@eyrie.org>
حق نشر 2008-2014 متعلق به هیئت امنای دانشگاه لیلاند استنفورد جونیور
کپی و توزیع این فایل، با یا بدون تغییر، در هر رسانهای بدون حق امتیاز مجاز است به شرطی که اطلاعیه حق نشر و این اطلاعیه حفظ شوند. این فایل به صورت «همانگونه که هست» و بدون هیچگونه ضمانتی ارائه میشود.
شناسه مجوز SPDX: FSFAP
همچنین ببینید (SEE ALSO)
kadmin(8), kdestroy(1), krb5.conf(5), pam(7), passwd(1), syslog(3)
نسخه فعلی این ماژول در صفحه وب آن در نشانی زیر در دسترس است: https://www.eyrie.org/~eagle/software/pam-krb5.
| 2021-10-17 | 4.11 |