فاطمه قرباوی
کارشناس شبکه و مجازی سازی

معرفی انواع Trust (تراست) در اکتیودایرکتوری به زبان بسیار ساده

یکی از مسائل مهمی که در هر سازمانی یا شرکتی باید در نظر گرفته شود ، نحوه ی محافظت از منابع اطلاعاتی است و یکی از مواردی که هر ادمین شبکه ای با آن مواجه می شود ، تلاش بر این است که منابع آن سازمان یا شرکت برای افراد غیر مجاز،قابل دسترس نباشد.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

خوب این یک روی سکه است، روی مخالف سکه که به اندازه روی قبلی آن اهمیت دارد این است که افراد مجاز به راحتی بتوانند به منابع شبکه آن سازمان یا شرکت دسترسی پیدا کنند. در سازمانها یا شرکتهای کوچک این مسئله و نگرانی اصلا وجود ندارد چون در سازمانهای کوچک چندین دومین به ندرت در کنار هم قرار گرفته اند.خوب با در نظر گرفتن مسئله امنیت در همچنین مواقع ، ادمین ها نیازمند ابزاری برای مدیریت این دسترسی ها در Forest ها ،یا در میان چندین دومین می باشند.

امکانی که وظیفه ی فوق را به خوبی انجام می دهد و از پس آن نیز بر می آید Active Directory Domains and Trusts می باشد.با استفاده از این امکان مدیران شبکه می توانند بین دومین های متفاوت ارتباط برقرار کنند که این ارتباط به کاربران یک دومین ( مثلا دومین A )اجازه استفاده از منابع دومین دیگری ( مثلا دومین B ) را ، بدون آنکه آن کاربر به عضویت آن دومین ( دومین B ) در بیاد استفاده کند .خوب با استفاده از این امکان ،ادمینهای شبکه می توانند این اطمینان خاطر را داشته باشند که کاربران در دومین های مختلف بدون اینکه در آن دومینها دارای اکانتی باشند،از منابع آنها استفاده کنند.در این میان و برای شروع ، این دو واژه را به خاطر داشته باشید :

  • Trust یعنی مسیرمنطقی احراز هویتی که بین دو دومین وجود دارد. ( به کلام دیگر اعتماد بین دومین ها برای برقراری ارتباط)
  • Trust Path تعداد Trust هایی می باشد که باید بین منابع مقصد و مبدا متقاضی طی شود.( به کلام دیگر مسیر اعتماد بین دومین ها )

خوب همانطور که از نام آن بر می آید، Trust در اینجا در بردارند ه ی مفهوم ایجاد اعتماد برای اشتراک گذاری اطلاعات می باشد. پس از نظر امنیتی،شما باید قبل از ایجاد Trust ، بررسی های لازمه را انجام دهید و به خوبی بدانید که کدام نوع Trust را می خواهید پیاده سازی کنید.در ادامه خواهید دید که Trust انواع مختلفی دارد که ادمینهای شبکه متناسب با نوع نیاز و دسترسی هایی که لازم است داشته باشند اقدام به پیاده سازی Trust می کنند.

همواره مراقب باشید که در صورت اعمال تنظیمات نادرست،کاربران خارجی غیرمجاز به اطلاعات و منابع داخلی شما دسترسی پیدا خواهند کرد.Trustمانند یک خیابان است که مستقیما شما را به منابع داخلی Forest هدایت می کند.این درست مانند زمانی است که شما کلید خانه خودتان را به شخصی بدهید و امیدوارید که آن شخص اعتماد شما را سلب نکند. همه دومین کنترلرها فرآیند احراز هویت را انجام میدهند اما همه ی آنها لزوما به یکدیگر اعتماد یا Trust ندارند ! اینجا جایی است که شما وارد عمل می شوید و روابط میان دومین کنترلر ها را تعریف و مشخص می کنید.

اصلی ترین ویژگی های ساختار Trust

Trust ها بصورت کلی دو ویژگی اصلی دارند که به ترتیب جهت اعتماد یا Trust Direction است و دیگری انتقال پذیری اعتماد یاTrust Transitivity است.

  • Direction یا جهت : یک Trust، از سمت دومینی که اعتماد می کند به سمت دومینی که به آن اعتماد شده است برقرار می شود . Direction در واقع بیانگر جهت اعتماد است. دومین Abadan به دومین Ahwaz اطمینان دارد.خوب جهت دسترسی ( Access ) همیشه در خلاف Direction است، یعنی دومین Ahwaz به منابع دومین Abadan دسترسی دارد که البته این منطقی است ( چون شما به شخص مهندس قرباوی اعتماد دارید کلید خانه خودتان را به آن می دهید ، پس این شخص مهندس قرباوی است که به وسایل خانه شما دسترسی دارد :D ) . فراموش نکنید که این شکل نمونه ای از یک Trust یک طرفه است. همینطور دومین Ahwaz به دومین Tehran اعتماد دارد اما Abadan به Tehran اعتماد ندارد. می توان Trust را هم با Directionو جهت یک طرفه ( One-way ) ایجاد کنید و هم با Direction و جهت دو طرفه ( bidirectional ). در One-way Trust یا اعتماد یک طرفه شما می توانید در دسترسی منابع یکی از طرفین Trust به دیگری محدودیتهایی ایجاد کنید. همینطور در صورت تمایل می توانید از دو Trust یک طرفه ، برای بهره گیری از یک Trust دوطرفه استفاده کنید. ( اصلا تابلو نبود که نویسنده آبادانی هست D: )
  • Transitivity یا انتقال پذیری : ویژگی مهم بعدی Transitivity است.Transitive Trust با مثالی به شما دوستان معرفی می کنم:فرض کنید دو Treeکه Parentهای آنها به نامهای Domain A وDomain B داریم که هر کدام از اینها دارای زیرمجموعه ای از دومینها می باشند.حال می خواهیم بین این دو Tree رابطه Transitive Trust برقرار کنید.با تعریف Transitive Trust بین Domain A و Domain B علاوه بر اینکه این دو دومین به یکدیگر Trust می کنند،بین کلیه دومین های زیرمجموعه Domain A و Domain B نیز رابطه Transitive Trust ایجاد می شود و همینطور بین کلیه دومینهای زیرمجموعه Domain B و Domain A . به عبارت دیگر زمانیکه شما بین دو دومین رابطه Transitive Trust ایجاد میکنید،کلیه دومین هایی که به دومین اعتماد کننده نیز اعتماد دارند،به منابع دومینی که به آن اعتماد شده است دسترسی پیدا خواهند کرد(یعنی داشتن یک اعتماد متقابل).در واقع Transitive Trust شاه کلید دسترسی هاست .زمانیکه Domain A به Domain Bاعتماد می کند، به تمامی Child Domain های Domain Bنیزاعتماد کرده است . خوب حال اگر به هر دلیلی Domain A نخواهد به یکی از Child Domain های Domain B اعتماد کند،می تواند با اعمال محدودیتها یا بلاک کردن دسترسی هایی مانع از دسترسی آن Child Domain به منابع Domain A شود. اگر بخواهیم همین مورد را با استفاده از مثال بالا انجام دهیم فرض کنید من کلید خانه را به (مثلا ) استیوجابز مرحوم داده ام و به وی اعتماد دارم ، حال استیوجابز کلید را به شخص دیگری که به وی اعتماد دارد می دهد تا بتواند وارد خانه ما شود ، به دلیل اینکه من به استیوجابز اعتماد دارم به دوست وی نیز اعتماد دارم به این روش اعتماد Transitive Trust می گویند. اما در non-transitive Trust بدین صورت نیست و تنها دومین اعتماد کننده به منابع دومین اعتماد شونده دسترسی دارد.

نکته: به خاطر داشته باشید که به صورت پیشفرض در ویندوز سرور 2008،رابطه های Trust به صورت دوستانه هستند. به صورت پیشفرض دو Trust متداول در اکتیودایرکتوری ،یعنی Trust های Parent and Child و Tree-root به صورت دو طرفه و transitive می باشند.این بدان معنی است که Trust Path در سرتاسر Forest گسترش پیدا کرده است. همینطور به محض ایجاد اکتیودایرکتوری ، این دو Trust ایجاد می شوند.

برای درک بهتر مفهوم Trust های دو طرفه و Transitive ، بزرگی از این جمله استفاده می کند که "هر کدام از دوستان تو،دوست من نیز هستند". با توجه به مفهوم Trust ها دوطرفه و Transitive که در بالا توضیح دادیم، این یعنی زمانیکه Parent دو مجموعه دومین به یکدیگر اعتماد ( Transitive and bidirectional Trust ) داشته باشند و دوست باشند، کلیه زیر مجموعه های آنان نیز به یکدیگر Trust داشته یا دوست هستند. در ویندوز سرور 2008 انواع دیگری از Trust وجود دارد که در ادامه به معرفی و توضیح هر کدام خواهم پرداخت .

اما چیزی که در این میان حائز اهمیت است،این است که قبل از تعریف و ایجاد Trust ،شمایی از Forest و دومین ها و دومین کنترلرهای داخل آن را بر روی کاغذی برای خود رسم کنید و سپس مشخص کنید که می خواهید بین هر ِDomain یا Forest چه روابطی وجود داشته باشد و کدام دومینها و کاربران هستند که باید به منابع کدام دومینها یا ّForset های دیگر دسترسی داشته باشند.سپس متناسب با این روابط و دسترسی ها ،اقدام به تعریف و ایجاد Trust با انواع متناسب با آن دسترسی ها کنید. زمانیکه متناسب با نیازتان ،اقدام به تعریف هر کدام از انواع Trust کردید، از لحاظ امنیتی برای شما بهتر است که پسوردهایی که تعریف میکنید طولانی،تصادفی و پسوردهای پیچیده ( Complex ) ای باشند.بهترین راه این است که از آپشن New Trust Wizard استفاده کنید تا در هر دو طرف Trust ،پسوردهای قوی برای شما تعریف کند.

مفاهیم Implicit و Explicit در Trust ها

دو option دیگری که در رابطه با Trust ها باید با آنها آشنایی داشته باشید،مفاهیم Implicit و Explicitهستند.Implicit Trust، تراست هایی هستند که به صورت اتوماتیک و پیش فرض بین دومینها در Forest ایجاد می شود .به عنوان مثال Implicit Trust بین هر دومین Parent و Child اش و همچنین Root Domain های هر فارست وجود دارد. اما Explicit Trust، تراستی است که توسط Administrator ایجاد می شود.این Trust به صورت اتوماتیک وجود ندارد اما باید با صراحت ایجاد شود.

به عنوان مثال Administrator یک Explicit Trustبین Child Domain های Domain Treeها ، برای ایجاد روابط مستقیم و احراز هویت های سریعتر ، به صراحت ایجاد می کند. درواقع این نوع Trust ،Trust ای است که باید تعریف و ایجاد شود تا بتوان از قابلیتهایی که در مفهوم Trust در اختیارمان قرار می دهد استفاده کنیم .این Trust در نقطه مقابل Trust هایی که به صورت اتوماتیک و پیشفرض ایجاد و تعریف شده اند قرار می گیرد. به شکل زیر دقت کنید:

وب سایت توسینسو

با توجه به اینکه بین ریشه های دو فارست 2و3 ،رابطه Trust دوطرفه وجود دارد ، پس بین کلیه Domain های موجود در این Forest ها ، Trust برقرار خواهد شد پس Implicit Trust نیز با ایجاد Transitive Two-Way Trust نیز ایجاد می شود.اما چون بین دوForest شماره 1و3 هیچ رابطه ی Trust ای ایجاد نشده است ، پس Implicit Trust ی نیز وجود نخواهد داشت.

تا اینجای مقاله باید متوجه شده باشید که یکی از مزایای اصلی روابط Trust در اکتیودایرکتوری این است که ادمینهای شبکه دیگر نیازی به ایجاد Multiple User Accounts ها که به منابع همه دومینها دسترسی داشته باشند ، نخواهند داشت.حال ادمینهای شبکه تنها باید برای خود یک لیست کنترل دسترسی ( ACL ) برای کنترل دسترسی ها ی User های دومینهای دیگر به منابع خودشان ایجاد کنند.برای بهره بردن از همه ی مزایای Trust ها ،ادمینهای شبکه باید با انواع تراستهایی که وجود دارد آشنا باشند و به خوبی بدانند که در چه زمانی باید از کدام تراست استفاده کرد. از اینرو در ادامه به معرفی انواع تراست ها خواهم پرداخت.

انواع Trust

به صورت کلی 5 نوع Trust وجود دارد:

  1. Default Trusts یا اعتمادهای پیشفرض
  2. Forest Trusts یا اعتمادهای در سطح Forest
  3. Shortcut Trusts یا اعتمادهای میانبر
  4. Realm Trusts یا اعتمادهای قلمرویی
  5. External Trusts یا اعتماد های خارجی

Default Trusts یا اعتمادهای پیشفرض

زمانیکه شما ویزارد نصب اکتیودایرکتوری را برای ایجاد یک دومین جدید در فارستی که از قبل وجود داشته است را اجرا میکنید،به صورت پیشفرض دو تراست ایجاد شده است: اولین آنها تراست Parent و Child است و بعدی Tree-root Trust. مابقی انواع تراستهایی که به خدمتتان عرض کردم را می توانید با استفاده از New Trust Wizard یا دستورات مشابه آن در Command-lineنیز نصب کنید. همانطور که پیش تر از این گفته بودم ، این دو تراست به صورت پیش فرض و از قبل توسط مهندسین و کارشناسان محترم شرکت مایکروسافت تعریف و ایجاد شده است .

یعنی برای شما به عنوان دومین Parent به محض تعریف Child ی برای خودتان ( :D ) بین شما و این Child محبت و تراست Parent-Child به صورت مادرزادی ایجاد میشود.در مورد Tree-root Trust هم که آشکار است،ریشه های هر درخت به شاخه های خود اطمینان دارد ، چون این شاخه ها از ریشه ی درخت است که تغذیه میشوند پس روابط صلح آمیزی در میان آنها برقرار است .همینطور به صورت پیش فرض در ویندوز سرورهای 2000،2003،2008 تراستهای پیش فرض یا Default Trust ها به صورت Transitive و Two-way تعریف شده اند.

با توجه به اینکه تراست Parent and Child نیز یک تراست پیش فرض است پس رابطه تراست Transitive و دوطرفه دارد. این خصوصیت باعث می شود در خواستهای احراز هویتی که در Child Domain ایجاد می شوند ، در دومین Parent مورد تایید قرار گیرند.چون تراستها Transitive هستند، درخواستها به سمت دومین Parent و سپس در راستای دومین ریشه پیش میرود تا به namespace domain برسند و مورد بررسی قرار گیرند.خوب اینگونه روابط باعث می شود که هر کاربری در صورتی که Permission های لازم را داشته باشد ، بتواند به کلیه منابع دومین دسترسی داشته باشد.در Tree-root Trust نیز همین رابطه برقرار است ،یعنی کلیه Childها درخواستهای خود را به دومین ریشه یا Root ارسال می کنند و رفتاری مشابه رفتار تراست های Parent and Child نیز دارد.

Forest Trusts یا اعتمادهای سطح Forest

همانطور که از اسم آن پیداست ،این نوع تراست تنها بین دومینهای ریشه یا Root Domain های بین دو فارست ایجاد می شود. هر دو فارستی که می خواهید بین آنها Forest Trust ایجاد شوند باید دارای یک سیستم عامل ( یا ویندوز سرور 2003 یا 2008 ) باشند.این تراستها می توانند تراستهای یک طرفه یا دو طرفه باشند.همچنین این تراستها به صورت Transitive در نظر گرفته می شوند به این دلیل که Child Domain های درون یک فارست بتوانند برای دسترسی به منابع فارست دیگر ،احراز هویت شوند.

  • نکته : توجه داشته باشید که رابطه Transitivity فقط به Child Domain های درون یک فارست اعمال می شود.این اصل،زمانی که دو فارست به وسیله Forest Trust با یکدیگر ارتباط برقرار کرده اند، وجود دارد. قابلیت Transitivity در فارست سومی وجود نخواهد داشت تا زمانیکه یک Explicit Trust دیگر ایجاد شود.

این نوع تراست به شما در مورد ساختار اکتیودایرکتوری کمک می کند.مدیریت منابع بین دو تراست را با کم کردن تعداد External Trust های لازم، به صورت ساده می توان انجام داد.به جای تعریف کردن Multiple External Trust ، یک Forest Trust دوطرفه بین دو Root Domain ، کنترل کامل به دومینهای مورد نظر را می توان اعمال کرد.

به علاوه ، Administrator میتواند از مزایای پروتکلهای احراز هویت Kerberos و NTLM برای انتقال داده های قابل دسترسی بین دو فارست استفاده کند. در نهایت Forest Trust برای داشتن یک اعتماد یا تراست دو طرفه بین دومینهای دو فارست مجزا ارائه شده است. همچنین شما می توانید Multiple Forest ها را ایجاد کنید تا از این طریق داده ها ی ایمنی در فارست داشته باشید و یا Directory Replication بین هر تراست را نیز ایزوله کنید.

External Trusts یا اعتمادهای خارجی

شما برای اینکه بتوانید با دومینهای خارج از فارستی که در آن قرار دارید رابطه برقرا کنید ، از این نوع تراست استفاده میکنید. این تراستها بنا بر نیاز شما می توانند یک طرفه یا دوطرفه باشند.این نوع تراست همیشه ذاتا ( D: Non-transitive )است،این بدان معنی است که شما یک Explicit Trust بین دو دومین ایجاد می کنید و دومینهایی که خارج از این اطمینان و تراست هستند، مورد تاثیر قرار نمیگیرند.شما می توانید از این تراست در مواقعی استفاده کنید که رابطه تراست بین فارستی که دومین شما و دومین دیگری که می خواهید با آن ارتباط داشته باشید ، تعریف نشده است ( و یا لزومی به تعریف وجود ندارد ).به شکل زیر دقت کنید:

وب سایت توسینسو

بعد از اینکه رابطه تراست بین دومینی در داخل فارست با دومینی در خارج از فارست ایجاد شد،Security Principal ها از دومین خارج از دومین قادر به دسترسی به منابع موجود در دومین داخل فارست می شوند.خوب حالا این Security Principal ها چی هستند ؟! Security Principal ها می توانند Users ، Groups ، Computers یا Services از دومین خارجی باشند. در واقع اونها Account Holder هایی هستند که به هرکدوم به طور اتوماتیک یک SID جهت کنترل دسترسی به منابع دومین اختصاص داده میشود.

اکتیودایرکتوری در دومین داخل فارست، Security Principle های خارجی رو ایجاد خواهند کرد ،این یعنی Security Principleهای خارجی به راحتی قابل شناسایی هستند.شما میتوانید از این Security Principleها در Local Groupهای دومین استفاده کنید،از اینرو اعضای جدید مورد اعتماد از خارج فارست خواهند توانست به منابع داخلی دومین دسترسی پیدا کنند.Security Principle های خارجی در کنسول Active Directory Users and Computers قابل مشاهده هستند.به دلیل اینکه اکتیودایرکتوری آنها را به صورت اتوماتیک ایجاد میکند،شما نباید تغییری در آنها به وجود آورید.

Shortcut Trusts یا اعتمادهای میانبر

Shortcut Trustها در اصل Transitive هستند و میتوانند یک طرفه یا دوطرفه نیز باشند.از این نوع تراست زمانی استفاده می شود که یک کاربر در یک دومین نیاز به دسترسی به منابع دومین دیگری داشته باشد.Shortcut Trust ها بنا بر نیاز و سیاستهای حاکمه میتوانند یک طرفه یا دوطرفه تعریف شوند.با استفاده از این نوع تراست مسیر مربوط به احراز هویت کاربران کوتاه میشود،چرا که دیگر برای دسترسی به منابع دومین دیگری نیازی نیست ابتدا به دومین Parent و یا Root رفته و سپس در دومین مقصد احراز هویت صورت گیرد.

این تراست در سازمانها یا مجموعه هایی که بزرگ هستند و از چندین دومین و Tree تشکیل شده اند بسیار مورد کاربرد و استفاده است.یکی از موارد استفاده از این نوع تراست این است: فرض کنید دو دومین A و B از Subdomain های مختلفی تشکیل شده اند.شما میخواهید بین Edu.A دومین و Info.B دومین رابطه تراست برقرار شود.از اینرو بهترین انتخاب شما Shortcut Trustمیباشد.

SID Filtering یا فیلترکردن شناسه امنیتی

یکی از نگرانیهای امنیتی که در رابطه با تراست میتواند وجود داشته باشد Malicious User ها هستند .این کاربران افرادی هستند که با ایجاد دسترسی هایAdministrator ای در دومین های مورد اعتماد،شروع به Sniff یا به طور عامیانه شنود به اطلاعات رد و بدل شده می کنند.با این دسترسی که این کاربران دارند می توانند برای خود SID مقبول در دومینهای قابل اعتماد ایجاد کنند تا بتوانند دسترسی کامل به منابع آن دومینها داشته باشند.

به این نوع از تهدیدات اصطلاحا Elevation Of Privilege Attack می گویند.خوب مکانیزمی که ویندوز سرور 2003 و 2008 جهت مقابله با این نوع تهدیدات به کار میگیرد SID Filtering است. SID Filtering تایید میکند که آیا درخواستهای احراز هویت رسیده شده از دومینهای مورد اعتماد تنها شامل SIDهای مربوط به آن دومینها میباشند یا خیر؟ این کار با استفاده ازخصوصیت SID History در Security Principle مورد استفاده قرار میگیرد.

همانطور که پیشتر در مورد آن صحبت شد Security Principle شامل Object های درون اکتیودایرکتوری می شود،مثل Users ، Groups و ... . SID Filtering از SID های دومین برای تایید هر Security Principle استفاده میکند. بدین صورت که اگر یک Security Principle دارای یک SID Domain تکراری بود، SID Filtering درخواست آن SID را حذف خواهد کرد. این باعث میشه که Malicious Userها نتوانند جهت دسترسی به منابع دومینهای مورد اعتماد،دسترسی های خود را در دومین افزایش دهند .


فاطمه قرباوی
فاطمه قرباوی

کارشناس شبکه و مجازی سازی

کارشناس شبکه و مدیریت شبکه های مایکروسافتی ، دارای مدارک MCITP ، CCNA و VCP و علاقمند به مجازی سازی و توسعه شبکه های مجازی مبتنی بر VMware می باشم .

نظرات