Kerberos – قسمت اول: اسطوره

Kerberos یا Cerberus نام یک موجود افسانه ای یونانی است که سگ نگهبانی است سه سر. این هیولا نگهبان دنیای مردگان است و به آن ها اجازه ی ورود و خروج می داده است. هرکول از جمله معدود افرادی است که توانسته است از این محافظ قدرتمند عبور کند. تصویر: سربروس در سردر دانشگاه سلطنتی استکهلم

پروتکل Kerberos توسط MIT توسعه داده شده است. ورژن های ۱ تا ۳ این پروتکل به صورت داخلی در خود MIT مورد استفاده قرار گرفته بودند. ورژن ۴ این پروتکل در دهه ۸۰ منتشر شد. در ۱۹۹۳ در RFC 1510 و سپس در ۲۰۰۵ در RFC 4120 نسخه ۵ام این پروتکل معرفی شد. MIT یک نسخه رایگان و دارای حق تالیف از این پروتکل را عمومی کرد و اسپانسر های مختلفی همچون Microsoft, Apple, Google, Oracle و سازمان های بزرگ دیگری پیدا کرد. در آن زمان، از آنجایی که از الگوریتم رمزنگاری DES استفاده می کرد، مجوز صادر شدن آن به خارج از آمریکا وجود نداشت. Microsoft در Windows از این پروتکل با قدری ویرایش استفاده می کند. Windows Server 2008 از نسخه ای کاملا منطبق بر RFC 1510 استفاده می کند.

Kerberos یک پروتکل تشخیص هویت (Authentication) در شبکه است. Windows Server 2000/2003/2008 از این پروتکل به عنوان پروتکل اصلی تشخیص هویت برای Active Directory استفاده می کنند. پروتکل دیگری که در Active Directory جهت Authentication استفاده می شود، NTLM است که جهت سازگاری با نسخ قبلی به کار گرفته شده است. Realm محدوده ای است که Kerberos در آن قادر به Authentication است.

معرفی Kerberos

در هر سیستمی که بر اساس Kerberos کار می کند، سه مولفه وجود دارد. اول Client که برای دسترسی به منابع روی شبکه احتیاج به تشخیص هویت (Authentication) دارد. دوم Server که نیاز دارد مکانیسمی اطمینان حاصل می کند تنها کاربران تشخیص هویت شده و دارای صلاحیت (Authorized) می توانند به منابع دسترسی داشته باشند. سوم یک KDC یا Key Distribution Center است که وظیفه نگه داری اطلاعات کاربران را دارد. در این مقاله قصد نداریم به بررسی عمیق این پروتکل به پردازیم و صرفا به مطالب سطحی اکتفا شده است. هدف از مقاله آن است مدیران Active Directory دید بهتری نسبت به این پروتکل داشته باشندتا بتواند تنظیمات kerberos را به نحو بهتری انجام دهند.

هر KDC از دو سرویس مجزا تشکیل شده است. Authentication Service و Ticket-Granting Service. سرویس Authentication یا به اختصار AS وظیفه صادر کردن Ticket-Granting Ticket را به Client دارد. برای درک بهتر پروتکل kerberos به مثال زیر توجه کنید:

image

در این مثال، برای ساده شدن، از وجود TGS صرف نظرمی کنیم و یک نمونه ساده شده از Kerberos است و وجود خارجی ندارد! در این سناریو، زمانی بررسی می شود که User از کامپیوتر Client قصد دسترسی به منبع R روی سرور V را دارد. در این سناریو ابتدا User با استفاده از نام کاربری خود (در اینجا IDc) و کلمه عبور خود (دراینجا Pc) و مشخص کردن سرور V (در اینجا IDv) یک در خواست برای AS ارسال می کند. AS بررسی خواهد کرد آیا IDc با Pc مطابقت دارد و سپس بررسی می کند آیا IDc مجوز دسترسی به V را دارد یا خیر. همانطور که توجه کردید در اینجا برای راحتی R را در نظر نمی گیریم و فقط V را بررسی می کنیم. سپس AS برای User روی Client یک Ticket ارسال می کند که با تحویل دادن آن Ticket به سرور V می تواند به آن دسترسی یابد. در Ticket مولفه های وجود دارد که با استفاده از یک کلید بین AS و V رمزنگاری شده است. سپس C با تحویل دادن Ticket و IDc به V درخواست دسترسی خود را به V می دهد. اکنون V با رمزگشایی Ticket می تواند هویت C را بررسی کند. V می تواند Ticket را رمزگشایی کند زیرا Kv یک کلید مشترک بین AS و V است.

C نمی تواند در Ticket دستکاری کند زیرا با استفاده از یک کلید ایمن رمز شده است. در Ticket علاوه بر IDc، از مولفه ADc استفاده می کنیم تا The Man In The Middle (نفوذگر) نتواند با دریافت Ticket خود را جای C جعل هویت کند و IDv از این جهت قرار می گیرد که برای یک Server دیگر Ticket قابل قبول نباشد و v می تواند تشخیص دهد که رمزگشایی درست انجام می شود. این سناریو مشکلات متعددی دارد. مشکل اول آن است که هر زمان User قصد دسترسی به R را دارد، لازم است Pc و IDc را وارد کند. از سوی دیگر ارسال این دو به صورت Clear Text (متن رمز نشده) انجام شده است که The Man In The Middle را قطعا خوشحال خواهد کرد! از روی دیگر، مکانیسمی برای تشخیص هویت V برای C وجود ندارد. به عبارت دیگر، C نمی تواند نشخیص دهد که آیا V یک سرور جعلی است یا خیر. Ticket ها لازم است داری زمان و طول عمر باشند تا مدت اعتبار آن ها محدود شود. به هر صورت چیزی که در بالا آمد، فقط مقدمه ای است برای آنکه ادامه مطلب را آسان تر درک شود.

Kerberos v4

کربروس ورژن ۴ را از این جهت بررسی می کنیم که درک Kerberos v5 آسان تر باشد. این نسخه با آنکه همچنان در برخی سیستم ها در حال استفاده است، دچار مشکلات امنیتی قابل توجهی است.

image

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

در قدم اول، C از AS با مشخص کردن IDc و IDtgs در خواست یک Ticket می کند. این Ticket را به TGS بعدا تحویل خواهد داد از این رو Tickettgs به آن خواهیم گفت.  در قدم دوم، پاسخ AS به صورت رمزنگاری شده ارسال می شود. Kc کلیدی است که بین V و C وجود دارد و با استفاده از Pc تولید می شود. بنابراین تنها زمانی C قادر به رمزگشایی پیام خواهد بود که Pc صحیح را بداند. همچنین AS یک کلید مشخص برای ارتباط بین C و TGS برای آن ها صادر می کند.

در قدم سوم، C از TGS درخواست دسترسی به V را می کند. برای این منظور، علاوه بر Tickettgs که در مرحله قبل آن را دریافت کرده بود،  از Authenticatorc جهت سنجش اعتبار Ticket استفاده می شود. در قدم چهارم، TGS برای C یک Ticket ارسال می کند که می تواند با ارائه آن به V هویت خود را مشخص کند. با توجه به آنکه این Ticket به v تحویل داده می شود آن را Ticketv می گوییم. همچنین Ticketv با استفاده از Kv رمزنگاری شده است. این مراحل هر زمان که کاربر قصد دسترسی به سرویس جدیدی را داشته باشد تکرار می شود. بر خلاف Ticket ها، Authenticatorc فقط یک بار می توانند استفاده شوند و LifteTime آن ها بسیار کوتاه است. کلید Kcv کلیدی است که برای تشخیص هویت V برای C به کار گرفته شده است. این کلید به V نیز تحویل داده می شود.

در قدم پنجم: C درخواست برقرای Session با V را می کند. برای این منظور لازم است Ticketv و Authenticatorc  را به V تحویل دهد. در مرحله ششم، برای تشخیص هویت متقابل، V با اضافه کردن TS5 و رمز کردن آن با  Kcv برای C تشخیص هویت می شود.

Kerberos v5

در این ورژن از یک برچسب برای تعیین نوع رمزنگاری استفاده می شود و رمزنگاری محدود به DES نمی باشد. همچنین مشکلات متعددی که در نسخه قبل وجود داشت بر طرف گردد. فرآیندی که  اینجا مطرح شده است با فرآیند Windows Server 2008 تقریبا نزدیک است.

image

عناصر جدید:

۱) Realm: جهت مشخص کردن حوزه User برای کارکردن به صورت چند حوزه ای

۲) options: با استفاده از این فیلد می توان درخواست کرد برخی Flag ها در Ticket قرار داده شوند.

۳) Times: زمان ها به صورت دقیق با استفاده از پارامتر های From برای تعیین زمان شروع، Till برای تعیین زمان اتمام و Rtime برای تعیین زمان تمدید معین می شوند.

۴)nonce: مقداری تکراری جهت کسب اطمینان از آنکه پاسخ جدید توسط The Man In The Middle داده نشده است.

۵)Subkey: انتخاب C برای یک کلید که محافظت از Session. (از همان Kcv استفاده می شود.)

۶) Seq#: یک فیلد اختیاری جهت تشخیص حمله های  Replay معین کننده شماره Seq آغازین در Session با V.

 

در قسمت بعدی: Kerberos در Active Directory

6 دیدگاه در Kerberos – قسمت اول: اسطوره

  1. سلام ازساییتون خیلی تشکرمیکنم ازشماکمک میخواستم من پایان نامه م درموردتنظیم کربروس درشبکه به صورت عملیه ،خیلی گشتم مطلبی که اونقدرکمکم بکنه نبودمیشه شمانحوه تنظیم کردن کربروس توی شبکه روتوی سایتتون بذارید.خیلی ممنون میشم

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *