PAM_KRB5(5) pam-krb5 PAM_KRB5(5)

pam_krb5 - ماژول احراز هویت کربروس برای PAM

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

ماژول سرویس کربروس برای PAM، که معمولاً در مسیر /lib/security/pam_krb5.so نصب می‌شود، قابلیت‌هایی را برای چهار عملیات PAM فراهم می‌آورد: احراز هویت، مدیریت حساب، مدیریت نشست و مدیریت گذرواژه. فایل pam_krb5.so یک شیء اشتراکی است که در صورت نیاز بر اساس پیکربندی PAM سیستم به صورت پویا توسط زیرسیستم PAM بارگیری می‌شود. سامانه PAM ساختاری برای اتصال ماژول‌های خارجی احراز هویت و مدیریت نشست است تا هر برنامه مجبور نباشد بهترین راه بررسی احراز هویت کاربر یا ایجاد نشست کاربری را در آن سیستم بداند. برای جزئیات بیشتر در مورد نحوه پیکربندی PAM در سیستم خود، صفحه راهنمای PAM، اغلب pam(7) را ببینید.

اقدامات این ماژول هنگام فراخوانی از هر گروه به شرح زیر است:

پیاده‌سازی توابع 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 را می‌بندد و در نتیجه نشست کاربر را پاکسازی می‌نماید.

پیاده‌سازی pam_open_session() (که معادل فراخوانی pam_setcred() با فلگ PAM_ESTABLISH_CRED است) و pam_close_session() (که کَش بلیت ایجادشده توسط pam_setcred() را از بین می‌برد) را فراهم می‌کند.
پیاده‌سازی pam_acct_mgmt() را فراهم می‌کند. تمام کاری که انجام می‌دهد این است که همان بررسی مجازشماری را که توسط پیاده‌سازی pam_authenticate() شرح داده شده در بالا انجام می‌شود، تکرار کند.
پیاده‌سازی 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 نیست. این ماژول از بسیاری از همان گزینه‌ها پشتیبانی می‌کند، برخی گزینه‌های اضافی دارد و از برخی گزینه‌هایی که آن ماژول‌ها پشتیبانی می‌کنند پشتیبانی نمی‌کند.

ماژول 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 علامت‌گذاری شده که آن گزینه با معنای فعلی‌اش در آن اضافه شده است.

[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 نیز تنظیم کنید وگرنه مجازشماری حساب ممکن است با شکست مواجه شود.

[3.12] این گزینه به همراه alt_auth_map استفاده می‌شود و در صورتی که پرینسیپال نگاشت‌شده در KDC وجود داشته باشد، احراز هویت را با آن اجباری می‌کند. ماژول PAM کربروس تنها در صورتی که KDC وضعیت ناشناخته بودن پرینسیپال را برگرداند، به احراز هویت عادی بازمی‌گردد. این مورد می‌تواند برای اجبار احراز هویت با یک نمونه جایگزین استفاده شود. اگر alt_auth_map تنظیم نشده باشد، هیچ اثری ندارد.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.

[2.0] هرگز به دنبال فایل .k5login در دایرکتوری خانگی کاربر نگرد. در عوض، فقط بررسی کن که پرینسیپال کربروس به نام حساب محلی نگاشت می‌شود. بررسی پیش‌فرض این است که اطمینان حاصل شود قلمرو با قلمرو محلی مطابقت دارد و بخش کاربری پرینسیپال با نام حساب محلی مطابقت دارد، اما این مورد را می‌توان با تنظیم نگاشت aname به localname در krb5.conf سفارشی کرد.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه‌های auth و account کاربرد دارد.

[1.1] اگر نام کاربری "root" باشد هیچ کاری انجام نده. فراخوانی‌های احراز هویت و گذرواژه در سکوت شکست می‌خورند (که اجازه می‌دهد این وضعیت از طریق کنترل "optional" یا "sufficient" نادیده گرفته شود)، و فراخوانی‌های حساب و نشست (از جمله pam_setcred) مقدار PAM_IGNORE را برمی‌گردانند که به کتابخانه PAM می‌گوید طوری ادامه دهد که گویی در پیکربندی PAM نامی از آن‌ها برده نشده است. این گزینه پشتیبانی می‌شود و باقی خواهد ماند، اما معمولاً بهتر است به جای آن از minimum_uid استفاده کنید.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد.

[2.0] اگر نام حساب احراز هویت‌شده با یک حساب محلی مطابقت داشته باشد و آن حساب محلی دارای UID کمتر از <uid> باشد، هیچ کاری انجام نده. اگر هر دوی این شرایط برقرار باشد، فراخوانی‌های احراز هویت و گذرواژه در سکوت شکست خواهند خورد (که اجازه می‌دهد این وضعیت با کنترل "optional" یا "sufficient" نادیده گرفته شود)، و فراخوانی‌های حساب و نشست (از جمله pam_setcred) مقدار PAM_IGNORE را برمی‌گردانند که به کتابخانه PAM می‌گوید طوری ادامه دهد که گویی در پیکربندی PAM نامی از آن‌ها برده نشده است.

استفاده از این گزینه اگر نیازی به استفاده از کربروس برای احراز هویت ورودهای مبتنی بر گذرواژه به حساب root ندارید (که به دلیل نیاز کربروس به اتصال شبکه توصیه نمی‌شود) به شدت توصیه می‌گردد. این گزینه نوعی دفاع در عمق در برابر پرینسیپال‌های کاربری که تصادفاً با یک حساب سیستمی مطابقت دارند و ممکن است به نادرستی به عنوان آن حساب سیستمی احراز هویت شوند، فراهم می‌آورد.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد.

[3.12] این گزینه به همراه alt_auth_map استفاده می‌شود و استفاده از پرینسیپال نگاشت‌شده را برای احراز هویت اجباری می‌کند. این گزینه بازگشت به احراز هویت عادی را در تمام موارد غیرفعال کرده و بر search_k5login و force_alt_auth ارجحیت دارد. اگر alt_auth_map تنظیم نشده باشد، هیچ اثری ندارد و رفتار احراز هویت استاندارد استفاده می‌شود.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.

[2.0] معمولاً پیاده‌سازی کربروس از pam_authenticate تلاش می‌کند تا بلیت‌هایی را برای نام کاربری در حال احراز هویت در قلمرو محلی دریافت کند. اگر این گزینه تنظیم شده باشد و کاربر محلی یک فایل .k5login در دایرکتوری خانگی خود داشته باشد، ماژول در عوض آن فایل .k5login را باز کرده و می‌خواند، و تلاش می‌کند تا با استفاده از گذرواژه ارائه‌شده به عنوان هر یک از پرینسیپال‌های فهرست‌شده در آن به نوبت احراز هویت کند. اگر هر یک از این احراز هویت‌ها موفقیت‌آمیز باشد، کاربر با موفقیت احراز هویت خواهد شد؛ در غیر این صورت، احراز هویت با شکست مواجه می‌شود. این گزینه برای اجازه دادن به احراز هویت با گذرواژه (از طریق کنسول یا sshd بدون پشتیبانی GSS-API) در حساب‌های اشتراکی مفید است. اگر فایل .k5login وجود نداشته باشد، رفتار مانند حالت عادی است. استفاده از این گزینه مستلزم آن است که فایل .k5login کاربر در زمان احراز هویت قابل خواندن باشد.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.

[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 اولویت دارد و هیچ احراز هویت ناشناسی انجام نمی‌شود.

[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 کاربرد دارد.

[1.0] دریافت بلیت‌های قابل هدایت (forwardable). در صورت تنظیم (روی true یا false، اگرچه در krb5.conf فقط می‌توان آن را روی false تنظیم کرد)، این گزینه پیش‌فرض کتابخانه کربروس تنظیم‌شده در بخش [libdefaults] فایل krb5.conf را بازنویسی می‌کند.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.

[3.0] فایل keytab مورد استفاده هنگام اعتبارسنجی اعتبارنامه‌های کاربر را مشخص می‌کند. پیش‌فرض، keytab پیش‌فرض سیستم است (معمولاً /etc/krb5.keytab)، که معمولاً فقط توسط root قابل خواندن است. برنامه‌هایی که به عنوان root اجرا نمی‌شوند و از این ماژول PAM برای احراز هویت استفاده می‌کنند، ممکن است مایل باشند آن را به keytab دیگری که برنامه می‌تواند بخواند هدایت کنند. اولین پرینسیپال یافت‌شده در keytab به عنوان پرینسیپال برای اعتبارسنجی اعتبارنامه استفاده خواهد شد.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.

[2.2] تنظیم قلمرو پیش‌فرض کربروس و دریافت اعتبارنامه‌ها در آن قلمرو، به جای قلمرو پیش‌فرض عادی این سیستم. در صورت استفاده از این گزینه، برای نتایج یکدست باید برای تمام گروه‌های مورد استفاده تنظیم شود. این تنظیم بر تصمیمات مجازشماری تأثیر می‌گذارد زیرا قلمرو پیش‌فرض را تغییر می‌دهد. این تنظیم همچنین پرینسیپال سرویس مورد استفاده برای اعتبارسنجی اعتبارنامه‌های به‌دست‌آمده را تغییر می‌دهد تا در قلمرو مشخص‌شده باشد.

اگر فقط می‌خواهید قلمرو فرضی برای پرینسیپال‌های کاربر را بدون تغییر قلمرو برای تصمیمات مجازشماری یا پرینسیپال سرویس مورد استفاده برای اعتبارسنجی اعتبارنامه‌ها تنظیم کنید، گزینه user_realm را ببینید.

[2.0] دریافت بلیت‌های قابل تمدید با حداکثر طول عمر تمدید <lifetime>. مقدار <lifetime> باید یک رشته طول عمر کربروس مانند "2d4h10m" یا زمانی بر حسب دقیقه باشد. در صورت تنظیم، این گزینه مقدار پیش‌فرض کتابخانه کربروس تنظیم‌شده در بخش [libdefaults] فایل krb5.conf را بازنویسی می‌کند.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.

[3.0] دریافت بلیت‌ها با حداکثر طول عمر <lifetime>. مقدار <lifetime> باید یک رشته طول عمر کربروس مانند "2d4h10m" یا زمانی بر حسب دقیقه باشد. در صورت تنظیم، این گزینه پیش‌فرض کتابخانه کربروس تنظیم‌شده در بخش [libdefaults] فایل krb5.conf را بازنویسی می‌کند.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.

[4.6] دریافت اعتبارنامه‌ها در قلمرو مشخص‌شده به جای قلمرو پیش‌فرض این سیستم. اگر این گزینه استفاده شود، برای نتایج یکدست باید برای تمام گروه‌های مورد استفاده تنظیم گردد (اگرچه گروه account در حال حاضر به قلمرو اهمیتی نمی‌دهد). این کار تصمیمات مجازشماری را تغییر نمی‌دهد. اگر قرار است اعتبارنامه‌های به‌دست‌آمده اجازه دسترسی به یک حساب پوسته را بدهند، کاربر به یک مدخل مناسب در فایل .k5login نیاز خواهد داشت یا سیستم باید نگاشت سفارشی aname_to_localname داشته باشد.

[3.9] هنگام تغییر گذرواژه‌ها، PAM ابتدا یک بررسی مقدماتی در کل پشته گذرواژه انجام می‌دهد و سپس هر ماژول را دوباره برای انجام تغییر گذرواژه فراخوانی می‌کند. پس از آن بررسی مقدماتی، ترتیب فراخوانی ماژول‌ها ثابت است. این بدان معناست که حتی اگر تغییر گذرواژه کربروس شکست بخورد (یا اگر یکی از تغییرهای گذرواژه دیگر در پشته شکست بخورد)، سایر ماژول‌های گذرواژه PAM در پشته همچنان فراخوانی خواهند شد حتی اگر ماژول شکست‌خورده required یا requisite علامت‌گذاری شده باشد. هنگام استفاده از چندین ماژول گذرواژه PAM برای همگام‌سازی گذرواژه‌ها بین چندین سیستم در زمان تغییر، این رفتار می‌تواند باعث تفاوت‌های ناخواسته بین محیط‌ها شود.

تنظیم این گزینه راهکاری برای دور زدن این رفتار فراهم می‌کند. اگر این گزینه تنظیم شده باشد و تغییر گذرواژه کربروس تلاش شود و شکست بخورد (برای نمونه به دلیل خطاهای شبکه یا بررسی استحکام گذرواژه در KDC)، این ماژول گذرواژه ذخیره‌شده در پشته PAM را پاک می‌کند. این کار هر ماژول بعدی را که گزینه use_authtok برای آن تنظیم شده باشد مجبور به شکست می‌کند تا آن محیط‌ها از همگامی با گذرواژه در کربروس خارج نشوند. ماژول PAM کربروس اگر کاربر را به دلیل پیکربندی مانند minimum_uid رد کند، در گذرواژه ذخیره‌شده دستکاری نخواهد کرد.

متأسفانه تنظیم این گزینه با سایر پیکربندی‌های مطلوب PAM تداخل ایجاد می‌کند، مانند تلاش برای تغییر گذرواژه در کربروس در ابتدا و بازگشت به پایگاه‌داده محلی گذرواژه یونیکس در صورت شکست. بنابراین به صورت پیش‌فرض فعال نیست. هنگام همگام‌سازی گذرواژه‌ها بین چندین محیط، آن را روشن کنید (و در صورت استفاده از pam_cracklib، ماژول pam_krb5 را بلافاصله پس از آن قرار دهید).

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه password کاربرد دارد.

[1.0] ثبت اطلاعات ردیابی و اشکال‌زدایی پرجزئیات‌تر در syslog با اولویت LOG_DEBUG، شامل ورود به هر یک از رابط‌های خارجی PAM و خروج از آن‌ها (به جز pam_close_session).

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد.

[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 کاربرد دارد.

[4.2] به طور پیش‌فرض، pam-krb5 مدیریت اعلان تغییر گذرواژه را در صورت انقضای گذرواژه یک حساب در گروه auth به کتابخانه کربروس واگذار می‌کند. اگر این گزینه تنظیم شود، با گذرواژه‌های منقضی‌شده به عنوان یک شکست احراز هویت مشابه با گذرواژه نادرست رفتار می‌شود. همچنین defer_pwchange و force_pwchange را ببینید.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.

[3.11] اگر این گزینه تنظیم شده باشد و احراز هویت با خطای کربروس مبنی بر منقضی شدن گذرواژه کاربر شکست بخورد، بلافاصله در طول مرحله authenticate برای تغییر گذرواژه آن‌ها تلاش می‌شود. در شرایط عادی، این کار غیرضروری است. بیشتر کتابخانه‌های کربروس این کار را برای شما انجام می‌دهند، و تنظیم این گزینه باعث می‌شود در صورت شکست اولین تلاش (انجام‌شده توسط کتابخانه کربروس)، دو بار از کاربر برای تغییر گذرواژه‌اش درخواست شود. با این حال، برخی از کتابخانه‌های کربروس سیستمی (مانند Solaris) درخواست تغییر گذرواژه در کتابخانه کربروس را غیرفعال کرده‌اند؛ در این سیستم‌ها، می‌توانید این گزینه را برای شبیه‌سازی رفتار عادی کتابخانه تنظیم کنید.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.

[4.7] به طور معمول، اگر pam-krb5 بتواند پرینسیپال را با استفاده از فراخوانی‌های krb5_aname_to_localname() یا مشابه‌های آن به یک نام محلی تبدیل کند، متغیر PAM_USER را برای این نشست PAM به نام محلی استاندارد تغییر می‌دهد. تنظیم این گزینه این رفتار را غیرفعال کرده و PAM_USER را روی هویت احراز هویت اولیه رها می‌کند.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه auth کاربرد دارد.

[1.0] پیام‌ها و خطاهای کربروس، مانند هشدارهای انقضای گذرواژه را از طریق اعلان‌گر به کاربر نشان نده. این معادل رفتاری است که برنامه PAM_SILENT را ارسال می‌کند، اما می‌تواند در پیکربندی PAM تنظیم شود.

این گزینه فقط برای گروه‌های auth و password کاربرد دارد.

[4.6] در صورت پشتیبانی توسط کتابخانه کربروس، ثبت ردیابی کتابخانه کربروس را در فایل لاگ مشخص‌شده فعال می‌کند. این قابلیت برای اشکال‌زدایی موقت در نظر گرفته شده است. داده‌ها بدون بررسی‌های امنیتی بیشتر به فایل مشخص‌شده الحاق می‌شوند، بنابراین فایلی را در یک دایرکتوری با قابلیت نوشتن همگانی مشخص نکنید.

[3.0] هنگام انجام احراز هویت PKINIT، از <anchors> به عنوان لنگرهای اعتماد کارخواه (trust anchors) استفاده کن. این مقدار معمولاً ارجاعی به یک فایل حاوی مراجع صدور گواهی (CA) معتمد است. این گزینه تنها در صورتی استفاده می‌شود که try_pkinit یا use_pkinit تنظیم شده باشند.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه‌های auth و password کاربرد دارد.

[3.0] قبل از تلاش برای احراز هویت PKINIT، از کاربر بخواهید کارت هوشمند را وارد کند. ممکن است بخواهید این گزینه را برای برنامه‌هایی مانند gnome-screensaver تنظیم کنید که به محض حرکت ماوس PAM را فراخوانی می‌کنند و به کاربر فرصتی برای وارد کردن ابتدا کارت هوشمند نمی‌دهند. هرگونه اطلاعات واردشده در اولین اعلان نادیده گرفته می‌شود. اگر try_pkinit تنظیم شده باشد، کاربری که مایل است به جای آن از گذرواژه استفاده کند می‌تواند به سادگی کلید Enter را فشار دهد و سپس گذرواژه خود را به صورت عادی وارد نماید. این گزینه تنها در صورتی استفاده می‌شود که try_pkinit یا use_pkinit تنظیم شده باشند.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه‌های auth و password کاربرد دارد.

[3.0] هنگام انجام احراز هویت PKINIT، از <userid> به عنوان شناسه کاربر (ID) استفاده کن. مقدار این رشته بسیار به نوع پیاده‌سازی PKINIT مورد استفاده شما بستگی دارد، اما عموماً چیزی شبیه به این خواهد بود:
PKCS11:/usr/lib/pkcs11/lib/soft-pkcs11.so

تا ماژول مورد استفاده با کارت هوشمند را مشخص کند. همچنین ممکن است به یک گواهی کاربر یا انواع دیگر شناسه‌های کاربری اشاره داشته باشد. برای جزئیات بیشتر به مستندات کتابخانه کربروس مراجعه کنید. این گزینه تنها در صورتی استفاده می‌شود که try_pkinit یا use_pkinit تنظیم شده باشند.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه‌های auth و password کاربرد دارد.

[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 اعمال می‌شوند و بنابراین ممکن است تنظیمات قبلی را بازنویسی کنند.

[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 کاربرد دارد.

[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 کاربرد دارد.

[3.0] به طور پیش‌فرض، اعلان‌ها هنگام تغییر گذرواژه توسط کاربر به شرح زیر هستند:
Current Kerberos password:
Enter new Kerberos password:
Retype new Kerberos password:

رشته "Kerberos" درج شده است تا کاربران درباره اینکه کدام گذرواژه را تغییر می‌دهند سردرگم نشوند. تنظیم این گزینه کلمه "Kerberos" را با هر آنچه این گزینه روی آن تنظیم شده جایگزین می‌کند. تنظیم این گزینه روی یک رشته خالی، کلمه قبل از "password:" را به طور کامل حذف می‌کند.

در صورت تنظیم در پیکربندی PAM، مقدار <banner> نباید شامل فاصله خالی باشد. اگر مقداری حاوی فاصله خالی می‌خواهید، آن را در krb5.conf تنظیم کنید.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه password کاربرد دارد.

[3.0] به طور پیش‌فرض، اعلان گذرواژه ماژول PAM کربروس به سادگی "Password:" است. این امر از افشای هرگونه اطلاعات درباره قلمرو سیستم یا تبدیل‌های حساب به پرینسیپال جلوگیری می‌کند. اگر این گزینه تنظیم شود، رشته "for <principal>" قبل از دو نقطه اضافه می‌شود، که در آن <principal> پرینسیپال کاربر است. این رشته همچنین قبل از دو نقطه در اعلان‌های هنگام تغییر گذرواژه کاربر اضافه می‌شود.

فعال کردن این گزینه با فعال بودن ChallengeResponseAuthentication در OpenSSH ممکن است برای برخی از کارخواه‌های ssh که فقط "Password:" را به عنوان اعلان می‌شناسند مشکلاتی ایجاد کند. این گزینه در صورت فعال بودن search_k5login به طور خودکار غیرفعال می‌شود زیرا پرینسیپال نمایش‌داده‌شده نادرست خواهد بود.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه‌های auth و password کاربرد دارد.

[4.0] استفاده از گذرواژه به‌دست‌آمده توسط یک ماژول احراز هویت یا گذرواژه قبلی برای احراز هویت کاربر بدون درخواست مجدد از کاربر. اگر هیچ ماژول قبلی گذرواژه کاربر را به‌دست نیاورده باشد، بدون درخواست از کاربر شکست بخور. همچنین برای نسخه‌های ضعیف‌تر این گزینه به try_first_pass و use_first_pass مراجعه کنید.

این گزینه فقط برای گروه‌های auth و password کاربرد دارد. برای گروه password، فقط برای گذرواژه قدیمی اعمال می‌شود. برای تنظیمی مشابه در مورد گذرواژه جدید به use_authtok مراجعه کنید.

[4.6] هرگز برای گذرواژه فعلی اعلان نشان نده. در عوض، یک گذرواژه NULL به کتابخانه کربروس ارسال کن و اجازه بده کتابخانه کربروس اعلان را انجام دهد. این ممکن است در صورتی لازم باشد که برای نمونه کتابخانه کربروس برای استفاده از مکانیزم‌های احراز هویت دیگری غیر از گذرواژه پیکربندی شده باشد و نیاز به کنترل کامل بر فرآیند اعلان داشته باشد.

عیب عمده این گزینه این است که ماژول PAM هرگز گذرواژه کاربر را نخواهد دید و بنابراین نمی‌تواند آن را در داده‌های ماژول PAM برای ماژول‌های بعدی ذخیره کند. به عبارت دیگر، اگر ماژول دیگری در پشته پشت ماژول PAM کربروس قرار داشته باشد و بخواهد از use_first_pass استفاده کند، این گزینه قابل استفاده نیست. کتابخانه کربروس همچنین معمولاً پرینسیپال را در اعلان می‌آورد، و بنابراین این گزینه رفتاری مشابه با expose_account را ایجاب می‌کند. همانند expose_account، این امر می‌تواند در صورت فعال بودن ChallengeResponseAuthentication در OpenSSH مشکلاتی ایجاد کند، زیرا کارخواه‌ها ممکن است اعلان‌های گذرواژه‌ای غیر از "Password:" را نشناسند.

استفاده از این گزینه با search_k5login منجر به اعلان گذرواژه برای هر پرینسیپال فهرست‌شده در فایل .k5login کاربر خواهد شد. این احتمالاً رفتار مطلوبی نیست، هرچند توسط ماژول منع نشده است.

این گزینه فقط برای گروه‌های auth و password کاربرد دارد. برای گروه password، فقط برای فرآیند احراز هویت اعمال می‌شود؛ همچنان برای گذرواژه جدید از کاربر درخواست خواهد شد.

[3.6] قبل از درخواست گذرواژه کاربر (یا استفاده از گذرواژه واردشده قبلی در صورت تنظیم try_first_pass، use_first_pass یا force_first_pass)، از کاربر پرینسیپال کربروس مورد استفاده برای احراز هویت را درخواست کن. این به کاربر اجازه می‌دهد با پرینسیپالی متفاوت از پرینسیپال متناظر با نام کاربری محلی احراز هویت کند، مشروط بر اینکه فایل .k5login یا نگاشت محلی پرینسیپال کربروس به حساب، به آن پرینسیپال اجازه دسترسی به حساب محلی را بدهد.

هنگام استفاده از این گزینه پیکربندی محتاط باشید و آن را با PasswordAuthentication در OpenSSH استفاده نکنید، بلکه فقط با ChallengeResponseAuthentication به کار برید. برخی از برنامه‌های مبتنی بر PAM انتظار دارند ماژول‌های PAM فقط برای گذرواژه اعلان دهند و حتی ممکن است بدون توجه به اینکه اعلان چیست، کورکورانه گذرواژه را به اولین اعلان بدهند. چنین برنامه‌هایی در ترکیب با این گزینه ممکن است گذرواژه کاربر را در پیام‌های لاگ و درخواست‌های کربروس افشا کنند.

[1.0] اگر ماژول احراز هویت اولین ماژول در پشته نباشد و یک ماژول قبلی گذرواژه کاربر را به‌دست آورده باشد، از آن گذرواژه برای احراز هویت کاربر بدون درخواست مجدد از او استفاده کن. اگر آن احراز هویت شکست بخورد، به درخواست گذرواژه از کاربر بازگرد. این گزینه در صورتی که ماژول احراز هویت اولین در پشته باشد یا هیچ ماژول قبلی گذرواژه کاربر را به‌دست نیاورده باشد، هیچ اثری ندارد. همچنین برای نسخه‌های قوی‌تر این گزینه به use_first_pass و force_first_pass مراجعه کنید.

این گزینه فقط برای گروه‌های auth و password کاربرد دارد. برای گروه password، فقط برای گذرواژه قدیمی اعمال می‌شود.

[4.0] هنگام تغییر گذرواژه‌ها، از گذرواژه جدید به‌دست‌آمده توسط یک ماژول گذرواژه قبلی استفاده کن، به جای اینکه گذرواژه جدید را درخواست کنی. اگر گذرواژه جدید در دسترس نباشد، شکست بخور. این می‌تواند برای الزام بررسی گذرواژه‌ها توسط یک ماژول قبلی دیگر مانند pam_cracklib استفاده شود.

این گزینه فقط برای گروه password کاربرد دارد.

[1.0] از گذرواژه به‌دست‌آمده توسط یک ماژول احراز هویت قبلی برای احراز هویت کاربر بدون درخواست مجدد استفاده کن. اگر هیچ ماژول قبلی گذرواژه کاربر را برای احراز هویت یا تغییر گذرواژه به‌دست نیاورده باشد، به درخواست از کاربر بازگرد. اگر یک ماژول قبلی گذرواژه کاربر را به‌دست آورده باشد اما احراز هویت با آن گذرواژه شکست بخورد، بدون درخواست بیشتر از کاربر شکست بخور. همچنین برای نسخه‌های دیگر این گزینه به try_first_pass و force_first_pass مراجعه کنید.

این گزینه فقط برای گروه‌های auth و password کاربرد دارد. برای گروه password، فقط برای گذرواژه قدیمی اعمال می‌شود. برای تنظیمی مشابه در مورد گذرواژه جدید به use_authtok مراجعه کنید.

[2.0] از <pattern> به عنوان الگو برای ساخت نام‌های کَش اعتبارنامه استفاده کن. مقدار <pattern> باید به شکل <type>:<residual> باشد که در صورت استفاده از کَش مبتنی بر فایل، <type> و دو نقطه بعدی اختیاری هستند. توکن ویژه %u در هر کجای <pattern> با شناسه عددی (UID) کاربر جایگزین می‌شود. توکن ویژه %p در هر کجای <pattern> با شناسه فرآیند فعلی (PID) جایگزین می‌شود.

اگر <pattern> به رشته دقیق "XXXXXX" (شش تا X) ختم شود، آن رشته با نویسه‌های تصادفی تولیدشده جایگزین خواهد شد و کَش بلیت با استفاده از mkstemp(3) ایجاد می‌شود. در صورتی که <pattern> به دایرکتوری با امکان نوشتن همگانی اشاره کند، این کار به شدت توصیه می‌شود.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه‌های auth و session کاربرد دارد.

[1.2] هم کَش بلیت موقت مورد استفاده در طول احراز هویت و هم کَش‌های بلیت کاربر را به جای /tmp در <directory> ذخیره کن. الگوریتم تولید نام کَش بلیت در غیر این صورت بدون تغییر باقی می‌ماند. می‌توان پیشوند "FILE:" را به <directory> اضافه کرد تا نوع کَش بدون ابهام باشد (و این ممکن است در سیستم‌هایی که از نوع کَشی غیر از فایل به عنوان پیش‌فرض استفاده می‌کنند الزامی باشد).

توجه داشته باشید که pam_krb5 در طول فرآیند ورود یک فایل کَش بلیت موقت متعلق به root ایجاد و ذخیره می‌کند. اگر گزینه ccache را در بالا تنظیم کنید تا از استفاده از دایرکتوری /tmp سیستم برای کَش‌های بلیت کاربر خودداری شود، ممکن است بخواهید ccache_dir را نیز تنظیم کنید تا آن کَش‌های موقت به مکان دیگری منتقل شوند. این به pam_krb5 اجازه می‌دهد حتی در صورت پر بودن دایرکتوری /tmp سیستم به کار خود ادامه دهد.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه‌های auth و session کاربرد دارد.

[1.0] پس از احراز هویت کَش بلیت ایجاد نکن. این گزینه نباید به طور کلی تنظیم شود، اما به عنوان بخشی از پیکربندی PAM برای سرویس خاصی که از PAM برای احراز هویت استفاده می‌کند اما نشست‌های کاربری ایجاد نمی‌کند و سربار نوشتن اعتبارنامه‌های کاربر روی دیسک را نمی‌خواهد، مفید است. هنگام استفاده از این گزینه، برنامه فقط باید pam_authenticate() را فراخوانی کند؛ توابع دیگر مانند pam_setcred()، pam_start_session() و pam_acct_mgmt() با این گزینه منطقی نیستند. اگر برنامه به فراخوانی‌های مدیریت حساب و نشست PAM نیاز دارد، از این گزینه استفاده نکنید.

این گزینه فقط برای گروه auth کاربرد دارد.

[2.3] به طور معمول، کَش بلیت کاربر هنگام فراخوانی pam_end() یا pam_close_session() توسط برنامه احراز هویت‌کننده از بین می‌رود تا پس از خروج کاربر کَش‌های بلیت باقی نمانند. اما در برخی موارد این رفتار مطلوب نیست. (برای نمونه در Solaris 8 رفتار پیش‌فرض به این معنی است که فرآیند ورود قبل از اجرای پوسته کاربر، کَش بلیت را از بین می‌برد). اگر این گزینه تنظیم شود، ماژول PAM هرگز کَش بلیت کاربر را از بین نخواهد برد. اگر این گزینه را تنظیم کنید، ممکن است بخواهید kdestroy را در پیکربندی خروج پوسته فراخوانی کنید یا یک برنامه حذف فایل موقت را اجرا کنید تا از انباشت صدها کَش بلیت در /tmp جلوگیری شود.

این گزینه را می‌توان در "[appdefaults]" در krb5.conf تنظیم کرد و فقط برای گروه‌های auth و session کاربرد دارد.

توسط pam_setcred() با گزینه PAM_ESTABLISH_CRED و در نتیجه همچنین توسط pam_open_session() تنظیم می‌شود تا به کَش اعتبارنامه جدید برای کاربر اشاره کند. گزینه‌های ccache و ccache_dir را ببینید. به طور پیش‌فرض، نام کَش با پیشوند "FILE:" همراه خواهد بود تا نوع کَش بدون ابهام باشد.
توسط pam_authenticate() تنظیم می‌شود تا به کَش بلیت موقت مورد استفاده برای احراز هویت اشاره کند (مگر اینکه گزینه no_ccache داده شده باشد). سپس pam_setcred() از آن متغیر محیطی برای یافتن کَش موقت استفاده می‌کند حتی اگر در همان نشست PAM به عنوان pam_authenticate() فراخوانی نشده باشد (مشکلی در sshd که در برخی حالت‌ها اجرا می‌شود). این متغیر محیطی فقط در داخل ماژول PAM استفاده می‌شود.

/tmp/krb5cc_UID_RANDOM
نام پیش‌فرض کَش اعتبارنامه. مقدار UID شناسه عددی ده‌دهی کاربر محلی و RANDOM یک رشته تصادفی شش‌نویسه‌ای است. الگو را می‌توان با گزینه ccache و دایرکتوری را با گزینه ccache_dir تغییر داد.
/tmp/krb5cc_pam_RANDOM
نام کَش اعتبارنامه مورد استفاده برای کَش اعتبارنامه موقت ایجادشده توسط pam_authenticate(). این کَش هنگام پایان نشست PAM یا فراخوانی pam_setcred() دوباره حذف می‌شود و معمولاً برای کاربر قابل مشاهده نخواهد بود. مقدار RANDOM یک رشته تصادفی شش‌نویسه‌ای است.
~/.k5login
فایل حاوی پرینسیپال‌های کربروس که مجاز به دسترسی به آن حساب هستند.

اگر try_pkinit تنظیم شده باشد و pam-krb5 با MIT Kerberos کامپایل شده باشد، در صورتی که PKINIT شکست بخورد و ماژول به احراز هویت با گذرواژه بازگردد، گذرواژه کاربر در داده‌های PAM برای ماژول‌های بعدی ذخیره نمی‌شود.

هنگام استفاده از این ماژول برای ورودهای تعاملی، حتماً آن را هم در گروه 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 و نسخه‌های جدیدتر آن را نشان نمی‌دهند.

ماژول pam-krb5 در ابتدا توسط فرانک کیوساک (Frank Cusack) نوشته شد. آندرس سالومون (Andres Salomon) تغییرات گسترده‌ای اعمال کرد، و سپس راس آلبرت (Russ Allbery) <eagle@eyrie.org> نگهداری آن را بر عهده گرفت و اصلاحات گسترده‌تری انجام داد. راس آلبرت در حال حاضر نگهداری این ماژول را بر عهده دارد.

حق نشر 2005-2010, 2014, 2020 متعلق به Russ Allbery <eagle@eyrie.org>

حق نشر 2008-2014 متعلق به هیئت امنای دانشگاه لیلاند استنفورد جونیور

کپی و توزیع این فایل، با یا بدون تغییر، در هر رسانه‌ای بدون حق امتیاز مجاز است به شرطی که اطلاعیه حق نشر و این اطلاعیه حفظ شوند. این فایل به صورت «همان‌گونه که هست» و بدون هیچ‌گونه ضمانتی ارائه می‌شود.

شناسه مجوز SPDX: FSFAP

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