در اساطیر یونان، کربروس سگی چند سر است که از دروازههای دنیای زیرین محافظت میکند. معنای Kerberos در فناوری مشابه است: Kerberos یک پروتکل احراز هویت است که از شبکه محافظت می کند و به سیستم ها و کاربران امکان می دهد هویت خود را قبل از دسترسی به منابع به یکدیگر ثابت کنند. برای آشنایی با نحوه عملکرد احراز هویت Kerberos و دریافت نکات ارزشمند برای جلوگیری از مشکلات، ادامه دهید.
Kerberos به دلیل وجود سه بازیگر مختلف در پروتکل، از روی سگ سه سر نامگذاری شد:
Client: نهادی که به دنبال ارائه هویت خود است
Application Server (AP): سرویسی که مشتری یا کاربر می خواهد به آن دسترسی داشته باشد
مرکز توزیع کلید (KDC): یک شخص ثالث قابل اعتماد که بلیط صادر می کند
پشتیبانی از Kerberos تقریبا در هر سیستم عامل، از جمله Apple OSX/iOS و بسیاری از توزیعهای UNIX و Linux وجود دارد. با این حال، Microsoft Active Directory پرمصرف ترین پیاده سازی Kerberos است. این مبتنی بر سرویس احراز هویت شبکه Kerberos (V5) است.
مایکروسافت مشخصات پروتکل پایه را گسترش داد و تعدادی پسوند برای پیاده سازی ویژگی های خاص اکتیو دایرکتوری و سیستم عامل ویندوز سرور اضافه کرد.
در اکتیو دایرکتوری، هر کنترل کننده دامنه به عنوان KDC عمل می کند و دو سرویس اصلی را ارائه می دهد:
سرویس احراز هویت (AS) – مشتریان را احراز هویت می کند و برای آنها بلیط صادر می کند
خدمات اعطای بلیط (TGS) – مشتریان تأیید شده را می پذیرد و برای آنها بلیط برای دسترسی به منابع دیگر صادر می کند.
بلیط ها از فناوری رمزگذاری متقارن استفاده می کنند. گذرواژههای کاربر خاصی برای رمزگذاری و امضای بلیطهای خاص استفاده میشوند، اما ریشه امنیت Kerberos کلیدی است که فقط شخص ثالث قابل اعتمادی است که بلیطها را صادر میکند.
هر مرحله از احراز هویت Kerberos از رمزنگاری برای محافظت از بسته ها در برابر تغییر یا خواندن استفاده می کند و احراز هویت متقابل را فراهم می کند. یک کلاینت با استفاده از رمز عبور کاربر برای رمزگذاری درخواست، یک بلیط برای یک کاربر از KDC درخواست می کند. اگر KDC بتواند درخواست را با رمز عبور کاربر که ذخیره کرده است رمزگشایی کند، می داند که کلاینت رمز عبور صحیح را برای کاربر ارائه کرده است. KDC یک بلیط اعطای بلیط (TGT) برای کاربر ایجاد می کند، آن را با رمز عبور کاربر رمزگذاری می کند و آن را به مشتری برمی گرداند. اگر مشتری بتواند آن بلیط را با رمز عبور کاربر رمزگشایی کند، می داند که KDC قانونی است.
یک مشتری با ارائه TGT خود و یک درخواست سرویس اعطای بلیط (TGS) که شامل نام اصلی سرویس برای سرویسی است که میخواهد به آن دسترسی داشته باشد، از KDC بلیط درخواست میکند. KDC یک بلیط سرویس (TGS) ایجاد می کند که با هش رمز عبور سرویس (کلید مخفی TGS) رمزگذاری می شود، پیام بلیط و تأیید کننده را با کلید جلسه سرویس اعطای بلیط مشترک رمزگذاری می کند و در نهایت TGS را به مشتری باز می فرستد.
یک کلاینت با ارائه بلیط سرویسی که از KDC به دست آورده به سرور برنامه، که پیام را با استفاده از هش رمز عبور خود رمزگشایی می کند، درخواست دسترسی به سرور برنامه (سرویس) می کند. اگر TGS را با موفقیت رمزگشایی کند، سرور برنامه به مشتری دسترسی می دهد.
KRB_AS_REQ: درخواست TGT از سرویس احراز هویت (AS)
درخواست مشتری شامل نام اصلی کاربر (UPN) و یک مهر زمانی است. با استفاده از هش رمز عبور کاربر رمزگذاری می شود.
KRB_AS_REP: TGT دریافت شده از سرویس احراز هویت
KDC از UPN برای جستجوی مشتری در پایگاه داده خود استفاده می کند و از هش رمز عبور کاربر برای رمزگشایی پیام استفاده می کند.
AS یک TGT حاوی شناسه مشتری، آدرس شبکه مشتری، مهر زمانی، طول عمر و یک کلید جلسه (SK1) تولید می کند.
اگر KDC با موفقیت درخواست TGT را رمزگشایی کند و اگر مهر زمانی در انحراف زمانی پیکربندی شده KDC باشد، احراز هویت موفقیت آمیز است.
یک TGT و یک کلید جلسه TGS به مشتری ارسال می شود. کلید جلسه TGS برای رمزگذاری درخواست های بعدی استفاده می شود.
KRB_TGS_REQ: درخواست TGT و TGS ارائه کنید
مشتری TGT خود را همراه با درخواستی ارائه می کند که شامل SPN برای سرویسی است که می خواهد به آن دسترسی پیدا کند. درخواست TGS با کلید جلسه TGS رمزگذاری می شود.
KRB_TGS_REP: دریافت TGS از KDC
تلاش KDC برای تأیید اعتبار TGT. در صورت موفقیت آمیز بودن، یک TGS ایجاد می کند که حاوی اطلاعاتی در مورد درخواست کننده است، مانند SID و عضویت گروه آنها، و با هش رمز عبور سرویس رمزگذاری شده است.
TGS و کلیدهای جلسه سرویس با کلید جلسه TGS رمزگذاری شده و به مشتری ارسال می شوند.
KRB_AP_REQ: ارائه TGS به سرور برنامه برای مجوز
کلاینت TGS را که از KDC دریافت کرده به همراه یک پیام احراز هویت که با کلید جلسه سرویس رمزگذاری شده است به سرور برنامه ارسال می کند.
KRB_AP_REP: به مشتری اجازه دسترسی به سرویس را بدهید
مشتری پیام را دریافت کرده و آن را با کلید جلسه سرویس رمزگشایی می کند.
سرور برنامه، گواهی ویژگی امتیاز (PAC) را از بلیط سرویس استخراج می کند تا محتویات آن را با یک کنترل کننده دامنه تأیید کند.
اعتبار سنجی بلیط و PAC فقط زمانی اتفاق می افتد که TGT بیشتر از 20 دقیقه باشد.
تعداد انگشت شماری از عوامل وجود دارند که اگر به اندازه کافی ارائه نشده باشند، مشکل ایجاد می کنند.
تکرار بین کنترل کننده های دامنه مورد نیاز است.
اگر چندین کنترل کننده دامنه (و در نتیجه چندین KDC) مستقر شوند، باید Replication فعال شود و به موقع انجام شود. اگر تکرار شکست بخورد یا به تأخیر بیفتد، زمانی که کاربر رمز عبور خود را تغییر میدهد، خرابی در احراز هویت ممکن است.
کلاینت ها و KDC ها باید از وضوح نام NetBIOS و DNS استفاده کنند.
نامهای اصلی سرویس Kerberos معمولاً شامل آدرسهای NetBIOS و DNS هستند، به این معنی که KDC و کلاینت هر دو باید بتوانند آن نامها را به یک روش حل کنند. در شرایط خاص، آدرسهای IP ممکن است در نامهای اصلی سرویس نیز استفاده شوند.
کلاینت ها و KDC ها باید ساعت های خود را همگام سازی کنند.
اندازه گیری دقیق زمان برای جلوگیری از حملات تکراری مهم است. Kerberos از یک انحراف زمانی قابل تنظیم (به طور پیش فرض 5 دقیقه) پشتیبانی می کند، که در خارج از آن، احراز هویت مشتری با شکست مواجه می شود.
کلاینت ها و KDC ها باید بتوانند در شبکه ارتباط برقرار کنند.
ترافیک Kerberos در پورت TCP و UDP 88 رخ میدهد که باید از همه کلاینتها برای حداقل یک KDC قابل دسترسی باشد.
مشتریان، کاربران و خدمات باید دارای نام های منحصر به فرد باشند.
اعتبارنامههای تکراری برای رایانهها، کاربران یا نامهای اصلی سرویس میتواند باعث احراز هویت غیرمنتظره Kerberos شود.
هنگام مطالعه در مورد پروتکل Kerberos، مکرراً مواردی از پروتکل دسترسی Lightweight Directory Access Protocol (LDAP) مشاهده خواهید کرد. Kerberos و LDAP معمولاً با هم (از جمله در Microsoft Active Directory) برای ارائه یک فهرست راهنمای کاربر متمرکز (LDAP) و خدمات احراز هویت ایمن (Kerberos) استفاده میشوند.
LDAP اطلاعات مربوط به کاربران، گروه ها و سایر اشیاء (مانند رایانه ها) را در یک مکان مرکزی ذخیره می کند. همچنین می تواند احراز هویت ساده را ارائه دهد. با این حال، این پروتکل، بر خلاف Kerberos، به طور کلی نیاز به راز کاربر (یعنی رمز عبور) از طریق شبکه دارد. هر منبعی که کاربر میخواهد به آن دسترسی داشته باشد باید رمز عبور کاربر را مدیریت کرده و به طور جداگانه کاربر را در فهرست احراز هویت کند.
برخلاف LDAP، Kerberos قابلیت ورود به سیستم را فراهم می کند. هنگامی که کاربر در KDC احراز هویت شد، هیچ سرویس دیگری (مانند یک سایت اینترانت یا اشتراک فایل) به رمز عبور کاربر نیاز ندارد. KDC مسئول صدور بلیط هایی است که هر سرویس به آن اعتماد دارد.
ترکیب LDAP و Kerberos مدیریت متمرکز و احراز هویت کاربر را فراهم می کند و در شبکه های بزرگتر، Kerberos مزایای امنیتی قابل توجهی را ارائه می دهد.
دیدن بلیط های Kerberos شما آسان است. در رایانه مایکروسافت ویندوز، میتوانید از برنامه klist.exe برای شمارش آنها با باز کردن خط فرمان یا PowerShell و اجرای دستور klist tickets استفاده کنید. در مثال زیر می بینید که جو یک بلیط برای سرویس CIFS که دسترسی به اشتراک فایل است، به سروری به نام fileserver1 دارد.
PS C:Windowssystem32> klist tickets Current LogonId is 0:0xe67df Cached Tickets: (4) #0> Client: Cygle @ domain.local Server: cifs/fileserver1.domain.local/domain.local @ DOMAIN.LOCAL KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96 Ticket Flags 0x60a10000 -> forwardable forwarded renewable pre_authent name_canonicalize Start Time: 7/10/2020 12:33:49 (local) End Time: 7/10/2020 22:32:13 (local) Renew Time: 7/17/2020 12:32:13 (local) Session Key Type: AES-256-CTS-HMAC-SHA1-96 Cache Flags: 0x40 -> FAST Kdc Called: DC1.domain.local
Kerberos یک پروتکل احراز هویت شناخته شده و پرکاربرد است. از آنجایی که در قلب اکتیو دایرکتوری مایکروسافت قرار دارد، به یکی از پروتکل هایی تبدیل شده است که بیشتر مورد سوء استفاده دشمنان از همه رنگ ها قرار گرفته است. Netwrix برای کمک به شرکتها در محافظت و شناسایی حمله به Active Directory اختصاص داده شده است. برای کسب اطلاعات بیشتر، از کاتالوگ حمله Netwrix دیدن کنید یا از وب سایت ما دیدن کنید تا مجموعه راه حل های ما را بررسی کنید.