| KRB5.CONF(5) | فایلهای پیکربندی | KRB5.CONF(5) |
نام (NAME)
krb5.conf - فایل پیکربندی اصلی سامانه احراز هویت کربروس
توضیحات (DESCRIPTION)
فایل krb5.conf تنظیمات پیشفرض کلاینتها و سرورهای کربروس ۵ شامل قلمروها (realms)، آدرس سرورهای KDC و الگوریتمهای رمزنگاری را مشخص میکند.
بهطور معمول، باید فایل krb5.conf خود را در پوشه /etc قرار دهید. میتوانید با تنظیم متغیر محیطی KRB5_CONFIG محل پیشفرض را بازنویسی کنید. در KRB5_CONFIG میتوان چندین نام فایل جداشده با دونقطه (:) مشخص کرد؛ تمام فایلهای موجود خوانده خواهند شد. از نگارش ۱.۱۴ به بعد، میتوان نام پوشهها را نیز در KRB5_CONFIG مشخص کرد؛ تمام فایلهای درون پوشه که نام آنها صرفاً از نویسههای حرفی-عددی، خط تیره یا زیرخط تشکیل شده باشد خوانده خواهند شد.
ساختار (STRUCTURE)
فایل krb5.conf به سبک یک فایل INI ویندوز برپا شده است. خطوطی که با '#' یا ';' آغاز میشوند (احتمالاً پس از فاصلههای اولیه) به عنوان کامنت نادیده گرفته میشوند. بخشها با نام بخش در داخل براکت مشخص میشوند. هر بخش ممکن است شامل صفر یا چند رابطه به شکل زیر باشد:
foo = bar
یا:
fubar = {
foo = bar
baz = quux
}
قرار دادن یک '*' پس از براکت بسته نام بخش نشان میدهد که آن بخش نهایی (final) است، به این معنی که اگر همان بخش در فایل بعدی مشخصشده در KRB5_CONFIG ظاهر شود، نادیده گرفته خواهد شد. یک زیربخش را میتوان با قرار دادن یک '*' پس از نام برچسب یا آکولاد بسته، به عنوان نهایی علامتگذاری کرد.
فایل krb5.conf میتواند با استفاده از هر یک از دستورالعملهای زیر در ابتدای خط، فایلهای دیگر را شامل شود:
include FILENAME includedir DIRNAME
FILENAME یا DIRNAME باید یک مسیر مطلق باشد. فایل یا پوشه نامبرده باید وجود داشته و قابل خواندن باشد. شمول یک پوشه شامل تمام فایلهای درون پوشه میشود که نام آنها صرفاً از نویسههای حرفی-عددی، خط تیره یا زیرخط تشکیل شده است. از نگارش ۱.۱۵ به بعد، فایلهایی که نام آنها به ".conf" ختم میشود نیز شامل میشوند، مگر اینکه نام آنها با "." آغاز شود. فایلهای پروفایل شاملشده از نظر نحوی مستقل از والد خود هستند، بنابراین هر فایل شاملشده باید با یک سرآیند بخش آغاز شود. از نگارش ۱.۱۷ به بعد، فایلها به ترتیب الفبایی-عددی خوانده میشوند؛ در نگارشهای پیشین، ممکن بود به هر ترتیبی خوانده شوند.
فایل krb5.conf میتواند مشخص کند که پیکربندی باید به جای خود فایل، از یک ماژول قابل بارگیری با استفاده از دستورالعمل زیر در ابتدای خط قبل از هر سرآیند بخش دریافت شود:
module MODULEPATH:RESIDUAL
MODULEPATH ممکن است نسبت به مسیر کتابخانه نصب krb5 نسبی باشد، یا ممکن است یک مسیر مطلق باشد. RESIDUAL در زمان مقداردهی اولیه به ماژول ارائه میشود. اگر krb5.conf از یک دستورالعمل module استفاده کند، kdc.conf(5) نیز در صورت وجود باید از آن استفاده کند.
بخشها (SECTIONS)
فایل krb5.conf ممکن است شامل بخشهای زیر باشد:
| [libdefaults] | تنظیمات مورداستفاده کتابخانه کربروس نسخه ۵ (Kerberos V5) |
| [realms] | اطلاعات تماس و تنظیمات ویژه هر قلمرو |
| [domain_realm] | نگاشت نامهای میزبان سرور به قلمروهای کربروس |
| [capaths] | مسیرهای احراز هویت برای حالت بینقلمرویی غیرسلسلهمراتبی |
| [appdefaults] | تنظیمات مورداستفاده برخی از برنامههای کاربردی کربروس نسخه ۵ |
| [plugins] | کنترل ثبت ماژولهای افزونه (پلاگین) |
علاوه بر این، krb5.conf ممکن است شامل هر یک از رابطههای شرح دادهشده در kdc.conf(5) باشد، اما این یک روش توصیهشده نیست.
[libdefaults]
بخش libdefaults ممکن است شامل هر یک از روابط زیر باشد:
- allow_des3
- اجازه به KDC برای صدور بلیتها با کلیدهای نشست des3-cbc-sha1. در نگارشهای آینده، این فلگ به des3-cbc-sha1 اجازه میدهد که به طور کلی استفاده شود. مقدار پیشفرض این برچسب false است. (افزوده در نگارش ۱.۲۱.)
- allow_rc4
- اجازه به KDC برای صدور بلیتها با کلیدهای نشست arcfour-hmac. در نگارشهای آینده، این فلگ به arcfour-hmac اجازه میدهد که به طور کلی استفاده شود. مقدار پیشفرض این برچسب false است. (افزوده در نگارش ۱.۲۱.)
- allow_weak_crypto
- اگر این فلگ روی false تنظیم شود، انواع رمزنگاری ضعیف (همانطور که در Encryption_types در kdc.conf(5) ذکر شده است) از فهرستهای default_tgs_enctypes، default_tkt_enctypes و permitted_enctypes حذف خواهند شد. مقدار پیشفرض این برچسب false است.
- canonicalize
- اگر این فلگ روی true تنظیم شود، درخواستهای اولیه بلیت به KDC خواستار استانداردسازی (canonicalization) نام هویت (principal) کلاینت خواهند شد، و پاسخهایی با هویت کلاینت متفاوت از هویت درخواستشده پذیرفته میشوند. مقدار پیشفرض false است.
- ccache_type
- این پارامتر قالب انواع حافظه پنهان گواهینامه (credential cache) ایجادشده توسط kinit(1) یا سایر برنامهها را تعیین میکند. مقدار پیشفرض 4 است که نشاندهنده جدیدترین قالب است. مقادیر کوچکتر میتوانند برای سازگاری با پیادهسازیهای بسیار قدیمی کربروس که با حافظههای پنهان گواهینامه در همان میزبان تعامل دارند استفاده شوند.
- clockskew
- حداکثر
میزان
انحراف
ساعت مجاز
بر حسب
ثانیه را
تعیین
میکند که
کتابخانه
پیش از
نامعتبر
دانستن
پیام
کربروس
تحمل خواهد
کرد. مقدار
پیشفرض
۳۰۰ ثانیه
(پنج دقیقه)
است.
تنظیم clockskew همچنین هنگام ارزیابی زمانهای شروع و انقضای بلیت استفاده میشود. برای نمونه، بلیتهایی که به زمان انقضای خود رسیدهاند، اگر برای مدتی کوتاهتر از تنظیم clockskew منقضی شده باشند، همچنان قابل استفاده هستند (و در صورت تجدیدپذیر بودن، قابل تجدید میباشند).
- default_ccache_name
- این رابطه نام حافظه پنهان گواهینامه پیشفرض را مشخص میکند. مقدار پیشفرض FILE:/tmp/krb5cc_%{uid} است. این رابطه مشمول گسترش پارامتر (در ادامه ببینید) است. جدید در نگارش ۱.۱۱.
- default_client_keytab_name
- این رابطه نام keytab پیشفرض را برای به دست آوردن گواهینامههای کلاینت مشخص میکند. مقدار پیشفرض FILE:/etc/krb5/user/%{euid}/client.keytab است. این رابطه مشمول گسترش پارامتر است. جدید در نگارش ۱.۱۱.
- default_keytab_name
- این رابطه نام keytab پیشفرض مورد استفاده سرورهای برنامه کاربردی مانند sshd را مشخص میکند. مقدار پیشفرض FILE:/etc/krb5.keytab است. این رابطه مشمول گسترش پارامتر است.
- default_rcache_name
- این رابطه نام حافظه پنهان بازپخش (replay cache) پیشفرض را مشخص میکند. مقدار پیشفرض dfl: است. این رابطه مشمول گسترش پارامتر است. جدید در نگارش ۱.۱۸.
- default_realm
- قلمرو پیشفرض کربروس را برای کلاینت مشخص میکند. مقدار آن را روی قلمرو کربروس خود تنظیم کنید. اگر این مقدار تنظیم نشود، باید هنگام فراخوانی برنامههایی مانند kinit(1) به همراه هر هویت کربروس، یک قلمرو مشخص شود.
- default_tgs_enctypes
- فهرست
پشتیبانیشده
از انواع
رمزنگاری
کلید نشست
را که
کلاینت
باید هنگام
ایجاد
درخواست TGS-REQ
درخواست
کند، به
ترتیب
ترجیح از
بالاترین
به
پایینترین
مشخص
میکند.
فهرست ممکن
است با کاما
یا فاصله
جدا شود.
برای
فهرستی از
مقادیر
پذیرفتهشده
برای این
برچسب، Encryption_types
را در kdc.conf(5)
ببینید. از
نگارش ۱.۱۸
به بعد،
مقدار
پیشفرض،
مقدار permitted_enctypes
است. برای
نگارشهای
قبلی یا اگر
permitted_enctypes تنظیم
نشده باشد،
مقدار
پیشفرض
عبارت است
از: aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
aes256-cts-hmac-sha384-192 aes128-cts-hmac-sha256-128 des3-cbc-sha1
arcfour-hmac-md5 camellia256-cts-cmac camellia128-cts-cmac.
این گزینه را تنظیم نکنید مگر اینکه برای اهداف سازگاری پسرو ضروری باشد؛ مقادیر قدیمی این تنظیم میتواند کلاینتها را از بهرهمندی از انواع رمزنگاری قویتر جدید در زمان ارتقای کتابخانهها بازدارد.
- default_tkt_enctypes
- فهرست
پشتیبانیشده
از انواع
رمزنگاری
کلید نشست
را که
کلاینت
باید هنگام
ایجاد
درخواست AS-REQ
درخواست
کند، به
ترتیب
ترجیح از
بالاترین
به
پایینترین
مشخص
میکند.
قالب آن
مشابه default_tgs_enctypes
است. از
نگارش ۱.۱۸
به بعد،
مقدار
پیشفرض،
مقدار permitted_enctypes
است. برای
نگارشهای
قبلی یا اگر
permitted_enctypes تنظیم
نشده باشد،
مقدار
پیشفرض
عبارت است
از: aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96
aes256-cts-hmac-sha384-192 aes128-cts-hmac-sha256-128 des3-cbc-sha1
arcfour-hmac-md5 camellia256-cts-cmac camellia128-cts-cmac.
این گزینه را تنظیم نکنید مگر اینکه برای اهداف سازگاری پسرو ضروری باشد؛ مقادیر قدیمی این تنظیم میتواند کلاینتها را از بهرهمندی از انواع رمزنگاری قویتر جدید در زمان ارتقای کتابخانهها بازدارد.
- dns_canonicalize_hostname
- مشخص میکند که آیا جستجوهای نام برای استانداردسازی نامهای میزبان جهت استفاده در نامهای هویت سرویس استفاده شوند یا خیر. تنظیم این فلگ روی false میتواند امنیت را با کاهش وابستگی به DNS بهبود بخشد، اما به این معناست که نامهای میزبان کوتاه به نامهای میزبان کاملاً واجد شرایط (FQDN) تبدیل نخواهند شد. اگر این گزینه روی fallback تنظیم شود (جدید در نگارش ۱.۱۸)، استانداردسازی DNS تنها در صورتی انجام میشود که نام میزبان سرور با نام اصلی هنگام درخواست گواهینامه یافت نشود. مقدار پیشفرض true است.
- dns_lookup_kdc
- مشخص
میکند که
آیا
رکوردهای DNS SRV
باید برای
یافتن KDCها و
سایر
سرورهای یک
قلمرو، در
صورتی که در
اطلاعات krb5.conf
برای آن
قلمرو
فهرست نشده
باشند،
استفاده
شوند یا
خیر. (توجه
داشته
باشید که
مدخل admin_server
برای
برقراری
ارتباط با kadmind
باید در
اطلاعات
قلمرو krb5.conf
وجود داشته
باشد، زیرا
پیادهسازی
DNS برای kadmin
ناقص است.)
فعال کردن این گزینه یک نوع حمله محرومسازی از سرویس (DoS) را ممکن میسازد، در صورتی که شخصی رکوردهای DNS را جعل کرده و شما را به سرور دیگری هدایت کند. با این حال، این بدتر از یک محرومسازی از سرویس نیست، زیرا KDC جعلی قادر نخواهد بود هیچ چیزی را که به آن ارسال میکنید رمزگشایی کند (به جز درخواست اولیه بلیت که داده رمزگذاریشده ندارد)، و هر چیزی که KDC جعلی ارسال کند بدون اعتبارسنجی با استفاده از رازی که از آن آگاه نیست مورد اعتماد قرار نخواهد گرفت.
- dns_uri_lookup
- مشخص میکند که آیا رکوردهای DNS URI باید برای یافتن KDCها و سایر سرورهای یک قلمرو، در صورتی که در اطلاعات krb5.conf برای قلمرو فهرست نشده باشند، استفاده شوند یا خیر. اگر رکورد URI یافت نشود، از رکوردهای SRV به عنوان جایگزین استفاده میشود. مقدار پیشفرض true است. جدید در نگارش ۱.۱۵.
- enforce_ok_as_delegate
- اگر این فلگ روی true تنظیم شود، در صورتی که فلگ ok-as-delegate در بلیت سرویس تنظیم نشده باشد، واگذاری گواهینامه GSSAPI غیرفعال خواهد شد. اگر این فلگ false باشد، فلگ بلیت ok-as-delegate تنها زمانی اعمال میشود که یک برنامه کاربردی به طور خاص درخواست اعمال آن را داشته باشد. مقدار پیشفرض false است.
- err_fmt
- این رابطه امکان قالببندی سفارشی پیام خطا را فراهم میکند. اگر مقداری تنظیم شود، پیامهای خطا با جایگزین کردن یک پیام خطای معمولی به جای %M و یک کد خطا به جای %C در مقدار، قالببندی میشوند.
- extra_addresses
- به یک رایانه اجازه میدهد تا از چندین آدرس محلی استفاده کند، تا به کربروس اجازه دهد در شبکهای که از NAT استفاده میکند کار کند در حالی که همچنان از بلیتهای با آدرس محدود استفاده میشود. آدرسها باید در یک فهرست جداشده با کاما باشند. این گزینه در صورتی که noaddresses روی true باشد هیچ اثری ندارد.
- forwardable
- اگر این فلگ true باشد، بلیتهای اولیه در صورت مجاز بودن توسط KDC، به طور پیشفرض قابل انتقال (forwardable) خواهند بود. مقدار پیشفرض false است.
- ignore_acceptor_hostname
- هنگام پذیرش زمینههای امنیتی GSSAPI یا krb5 برای هویتهای سرویس مبتنی بر میزبان، هر نام میزبانی که توسط برنامه فراخواننده ارسال شده است نادیده گرفته میشود، و به کلاینتها اجازه داده میشود با هر هویت سرویسی در keytab که با نام سرویس و نام قلمرو (در صورت ارائه) مطابقت دارد احراز هویت کنند. این گزینه میتواند انعطافپذیری مدیریتی برنامههای کاربردی سرور را در میزبانهای دارای چند آدرس شبکه بهبود بخشد، اما میتواند امنیت محیطهای میزبانی مجازی را به خطر بیندازد. مقدار پیشفرض false است. جدید در نگارش ۱.۱۰.
- اگر این فلگ true باشد، در صورتی که یک فایل .k5login(5) وجود داشته باشد، هویتها باید در فایل k5login کاربر محلی فهرست شده باشند تا دسترسی ورود به آنها اعطا شود. اگر این فلگ false باشد، یک هویت ممکن است همچنان از طریق مکانیسمهای دیگر دسترسی ورود دریافت کند حتی اگر فایل k5login وجود داشته باشد اما هویت در آن فهرست نشده باشد. مقدار پیشفرض true است.
- k5login_directory
- در صورت تنظیم، کتابخانه به دنبال فایل k5login کاربر محلی در داخل پوشه مشخصشده، با نام فایلی متناظر با نام کاربری محلی خواهد گشت. در صورت عدم تنظیم، کتابخانه به دنبال فایلهای k5login در پوشه خانگی کاربر با نام فایل .k5login خواهد گشت. به دلایل امنیتی، فایلهای .k5login باید متعلق به کاربر محلی یا کاربر ریشه (root) باشند.
- kcm_mach_service
- تنها در macOS، نام سرویس راهانداز (bootstrap) مورد استفاده برای ارتباط با دیمن KCM را برای نوع حافظه پنهان گواهینامه KCM تعیین میکند. اگر مقدار - باشد، از Mach RPC برای تماس با دیمن KCM استفاده نخواهد شد. مقدار پیشفرض org.h5l.kcm است.
- kcm_socket
- مسیر سوکت دامنه یونیکس مورد استفاده برای دسترسی به دیمن KCM را برای نوع حافظه پنهان گواهینامه KCM تعیین میکند. اگر مقدار - باشد، از سوکتهای دامنه یونیکس برای تماس با دیمن KCM استفاده نخواهد شد. مقدار پیشفرض /var/run/.heim_org.h5l.kcm-socket است.
- kdc_default_options
- گزینههای پیشفرض KDC (که برای مقادیر چندگانه با XOR ترکیب میشوند) هنگام درخواست بلیتهای اولیه. به طور پیشفرض روی 0x00000010 (KDC_OPT_RENEWABLE_OK) تنظیم شده است.
- kdc_timesync
- مقادیر پذیرفتهشده برای این رابطه ۱ یا ۰ هستند. اگر غیرصفر باشد، ماشینهای کلاینت تفاوت بین زمان خود و زمان بازگرداندهشده توسط KDC در برچسبهای زمانی درون بلیتها را محاسبه کرده و از این مقدار برای اصلاح ساعت نادرست سیستم هنگام درخواست بلیتهای سرویس یا احراز هویت در سرویسها استفاده میکنند. این ضریب تصحیح تنها توسط کتابخانه کربروس استفاده میشود؛ برای تغییر ساعت سیستم به کار نمیرود. مقدار پیشفرض ۱ است.
- noaddresses
- اگر این فلگ true باشد، درخواستهای بلیتهای اولیه با محدودیتهای آدرس تنظیمشده ارسال نمیشوند، که امکان استفاده از بلیتها را در شبکههای دارای NAT فراهم میکند. مقدار پیشفرض true است.
- permitted_enctypes
- انواع رمزنگاری را که سرورها برای کلیدهای نشست و برای رمزنگاری بلیت و اصالتسنج (authenticator) مجاز میدانند، به ترتیب ترجیح از بالاترین به پایینترین مشخص میکند. از نگارش ۱.۱۸ به بعد، این برچسب همچنین به عنوان مقدار پیشفرض برای default_tgs_enctypes و default_tkt_enctypes عمل میکند. مقدار پیشفرض برای این برچسب عبارت است از: aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 aes256-cts-hmac-sha384-192 aes128-cts-hmac-sha256-128 des3-cbc-sha1 arcfour-hmac-md5 camellia256-cts-cmac camellia128-cts-cmac.
- plugin_base_dir
- در صورت تنظیم، پوشه پایهای را که افزونههای krb5 در آن قرار دارند تعیین میکند. مقدار پیشفرض، زیرپوشه krb5/plugins از پوشه کتابخانه krb5 است. این رابطه در نگارش ۱.۱۷ و بعد از آن مشمول گسترش پارامتر (در ادامه ببینید) است.
- preferred_preauth_types
- این امکان را به شما میدهد تا انواع پیشاحراز هویت ترجیحی را که کلاینت پیش از سایر انواع ارائهشده توسط KDC امتحان خواهد کرد تنظیم کنید. مقدار پیشفرض این تنظیم "17, 16, 15, 14" است که libkrb5 را وادار میکند در صورت پشتیبانی، از PKINIT استفاده کند.
- proxiable
- اگر این فلگ true باشد، بلیتهای اولیه در صورت مجاز بودن توسط KDC، به طور پیشفرض قابل پروکسی (proxiable) خواهند بود. مقدار پیشفرض false است.
- qualify_shortname
- اگر این رشته تنظیم شود، پسوند دامنه را برای نامهای میزبان تکمؤلفهای در زمانی که استانداردسازی DNS استفاده نمیشود تعیین میکند (یا به این دلیل که dns_canonicalize_hostname روی false است یا به دلیل اینکه استانداردسازی رو به جلو ناموفق بوده است). مقدار پیشفرض، اولین دامنه جستجوی پیکربندی DNS سیستم است. برای غیرفعال کردن تکمیل نامهای کوتاه، این رابطه را با qualify_shortname = "" روی رشته خالی تنظیم کنید. (جدید در نگارش ۱.۱۸.)
- rdns
- اگر این فلگ true باشد، جستجوی معکوس نام علاوه بر جستجوی رو به جلو برای استانداردسازی نامهای میزبان جهت استفاده در نامهای هویت سرویس به کار میرود. اگر dns_canonicalize_hostname روی false تنظیم شده باشد، این فلگ هیچ اثری ندارد. مقدار پیشفرض true است.
- realm_try_domains
- مشخص میکند که آیا مؤلفههای دامنه یک میزبان باید برای تعیین قلمرو کربروس میزبان استفاده شوند یا خیر. مقدار این متغیر یک عدد صحیح است: -1 به معنای عدم جستجو است، 0 به معنای امتحان کردن خود دامنه میزبان است، 1 به معنای امتحان کردن دامنه والد بیواسطه نیز میباشد، و به همین ترتیب. سازوکار معمول کتابخانه برای یافتن قلمروهای کربروس جهت تعیین اینکه آیا یک دامنه یک قلمرو معتبر است یا خیر استفاده میشود، که ممکن است در صورت تنظیم بودن dns_lookup_kdc شامل پرسوجو از DNS باشد. مقدار پیشفرض عدم جستجوی مؤلفههای دامنه است.
- renew_lifetime
- (رشته مدتزمان.) طول عمر تجدیدپذیر پیشفرض را برای درخواستهای اولیه بلیت تنظیم میکند. مقدار پیشفرض 0 است.
- spake_preauth_groups
- فهرستی از
واژگان
جداشده با
فاصله یا
کاما که
گروههای
مجاز برای
پیشاحراز
هویت SPAKE را
مشخص
میکند.
مقادیر
ممکن
عبارتند از:
edwards25519 خم Edwards25519 (RFC 7748) P-256 خم NIST P-256 (RFC 5480) P-384 خم NIST P-384 (RFC 5480) P-521 خم NIST P-521 (RFC 5480) مقدار پیشفرض برای کلاینت edwards25519 است. مقدار پیشفرض برای KDC خالی است. جدید در نگارش ۱.۱۷.
- ticket_lifetime
- (رشته مدتزمان.) طول عمر پیشفرض را برای درخواستهای اولیه بلیت تنظیم میکند. مقدار پیشفرض 1 day (یک روز) است.
- udp_preference_limit
- هنگام ارسال پیام به KDC، اگر اندازه پیام بیشتر از udp_preference_limit باشد، کتابخانه پیش از UDP تلاش خواهد کرد از TCP استفاده کند. اگر پیام کوچکتر از udp_preference_limit باشد، ابتدا UDP پیش از TCP امتحان خواهد شد. بدون در نظر گرفتن اندازه، در صورت ناموفق بودن تلاش نخست، هر دو پروتکل امتحان خواهند شد.
- verify_ap_req_nofail
- اگر این فلگ true باشد، در صورتی که ماشین کلاینت فاقد keytab باشد، تلاش برای اعتبارسنجی گواهینامههای اولیه با شکست مواجه خواهد شد. مقدار پیشفرض false است.
- client_aware_channel_bindings
- اگر این فلگ true باشد، تمام درخواستهای احراز هویت پروتکل برنامه کاربردی نشانهگذاری میشوند تا مشخص کنند که برنامه کاربردی هنگام کار بر روی یک کانال امن از اتصالهای کانال (channel bindings) پشتیبانی میکند. مقدار پیشفرض false است.
[realms]
هر برچسب در بخش [realms] فایل، نام یک قلمرو کربروس است. مقدار برچسب، زیربخشی شامل رابطههایی است که ویژگیهای آن قلمرو خاص را تعریف میکنند. برای هر قلمرو، برچسبهای زیر ممکن است در زیربخش قلمرو مشخص شوند:
- admin_server
- میزبانی را که سرور مدیریتی روی آن در حال اجرا است مشخص میکند. معمولاً این سرور اصلی کربروس است. برای برقراری ارتباط با سرور kadmind(8) برای قلمرو، باید به این برچسب مقدار داده شود.
- auth_to_local
- این برچسب به شما اجازه میدهد یک قاعده کلی برای نگاشت نامهای هویت به نامهای کاربری محلی تنظیم کنید. اگر نگاشت صریحی برای نام هویتی که در حال ترجمه است وجود نداشته باشد، از این قاعده استفاده خواهد شد. مقادیر ممکن عبارتند از:
- RULE:exp
- نام محلی از
exp
فرمولبندی
خواهد شد.
قالب exp به صورت [n:string](regexp)s/pattern/replacement/g است. عدد صحیح n مشخص میکند که هویت هدف باید چند مؤلفه داشته باشد. اگر این تطابق داشته باشد، رشتهای از string تشکیل میشود که قلمرو هویت را به جای $0 و مؤلفه nام هویت را به جای $n جایگزین میکند (به عنوان نمونه، اگر هویت johndoe/admin بود، آنگاه [2:$2$1foo] به رشته adminjohndoefoo منجر میشد). اگر این رشته با regexp تطابق داشته باشد، دستور جایگزینی s//[g] روی رشته اجرا خواهد شد. گزینه اختیاری g باعث میشود که جایگزینی روی کل string به صورت سراسری انجام شود، به جای آنکه فقط اولین تطابق در string جایگزین گردد.
- DEFAULT
- نام هویت به عنوان نام کاربر محلی استفاده خواهد شد. اگر هویت بیش از یک مؤلفه داشته باشد یا در قلمرو پیشفرض نباشد، این قاعده قابل اعمال نبوده و تبدیل با شکست مواجه خواهد شد.
برای نمونه:
[realms]
ATHENA.MIT.EDU = {
auth_to_local = RULE:[2:$1](johndoe)s/^.*$/guest/
auth_to_local = RULE:[2:$1;$2](^.*;admin$)s/;admin$//
auth_to_local = RULE:[2:$2](^.*;root)s/^.*$/root/
auth_to_local = DEFAULT
}
باعث میشود هر هویتی که مؤلفه دوم آن root یا admin نباشد با قاعده پیشفرض ترجمه شود. هویتی با مؤلفه دوم admin به مؤلفه اول خود تبدیل خواهد شد. root به عنوان نام محلی برای هر هویتی با مؤلفه دوم root استفاده میشود. استثنای این دو قاعده، هر هویت johndoe/* است که همیشه نام محلی guest را دریافت خواهد کرد.
- auth_to_local_names
- این زیربخش به شما امکان میدهد نگاشتهای صریحی را از نامهای هویت به نامهای کاربری محلی تنظیم کنید. برچسب، نام نگاشت است و مقدار، نام کاربر محلی متناظر است.
- default_domain
- این برچسب دامنهای را مشخص میکند که برای گسترش نامهای میزبان هنگام ترجمه هویتهای سرویس کربروس ۴ به هویتهای کربروس ۵ استفاده میشود (برای نمونه، هنگام تبدیل rcmd.hostname به host/hostname.domain).
- disable_encrypted_timestamp
- اگر این فلگ true باشد، کلاینت در صورت درخواست KDC، پیشاحراز هویت با برچسب زمانی رمزگذاریشده را انجام نخواهد داد. تنظیم این فلگ میتواند به جلوگیری از حملات فرهنگ لغت توسط مهاجمان فعال کمک کند، در صورتی که KDCهای قلمرو از پیشاحراز هویت SPAKE پشتیبانی کنند یا اگر احراز هویت اولیه همیشه از سازوکار دیگری استفاده کند یا همیشه از FAST استفاده نماید. این فلگ در طول ارجاعات کلاینت در احراز هویت اولیه باقی میماند. این فلگ مانع از ارائه برچسب زمانی رمزگذاریشده توسط KDC نمیشود. جدید در نگارش ۱.۱۷.
- http_anchors
- هنگامی که
KDCها و
سرورهای kpasswd
از طریق
پروکسیهای
HTTPS قابل
دسترسی
هستند، این
برچسب
میتواند
برای مشخص
کردن مکان
گواهی CA که
باید برای
صدور گواهی
برای سرور
پروکسی
مورد
اعتماد
باشد،
استفاده
شود. در
صورت عدم
تعیین، از
مجموعه
پیشفرض
گواهیهای
CA در سطح
سیستم
استفاده
میشود.
نحو مقادیر مشابه مقادیر برچسب pkinit_anchors است:
FILE: filename
فرض میشود که filename نام یک فایل دستهگواهی (ca-bundle) به سبک OpenSSL است.
DIR: dirname
فرض میشود که dirname پوشهای است که شامل گواهیهای CA میباشد. تمام فایلهای درون پوشه بررسی خواهند شد؛ اگر شامل گواهیها (در قالب PEM) باشند، استفاده خواهند شد.
ENV: envvar
envvar نام یک متغیر محیطی را مشخص میکند که روی مقداری مطابق با یکی از مقادیر قبلی تنظیم شده است. برای نمونه، ENV:X509_PROXY_CA، که در آن متغیر محیطی X509_PROXY_CA روی FILE:/tmp/my_proxy.pem تنظیم شده است.
- kdc
- نام یا آدرس میزبانی که یک KDC را برای آن قلمرو اجرا میکند. یک شماره پورت اختیاری که با دونقطه از نام میزبان جدا میشود، میتواند درج شود. اگر نام یا آدرس شامل دونقطه باشد (برای نمونه، اگر یک آدرس IPv6 باشد)، آن را در براکت قرار دهید تا دونقطه از جداکننده پورت متمایز شود. برای اینکه رایانه شما بتواند با KDC هر قلمرو ارتباط برقرار کند، باید به این برچسب در هر زیربخش قلمرو در فایل پیکربندی مقداری داده شود، یا باید رکوردهای DNS SRV وجود داشته باشند که KDCها را مشخص کنند.
- kpasswd_server
- به سروری اشاره میکند که تمام تغییرات گذرواژه در آن انجام میشود. اگر چنین مدخلی وجود نداشته باشد، از DNS پرسوجو خواهد شد (مگر اینکه توسط dns_lookup_kdc منع شده باشد). در نهایت، پورت ۴۶۴ روی میزبان admin_server امتحان خواهد شد.
- master_kdc
- نام پیشین برای primary_kdc قبل از نگارش ۱.۱۹. مقدار آن در صورتی که primary_kdc مشخص نشده باشد، به عنوان جایگزین استفاده میشود.
- primary_kdc
- KDC(های) اصلی را مشخص میکند. در حال حاضر، این برچسب فقط در یک حالت استفاده میشود: اگر تلاشی برای دریافت گواهینامه به دلیل گذرواژه نامعتبر با شکست مواجه شود، نرمافزار کلاینت تلاش خواهد کرد با KDC اصلی تماس بگیرد، در صورتی که گذرواژه کاربر به تازگی تغییر کرده باشد و پایگاه داده بهروزرسانیشده هنوز به سرورهای رونوشت (replica) منتشر نشده باشد. جدید در نگارش ۱.۱۹.
- v4_instance_convert
- این زیربخش به مدیر سیستم اجازه میدهد استثناهایی را برای قاعده نگاشت default_domain پیکربندی کند. این بخش شامل نمونههای V4 (نام برچسب) است که باید به یک نام میزبان خاص (مقدار برچسب) به عنوان مؤلفه دوم در نام هویت کربروس نسخه ۵ ترجمه شوند.
- v4_realm
- این رابطه توسط روتینهای کتابخانه krb524 هنگام تبدیل نام هویت V5 به نام هویت V4 استفاده میشود. زمانی به کار میرود که نام قلمرو V4 و نام قلمرو V5 یکسان نباشند، اما همچنان نامهای هویت و گذرواژههای مشترک داشته باشند. مقدار برچسب، نام قلمرو کربروس نسخه ۴ است.
[domain_realm]
بخش [domain_realm] ترجمهای از نامهای میزبان به قلمروهای کربروس ارائه میدهد. هر برچسب یک نام دامنه است که نگاشت آن دامنه و تمام زیردامنهها را فراهم میکند. اگر برچسب با یک نقطه (.) آغاز شود، آنگاه تنها برای زیردامنهها اعمال میشود. قلمرو کربروس ممکن است در بخش realms یا با استفاده از رکوردهای DNS SRV مشخص شود. نامهای برچسب باید با حروف کوچک باشند. برای نمونه:
[domain_realm]
crash.mit.edu = TEST.ATHENA.MIT.EDU
.dev.mit.edu = TEST.ATHENA.MIT.EDU
mit.edu = ATHENA.MIT.EDU
میزبان با نام crash.mit.edu را به قلمرو TEST.ATHENA.MIT.EDU نگاشت میکند. مدخل دوم تمام میزبانهای تحت دامنه dev.mit.edu را به قلمرو TEST.ATHENA.MIT.EDU نگاشت میکند، اما نه میزبان با نام dev.mit.edu را. آن میزبان با مدخل سوم مطابقت داده میشود که میزبان mit.edu و تمام میزبانهای تحت دامنه mit.edu را که با قاعده قبلی مطابقت ندارند به قلمرو ATHENA.MIT.EDU نگاشت میکند.
اگر هیچ مدخل ترجمهای برای نام میزبانی که برای هویت سرویس در یک درخواست بلیت سرویس استفاده شده است اعمال نشود، کتابخانه تلاش خواهد کرد یک ارجاع به قلمرو مناسب از KDC قلمرو کلاینت دریافت کند. اگر این کار موفقیتآمیز نباشد، قلمرو میزبان همان بخش دامنهای نام میزبان در نظر گرفته میشود که به حروف بزرگ تبدیل شده است، مگر اینکه تنظیم realm_try_domains در [libdefaults] باعث شود از دامنه والد متفاوتی استفاده شود.
[capaths]
به منظور انجام احراز هویت مستقیم (غیرسلسلهمراتبی) بینقلمرویی، به پیکربندی نیاز است تا مسیرهای احراز هویت میان قلمروها تعیین شود.
یک کلاینت از این بخش برای یافتن مسیر احراز هویت بین قلمرو خود و قلمرو سرور استفاده خواهد کرد. سرور از این بخش برای اعتبارسنجی مسیر احراز هویت استفادهشده توسط کلاینت، از طریق بررسی فیلد transited بلیت دریافت شده استفاده خواهد کرد.
برای هر قلمرو کلاینت شرکتکننده یک برچسب وجود دارد، و هر برچسب دارای زیربرچسبهایی برای هر یک از قلمروهای سرور است. مقدار زیربرچسبها یک قلمرو میانی است که ممکن است در احراز هویت بینقلمرویی شرکت کند. زیربرچسبها در صورتی که بیش از یک قلمرو میانی وجود داشته باشد میتوانند تکرار شوند. مقدار "." به این معنی است که دو قلمرو مستقیماً کلیدها را به اشتراک میگذارند و نباید به هیچ قلمرو میانی اجازه مشارکت داده شود.
تنها مدخلهایی که در کلاینت یا سرور مورد نیاز هستند باید وجود داشته باشند. یک کلاینت به یک برچسب برای قلمرو محلی خود به همراه زیربرچسبهایی برای تمام قلمروهای سرورهایی که نیاز به احراز هویت در آنها دارد نیاز دارد. یک سرور به یک برچسب برای هر قلمرو از کلاینتهایی که به آنها خدمات میدهد به همراه زیربرچسبی از قلمرو سرور نیاز دارد.
برای نمونه، ANL.GOV، PNL.GOV و NERSC.GOV همگی تمایل دارند از قلمرو ES.NET به عنوان یک قلمرو میانی استفاده کنند. ANL دارای یک زیرقلمرو به نام TEST.ANL.GOV است که با NERSC.GOV احراز هویت خواهد کرد اما با PNL.GOV خیر. بخش [capaths] برای سیستمهای ANL.GOV به این صورت خواهد بود:
[capaths]
ANL.GOV = {
TEST.ANL.GOV = .
PNL.GOV = ES.NET
NERSC.GOV = ES.NET
ES.NET = .
}
TEST.ANL.GOV = {
ANL.GOV = .
}
PNL.GOV = {
ANL.GOV = ES.NET
}
NERSC.GOV = {
ANL.GOV = ES.NET
}
ES.NET = {
ANL.GOV = .
}
بخش [capaths] فایل پیکربندی مورد استفاده در سیستمهای NERSC.GOV به این صورت خواهد بود:
[capaths]
NERSC.GOV = {
ANL.GOV = ES.NET
TEST.ANL.GOV = ES.NET
TEST.ANL.GOV = ANL.GOV
PNL.GOV = ES.NET
ES.NET = .
}
ANL.GOV = {
NERSC.GOV = ES.NET
}
PNL.GOV = {
NERSC.GOV = ES.NET
}
ES.NET = {
NERSC.GOV = .
}
TEST.ANL.GOV = {
NERSC.GOV = ANL.GOV
NERSC.GOV = ES.NET
}
هنگامی که یک زیربرچسب بیش از یک بار در یک برچسب استفاده شود، کلاینتها از ترتیب مقادیر برای تعیین مسیر استفاده خواهند کرد. ترتیب مقادیر برای سرورها اهمیتی ندارد.
[appdefaults]
هر برچسب در بخش [appdefaults] نام یک برنامه کاربردی کربروس نسخه ۵ یا گزینهای است که توسط برخی از برنامههای کاربردی کربروس نسخه ۵ استفاده میشود. مقدار برچسب رفتارهای پیشفرض را برای آن برنامه کاربردی تعریف میکند.
برای نمونه:
[appdefaults]
telnet = {
ATHENA.MIT.EDU = {
option1 = false
}
}
telnet = {
option1 = true
option2 = true
}
ATHENA.MIT.EDU = {
option2 = false
}
option2 = true
چهار روش بالا برای تعیین مقدار یک گزینه، به ترتیب اولویت نزولی نشان داده شدهاند. در این مثال، اگر telnet در قلمرو EXAMPLE.COM در حال اجرا باشد، باید به طور پیشفرض option1 و option2 روی true تنظیم شده باشند. با این حال، یک برنامه telnet در قلمرو ATHENA.MIT.EDU باید option1 روی false و option2 روی true تنظیم شده باشد. هر برنامه دیگری در ATHENA.MIT.EDU باید به طور پیشفرض option2 روی false تنظیم شده باشد. هر برنامهای که در قلمروهای دیگر اجرا میشود باید option2 روی true تنظیم شده باشد.
فهرست گزینههای قابل تعیین برای هر برنامه کاربردی ممکن است در صفحات راهنمای آن برنامه یافت شود. پیشفرضهای برنامه کاربردی مشخصشده در اینجا توسط گزینههای مشخصشده در بخش realms بازنویسی میشوند.
[plugins]
- رابط pwqual
- رابط kadm5_hook
- رابطهای clpreauth و kdcpreauth
برچسبها در بخش [plugins] میتوانند برای ثبت ماژولهای افزونه پویا و فعال یا غیرفعال کردن ماژولها استفاده شوند. همه رابطهای با قابلیت افزونه krb5 از بخش [plugins] استفاده نمیکنند؛ رابطهایی که از آن استفاده میکنند در اینجا مستند شدهاند.
جدید در نگارش ۱.۹.
هر رابط با قابلیت افزونه متناظر با یک زیربخش از [plugins] است. تمام زیربخشها از برچسبهای یکسانی پشتیبانی میکنند:
- disable
- این برچسب ممکن است چندین مقدار داشته باشد. اگر مقادیری برای این برچسب وجود داشته باشد، ماژولهای نامبرده برای آن رابط افزونه غیرفعال خواهند شد.
- enable_only
- این برچسب ممکن است چندین مقدار داشته باشد. اگر مقادیری برای این برچسب وجود داشته باشد، تنها ماژولهای نامبرده برای آن رابط افزونه فعال خواهند شد.
- module
- این برچسب ممکن است چندین مقدار داشته باشد. هر مقدار رشتهای به شکل modulename:pathname است که باعث میشود شیء مشترک (shared object) واقع در pathname به عنوان یک ماژول پویا به نام modulename برای آن رابط افزونه ثبت شود. اگر pathname یک مسیر مطلق نباشد، نسبت به مقدار plugin_base_dir از [libdefaults] در نظر گرفته خواهد شد.
برای رابطهای افزونهای که ترتیب ماژول در آنها مهم است، ماژولهای ثبتشده با برچسب module معمولاً ابتدا و به ترتیبی که ثبت شدهاند میآیند و پس از آنها ماژولهای توکار به ترتیبی که در زیر مستند شدهاند قرار میگیرند. اگر از برچسبهای enable_only استفاده شود، ترتیب آن برچسبها بر ترتیب عادی ماژولها برتری خواهد داشت.
زیربخشهای زیر در حال حاضر در بخش [plugins] پشتیبانی میشوند:
رابط ccselect (ccselect interface)
زیربخش ccselect ماژولها را برای انتخاب حافظه پنهان گواهینامه در یک مجموعه حافظه پنهان کنترل میکند. علاوه بر هر ماژول پویای ثبتشده، ماژولهای توکار زیر وجود دارند (و ممکن است با برچسب disable غیرفعال شوند):
- k5identity
- از یک فایل .k5identity در پوشه خانگی کاربر برای انتخاب هویت کلاینت استفاده میکند.
- realm
- از قلمرو سرویس برای حدس زدن یک حافظه پنهان مناسب از مجموعه استفاده میکند.
- hostname
- اگر هویت سرویس مبتنی بر میزبان باشد، از نام میزبان سرویس برای حدس زدن یک حافظه پنهان مناسب از مجموعه استفاده میکند.
رابط pwqual (pwqual interface)
زیربخش pwqual ماژولها را برای رابط کیفیت گذرواژه کنترل میکند، که برای رد گذرواژههای ضعیف هنگام تغییر گذرواژه استفاده میشود. ماژولهای توکار زیر برای این رابط وجود دارند:
رابط kadm5_hook (kadm5_hook interface)
رابط kadm5_hook اطلاعات مربوط به ایجاد هویت، تغییر، تغییر گذرواژه و حذف را در اختیار افزونهها قرار میدهد. این رابط میتواند برای نوشتن یک افزونه جهت همگامسازی MIT Kerberos با پایگاه داده دیگری مانند Active Directory استفاده شود. هیچ افزونه توکاری برای این رابط وجود ندارد.
رابط kadm5_auth (kadm5_auth interface)
بخش kadm5_auth (معرفیشده در نگارش ۱.۱۶) ماژولها را برای رابط مجازشماری kadmin کنترل میکند، که تعیین میکند آیا یک هویت کلاینت مجاز به انجام یک عملیات kadmin است یا خیر. ماژولهای توکار زیر برای این رابط وجود دارند:
رابطهای clpreauth و kdcpreauth (clpreauth and kdcpreauth interfaces)
رابطهای clpreauth و kdcpreauth به ماژولهای افزونه اجازه میدهند تا سازوکارهای پیشاحراز هویت کلاینت و KDC را ارائه دهند. ماژولهای توکار زیر برای این رابطها وجود دارند:
- pkinit
- این ماژول سازوکار پیشاحراز هویت PKINIT را پیادهسازی میکند.
- encrypted_challenge
- این ماژول عامل FAST چالش رمزگذاریشده را پیادهسازی میکند.
- encrypted_timestamp
- این ماژول سازوکار برچسب زمانی رمزگذاریشده را پیادهسازی میکند.
رابط hostrealm (hostrealm interface)
بخش hostrealm (معرفیشده در نگارش ۱.۱۲) ماژولها را برای رابط میزبان به قلمرو کنترل میکند، که بر نگاشت محلی نامهای میزبان به نامهای قلمرو و انتخاب قلمرو پیشفرض تأثیر میگذارد. ماژولهای توکار زیر برای این رابط وجود دارند:
- profile
- این ماژول با بخش [domain_realm] پروفایل برای نگاشتهای معتبر میزبان به قلمرو و با متغیر default_realm برای قلمرو پیشفرض مشورت میکند.
- dns
- این ماژول به دنبال رکوردهای DNS برای نگاشتهای جایگزین میزبان به قلمرو و قلمرو پیشفرض میگردد. این ماژول تنها در صورتی کار میکند که متغیر dns_lookup_realm روی true تنظیم شده باشد.
- domain
- این ماژول قواعد تجربی (heuristics) را برای نگاشتهای جایگزین میزبان به قلمرو اعمال میکند. این ماژول متغیر realm_try_domains را پیادهسازی میکند و در صورتی که نتیجهای حاصل نشود، از دامنه والد بزرگنویسیشده نام میزبان استفاده میکند.
رابط localauth (localauth interface)
بخش localauth (معرفیشده در نگارش ۱.۱۲) ماژولها را برای رابط مجازشماری محلی کنترل میکند، که بر رابطه بین هویتهای کربروس و حسابهای سیستم محلی تأثیر میگذارد. ماژولهای توکار زیر برای این رابط وجود دارند:
- default
- این ماژول نوع DEFAULT را برای مقادیر auth_to_local پیادهسازی میکند.
- rule
- این ماژول نوع RULE را برای مقادیر auth_to_local پیادهسازی میکند.
- names
- این ماژول به دنبال یک نگاشت auth_to_local_names برای نام هویت میگردد.
- auth_to_local
- این ماژول مقادیر auth_to_local را در بخش قلمرو پیشفرض پردازش میکند و در صورتی که مقادیر auth_to_local وجود نداشته باشند، روش پیشفرض را اعمال میکند.
- k5login
- این ماژول به یک هویت بر اساس فایل .k5login(5) حساب محلی، دسترسی به آن حساب را اعطا میکند.
- an2ln
- این ماژول در صورتی که نام هویت به نام حساب محلی نگاشت شود، دسترسی به حساب محلی را برای هویت مجاز میکند.
رابط certauth (certauth interface)
بخش certauth (معرفیشده در نگارش ۱.۱۶) ماژولها را برای رابط مجازشماری گواهی کنترل میکند، که تعیین میکند آیا یک گواهی مجاز به پیشاحراز هویت یک کاربر از طریق PKINIT است یا خیر. ماژولهای توکار زیر برای این رابط وجود دارند:
- pkinit_san
- این ماژول در صورتی که گواهی حاوی یک نام جایگزین موضوع (SAN) از نوع PKINIT برای هویت کلاینت درخواستشده باشد، یا یک SAN از نوع UPN مایکروسافت منطبق بر هویت باشد (در صورتی که pkinit_allow_upn برای قلمرو روی true تنظیم شده باشد)، گواهی را تأیید میکند.
- pkinit_eku
- این ماژول در صورتی که گواهی حاوی یک ویژگی کاربرد گسترده کلید (Extended Key Usage) هماهنگ با مقدار pkinit_eku_checking برای قلمرو نباشد، گواهی را رد میکند.
- dbmatch
- این ماژول گواهی را بر اساس اینکه با ویژگی رشتهای pkinit_cert_match روی هویت کلاینت (در صورت وجود آن ویژگی) مطابقت دارد یا خیر، مجاز یا رد میکند.
گزینههای PKINIT (PKINIT OPTIONS)
نکته:
- 1.
- زیربخش وابسته به قلمرو از [libdefaults]:
[libdefaults]
EXAMPLE.COM = {
pkinit_anchors = FILE:/usr/local/example.com.crt
}
- 2.
- مقدار وابسته به قلمرو در بخش [realms]:
[realms]
OTHERREALM.ORG = {
pkinit_anchors = FILE:/usr/local/otherrealm.org.crt
}
- 3.
- مقدار عمومی در بخش [libdefaults]:
[libdefaults]
pkinit_anchors = DIR:/usr/local/generic_trusted_cas/
مشخص کردن اطلاعات هویت PKINIT (Specifying PKINIT identity information)
نحو مشخص کردن اطلاعات هویت، اعتماد و ابطال کلید عمومی برای PKINIT به شرح زیر است:
- FILE:filename[,keyfilename]
- این گزینه
رفتاری
وابسته به
زمینه دارد.
در pkinit_identity یا pkinit_identities، filename نام یک فایل با قالب PEM شامل گواهی کاربر را مشخص میکند. اگر keyfilename مشخص نشود، انتظار میرود که کلید خصوصی کاربر نیز در filename باشد. در غیر این صورت، keyfilename نام فایل حاوی کلید خصوصی است.
در pkinit_anchors یا pkinit_pool، فرض میشود که filename نام یک فایل دستهگواهی (ca-bundle) به سبک OpenSSL است.
- DIR:dirname
- این گزینه
رفتاری
وابسته به
زمینه دارد.
در pkinit_identity یا pkinit_identities، dirname پوشهای را با فایلهایی به نامهای *.crt و *.key مشخص میکند که در آن بخش اول نام فایل برای جفتهای منطبق گواهی و فایلهای کلید خصوصی یکسان است. هنگامی که فایلی با نامی که به .crt ختم میشود پیدا شد، یک فایل منطبق که به .key ختم میشود فرض میگردد که حاوی کلید خصوصی است. اگر چنین فایلی یافت نشود، گواهی موجود در .crt استفاده نمیشود.
در pkinit_anchors یا pkinit_pool، dirname یک پوشه هششده CA به سبک OpenSSL فرض میشود که در آن هر گواهی CA در فایلی به نام hash-of-ca-cert.# ذخیره شده است. این زیرساخت توصیه میشود، اما تمام فایلهای درون پوشه بررسی خواهند شد و اگر حاوی گواهیها (در قالب PEM) باشند، استفاده خواهند شد.
در pkinit_revoke، dirname یک پوشه هششده CA به سبک OpenSSL فرض میشود که در آن هر فهرست ابطال در فایلی به نام hash-of-ca-cert.r# ذخیره شده است. این زیرساخت توصیه میشود، اما تمام فایلهای درون پوشه بررسی خواهند شد و اگر حاوی فهرست ابطال (در قالب PEM) باشند، استفاده خواهند شد.
- PKCS12:filename
- filename نام یک فایل با قالب PKCS #12 شامل گواهی و کلید خصوصی کاربر است.
- PKCS11:[module_name=]modname[:slotid=slot-id][:token=token-label][:certid=cert-id][:certlabel=cert-label]
- تمام کلیدواژهها/مقادیر اختیاری هستند. modname مکان کتابخانهای را که PKCS #11 را پیادهسازی میکند مشخص میکند. اگر مقداری بدون کلیدواژه دیده شود، فرض میشود که modname است. اگر هیچ نام ماژولی مشخص نشود، مقدار پیشفرض opensc-pkcs11.so است. slotid= و/یا token= میتوانند برای اجبار به استفاده از یک کارتخوان هوشمند یا توکن خاص در صورتی که بیش از یکی در دسترس باشد، مشخص شوند. certid= و/یا certlabel= میتوانند برای اجبار به انتخاب یک گواهی خاص روی دستگاه مشخص شوند. برای روشهای بیشتر انتخاب یک گواهی خاص جهت استفاده برای PKINIT، گزینه پیکربندی pkinit_cert_match را ببینید.
- ENV:envvar
- envvar نام یک متغیر محیطی را مشخص میکند که روی مقداری مطابق با یکی از مقادیر قبلی تنظیم شده است. برای نمونه، ENV:X509_PROXY، که در آن متغیر محیطی X509_PROXY روی FILE:/tmp/my_proxy.pem تنظیم شده است.
گزینههای krb5.conf مربوط به PKINIT (PKINIT krb5.conf options)
- pkinit_anchors
- مکان گواهیهای لنگر اعتماد (ریشه) را که کلاینت برای امضای گواهیهای KDC به آنها اعتماد دارد، مشخص میکند. این گزینه ممکن است چندین بار مشخص شود. اگر کاربر X509_anchors را در خط فرمان مشخص کند، این مقادیر از فایل پیکربندی استفاده نمیشوند.
- pkinit_cert_match
- قواعد
تطابقی را
مشخص
میکند که
گواهی
کلاینت
باید پیش از
استفاده
برای تلاش
جهت احراز
هویت PKINIT با
آنها
مطابقت
داشته باشد.
اگر کاربری
چندین
گواهی در
دسترس
داشته باشد
(روی کارت
هوشمند یا
رسانههای
دیگر)، باید
پیش از تلاش
برای احراز
هویت PKINIT
دقیقاً یک
گواهی
انتخاب شود.
این گزینه
ممکن است
چندین بار
مشخص شود.
تمام
گواهیهای
در دسترس به
ترتیب در
برابر هر
قاعده
بررسی
میشوند تا
زمانی که
تطابقی
دقیقاً
برای یک
گواهی وجود
داشته باشد.
رشتههای مقایسه Subject و Issuer، نمایشهای رشتهای RFC 2253 از مقادیر Subject DN و Issuer DN گواهی هستند.
نحو قواعد تطابق به این صورت است:
که در آن:
- relation-operator
- میتواند && باشد، به این معنی که تمام قواعد مؤلفه باید مطابقت داشته باشند، یا ||، به این معنی که تنها یک قاعده مؤلفه باید مطابقت داشته باشد. مقدار پیشفرض && است.
- component-rule
- میتواند یکی از موارد زیر باشد. توجه داشته باشید که هیچ نشانهگذاری یا فاصلهای بین قواعد مؤلفه وجود ندارد.
<SUBJECT>regular-expression <ISSUER>regular-expression <SAN>regular-expression <EKU>extended-key-usage-list <KU>key-usage-list
extended-key-usage-list فهرستی جداشده با کاما از مقادیر الزامی کاربرد گسترده کلید (Extended Key Usage) است. تمام مقادیر موجود در فهرست باید در گواهی وجود داشته باشند. مقادیر کاربرد گسترده کلید میتوانند موارد زیر باشند:
- pkinit
- msScLogin
- clientAuth
- emailProtection
key-usage-list فهرستی جداشده با کاما از مقادیر الزامی کاربرد کلید (Key Usage) است. تمام مقادیر موجود در فهرست باید در گواهی وجود داشته باشند. مقادیر کاربرد کلید میتوانند موارد زیر باشند:
- digitalSignature
- keyEncipherment
مثالها:
pkinit_cert_match = ||<SUBJECT>.*DoE.*<SAN>.*@EXAMPLE.COM pkinit_cert_match = &&<EKU>msScLogin,clientAuth<ISSUER>.*DoE.* pkinit_cert_match = <EKU>msScLogin,clientAuth<KU>digitalSignature
- pkinit_eku_checking
- این گزینه مشخص میکند که گواهی KDC ارائهشده به کلاینت باید حاوی چه مقدار کاربرد گسترده کلید (EKU) باشد. (توجه داشته باشید که اگر گواهی KDC دارای pkinit SubjectAlternativeName کدگذاریشده به عنوان نام Kerberos TGS باشد، بررسی EKU ضروری نیست زیرا CA صادرکننده این را به عنوان یک گواهی KDC تأیید کرده است.) مقادیر شناختهشده در فایل krb5.conf عبارتند از:
- kpKDC
- این مقدار پیشفرض است و مشخص میکند که KDC باید EKU از نوع id-pkinit-KPKdc را مطابق با تعریف RFC 4556 داشته باشد.
- kpServerAuth
- اگر kpServerAuth مشخص شود، یک گواهی KDC با EKU از نوع id-kp-serverAuth پذیرفته خواهد شد. این مقدار کاربرد کلید در بیشتر گواهیهای سرور صادرشده تجاری استفاده میشود.
- none
- اگر none مشخص شود، گواهی KDC بررسی نخواهد شد تا تایید شود که EKU قابل قبولی دارد. استفاده از این گزینه توصیه نمیشود.
- pkinit_dh_min_bits
- اندازه کلید دیفی-هلمن را که کلاینت تلاش خواهد کرد استفاده کند مشخص میکند. مقادیر قابل قبول 1024، 2048 و 4096 هستند. پیشفرض 2048 است.
- pkinit_identities
- مکان(هایی) را برای یافتن اطلاعات هویت X.509 کاربر مشخص میکند. اگر این گزینه چندین بار مشخص شود، هر مقدار به ترتیب امتحان میشود تا گواهیها پیدا شوند. توجه داشته باشید که اگر کاربر X509_user_identity را در خط فرمان مشخص کند، این مقادیر استفاده نمیشوند.
- pkinit_kdc_hostname
- حضور این گزینه نشان میدهد که کلاینت حاضر است یک گواهی KDC را با dNSName SAN (Subject Alternative Name) بپذیرد به جای اینکه به id-pkinit-san مطابق تعریف RFC 4556 نیاز داشته باشد. این گزینه ممکن است چندین بار مشخص شود. مقدار آن باید شامل نام میزبان قابل قبول برای KDC (همانطور که در گواهی آن درج شده) باشد.
- pkinit_pool
- مکان گواهیهای میانی را مشخص میکند که ممکن است توسط کلاینت برای تکمیل زنجیره اعتماد بین گواهی KDC و یک لنگر اعتماد استفاده شود. این گزینه ممکن است چندین بار مشخص شود.
- pkinit_require_crl_checking
- فرایند
اعتبارسنجی
پیشفرض
گواهی
همیشه
اطلاعات
ابطال
موجود را
بررسی
خواهد کرد
تا ببیند
آیا گواهی
باطل شده
است یا خیر.
اگر تطابقی
برای گواهی
در یک CRL یافت
شود،
اعتبارسنجی
با شکست
مواجه
میشود. اگر
گواهیِ در
حال
اعتبارسنجی
در CRL فهرست
نشده باشد،
یا هیچ CRL
برای CA
صادرکننده
آن وجود
نداشته
باشد، و
pkinit_require_crl_checking روی false
باشد،
اعتبارسنجی
با موفقیت
انجام
میشود.
با این حال، اگر pkinit_require_crl_checking روی true باشد و هیچ اطلاعات CRL برای CA صادرکننده در دسترس نباشد، اعتبارسنجی ناموفق خواهد بود.
اگر خطمشی به گونهای است که CRLهای بهروز باید برای هر CA وجود داشته باشند، pkinit_require_crl_checking باید روی true تنظیم شود.
- pkinit_revoke
- مکان اطلاعات فهرست ابطال گواهی (CRL) را مشخص میکند تا هنگام بررسی اعتبار گواهی KDC ارائهشده توسط کلاینت استفاده شود. این گزینه ممکن است چندین بار مشخص شود.
گسترش پارامترها (PARAMETER EXPANSION)
از نگارش ۱.۱۱ به بعد، چندین متغیر مانند default_keytab_name اجازه میدهند پارامترها گسترش یابند. پارامترهای معتبر عبارتند از:
| %{TEMP} | پوشه موقت (Temporary directory) |
| %{uid} | شناسه کاربری واقعی یونیکس (UID) یا SID ویندوز |
| %{euid} | شناسه کاربری مؤثر یونیکس یا SID ویندوز |
| %{USERID} | همان %{uid} |
| %{null} | رشته خالی |
| %{LIBDIR} | پوشه کتابخانه نصب |
| %{BINDIR} | پوشه باینری نصب |
| %{SBINDIR} | پوشه باینری مدیریت نصب |
| %{username} | (یونیکس) نام کاربری شناسه کاربری مؤثر |
| %{APPDATA} | (ویندوز) دادههای برنامه Roaming برای کاربر جاری |
| %{COMMON_APPDATA} | (ویندوز) دادههای برنامه برای همه کاربران |
| %{LOCAL_APPDATA} | (ویندوز) دادههای برنامه محلی برای کاربر جاری |
| %{SYSTEM} | (ویندوز) پوشه سیستم ویندوز |
| %{WINDOWS} | (ویندوز) پوشه ویندوز |
| %{USERCONFIG} | (ویندوز) پوشه فایل پیکربندی MIT krb5 به ازای هر کاربر |
| %{COMMONCONFIG} | (ویندوز) پوشه مشترک فایل پیکربندی MIT krb5 |
نمونه فایل KRB5.CONF (SAMPLE KRB5.CONF FILE)
در اینجا نمونهای از یک فایل عمومی krb5.conf آورده شده است:
[libdefaults]
default_realm = ATHENA.MIT.EDU
dns_lookup_kdc = true
dns_lookup_realm = false
[realms]
ATHENA.MIT.EDU = {
kdc = kerberos.mit.edu
kdc = kerberos-1.mit.edu
kdc = kerberos-2.mit.edu
admin_server = kerberos.mit.edu
primary_kdc = kerberos.mit.edu
}
EXAMPLE.COM = {
kdc = kerberos.example.com
kdc = kerberos-1.example.com
admin_server = kerberos.example.com
}
[domain_realm]
mit.edu = ATHENA.MIT.EDU
[capaths]
ATHENA.MIT.EDU = {
EXAMPLE.COM = .
}
EXAMPLE.COM = {
ATHENA.MIT.EDU = .
}
فایلها (FILES)
/etc/krb5.conf
همچنین ببینید (SEE ALSO)
syslog(3)
نویسنده (AUTHOR)
MIT
حق نشر (COPYRIGHT)
1985-2024, MIT
| مه ۲۰۲۵ | krb5 |