احمد جهلولی
متخصص سرویس های مایکروسافت

آموزش راه اندازی RODC در محیط DMZ یا Perimeter Network

در این آموزش نحوه Deploy کردن RODC در قسمت Perimeter Network و همچنین باید و نبایدهای که در این سناریو باید رعایت شود و نحوه Join کردن سرور از طریق RODC را یاد خواهیم گرفت.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
  • نکته: مایکروسافت به قسمت DMZ شبکه Perimeter Network می گوید.
قبل از هر چیز بهتر است با توپولوژی DMZ آشنا شوید که برای اینکار لینک زیر را مطالعه کنید:

DMZ (computing)

https://en.wikipedia.org/wiki/DMZ_(computing)
مهندس نصیری قبلا زحمت کشیدن و مقاله بالا را ترجمه کردن که می توانید اینجا آن را بخوانید.در سناریوهای شما مجبور می شود که بعضی از سرورهای که در قسمت Perimeter Network فعالیت می کنند عضو دومین شوند. مانند سناریوی زیر:
Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

قرار دادن یک Write Domain Controller در قسمت Perimeter Network کار خیلی اشتباهی می باشد و یک ریسک امنیتی بزرگی هستش. به نظر شما برای حل مشکل بالا ایا مایکروسافت راه حلی ارائه داده یا نه؟؟؟ جواب مثبت هستش ما می توانیم از Read Only Domain Controller یا به اختصار از RODC استفاده کنیم. در این انجمن تا حدودی مقالاتی درباره این DC نوشته شده است به عنوان مثال:
آموزش نصب و راه اندازی دومین کنترلر فقط خواندنی یا RODC در ویندوز سرور 2012 که توسط خانم رمضانی نوشته شده و همچنین مکانیزم کاری RODC به زبان ساده – قسمت اول که توسط جناب مهندس نصیری نوشته شده است. که درباره نحوه Authenticate کردن کاربران و گرفتن TGT از طریق RODC توضیح داده شده است.
  • نکته: توصیه می کنم RODC را توسط متد Stage Computer Account نصب و راه اندازی کنید:

Install a Windows Server 2012 Active Directory Read-Only Domain Controller (RODC) (Level 200)

https://technet.microsoft.com/en-us/windows-server-docs/identity/ad-ds/deploy/rodc/install-a-windows-server-2012-active-directory-read-only-domain-controller--rodc---level-200-
و همچنین در مقاله مهندس نصیری بعضی از عملکردهای مهم RODC توضیح داده نشده است در بعضی از عملکرد ها RODC با یک Write Domain Controller متفاوت می باشد. مانند:

  1. Inbound Replication
  2. DNS updates for clients that are located in an RODC site
  3. Password changes on an RODC
  4. How the cross-domain authentication process works with RODCs
  5. How the Windows Time service works on an RODC
  6. Computer account authentication using an RODC

توصیه می کنم حتما حتما لیک زیر را مطالعه کنید. تا درک مناسبی از این نوع Domain Controller نداشته باشید در ساده ترین سناریوها با پیاده سازی این سرویس با مشکل رو به رو خواهید شد.

Appendix A: RODC Technical Reference Topics

https://technet.microsoft.com/fr-fr/library/cc754218(v=ws.10).aspx
همچنین در RODC در بعضی شرایط بعضی از عملکردها محدود یا Fail شوند مانند:

  1. Domain join using RODC in the perimeter network fails
  2. Password changes fail in the perimeter network when only an RODC is available.
  3. Spooler does not reflect the correct printer publish state
  4. Unsecure domain joins fails
And etc...

توصیه می کنم لینک زیر را هم مطالعه کنید:

Known Issues for Deploying RODCs

https://technet.microsoft.com/en-us/library/cc725669(v=ws.10).aspx
وقتی شما یک RODC را در قسمت Perimeter Network قرار میدهید باید به فکر پورتهای که این DC برای ارتباط با Write Domain Controller نیاز دارد باشید.شما به دور روش می توانید این مشکل را هندل کنید:
  1. پورت های مورد نیاز را بر روی Back-End Firewall برای این دو نود باز کنید.
  2. یا برای ارتباط این دو از پروتکل امنیتی IPsec استفاده کنید. (به عبارتی دیگر کل ارتباطات این دو DC را در ترافیک IPsec کپسوله می کنیم)
پورتهای پیش نیاز و کپسوله کردن ارتباطات این دو DC بوسیله IPsec را در لینک زیر مطالعه کنید:

Active Directory Replication over Firewalls

https://msdn.microsoft.com/en-us/library/bb727063.aspx
همانطور که در لینکهای بالا خواندید وقتی سروری که در قسمت Perimeter Network قرار دارد و preferred dns server آن بر روی RODC ست کرده باشد در پروسه Join شدن به دومین از طریق RODC نمی تواند A Record خود را بصورت اتوماتیک در DNS Server ثبت کند (چون RODC یک نسخه بصورت Read-Only از Active Directory–integrated DNS دارد و RODC رکورد SOA مربوط به Write Domain Controller را برای سرور بر می گرداند و چون فقط RODC با Write Domain Controller ارتباط دارد سرور موجود در DMZ نمی تواند بصورت اتوماتیک A Record خود را ثبت کند).برای حل کردن این مشکل سه راهکار وجود دارد:
  1. ثبت کردن A Record سرور بصورت دستی درDNSهای Write Domain Controllers
  2. نصب کردن یک DHCP در Perimeter Network که این DHCP مسئول DNS Registration می باشد.
  3. آزاد کردن ترافیک DNS dynamic updates بر روی فایروال. با اینکار سرورهای موجود در Perimeter Network مستقیما به Write Domain Controller وصل و A Record خود را ثبت می کنند.
برای ثبت کردن A Record های سرورها با استفاده از DHCP Server لینک های زیر را مطالعه کنید:
یکی از مهمترین تنظیماتی که در چنین سناریوهای باید انجام شود تنظیم کردن active directory sites and services می باشد.یک سوال: وقتی که چنیدن سایت داشته باشیم و در هر کدام از این سایتها چندین DC وجود داشته باشد چرا و به چه دلیل باید در کنسول active directory sites and services تنظیمات Subnet, Site Link and Sites و همچنین انتقال DC ها در سایتهای مربوط را انجام دهیم؟ با این کارمون چه تعقیری و عملکردی در ساختار ایجاد میشه؟؟؟؟؟؟
تنظیمات بالا را به دو منظور انجام می دهیم:

  1. To facilitate service localization
  2. To manage DC replication traffic

در قسمت manage DC replication traffic دومین کنترولرها از تنظیمات موجود در AD Site and Services استفاده می کنند تا Replication بین خود را مدیریت و بهینه سازی کنند. در مورد facilitate service localization باید عرض کنم وقتی شما چندین سایت داشته باشید و در هر سایت چنیدن DC وجود دارد برای کنترول Log on و Authentication کردن کلاینتها از تنظیمات AD Site and Services استفاده می کنیم. کلاینت برای اینکه بتواند درخواست Log on کردن خود را به DC ی که در سایت خود وجود دارد ارسال کند از پروسه DC Locator استفاده می کند. اجازه بدید بیشتر روی پروسه DC Locator زوم کنیم. یک کلاینت برای اینکه DC مورد نظر خود را در سایت مربوطه پیدا کند از مراحل زیر استفاده می کند:
  1. کلاینت کانتینر LDAP.TCP.dc._msdcs.domainname در DNS را برای پیدا کردن DC جستجو می کند.
  2. DNS لیست DC های ساختار را برای کلاینت ارسال می کند.
  3. کلاینت یک درخواست LDAP ping به DC مورد نظر ارسال می کند و از او می خواهد Site ی که مطابق IPکلاینت باشد را برای او ارسال کند.
  4. DC سایتی که مطابق Netmask کلاینت باشد یا سایتی که DC در حال حاضر در آن فعالیت می کند را ارسال می کند.
  5. کلاینت تصمیم می گیرد از سایت DC که در آن فعالیت می کند استفاده کند یا دنبال یک سایت نزدیکتر باشد؟؟؟ کلاینت بشرطی از سایت DCاستفاده می کند که مطابق Netmask کلاینت باشد یا از DSClosestFlag استفاده کند. اگر DSClosestFlag جوری تنظیم شده باشد که Site فعلی یک سایت نزدیک نیست از کانتینر LDAP.TCP.sitename._sites.domainname در DNS استفاده می کند و به دنبال سایتهای دیگر می گردد و از هر DC سوالات بالا را می پرسد تا به DC ی برسد که مطابق Netmask آن باشد.
Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

نکته خیلی مهم: وقتی شما یک RODC نصب می کنید این DC رکورد های مهم و لازم در پروسه DC Locator را ایجاد نمی کند. (اینو داشته باشید تا بعدا بگم چکار کنید تا این مشکلوحل کنید)
یه سوال دیگه: وقتی کلاینتی بوسیله پروسه DC Locator به سایتی هدایت شود که DCی در آن وجود نداشته باشد عکس العمل آن چیست؟
آن کلاینت از Automatic Site Coverage استفاده می کند.
برای اطلاع بیشتر درباره AD Site and Services و همچنین DC Locator لینک زیر را بخوانید:

AD Site Design and Auto Site Link Bridging, or Bridge All Site Links (BASL)

http://blogs.msmvps.com/acefekay/2013/02/24/ad-site-design-and-auto-site-link-bridging-or-bridge-all-site-links-basl/
پس دوستان تنظیمات AD Site and Services را در چنین سناریوها از واجباته که قبل از نصب RODC باید انجام بشه.
Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

من فرض را بر این میگریم که شما RODC را در Perimeter Network نصب کردید و ترافیک آن و Write Domain Controller را در Back-End Firewall باز کردید. الان باید کاری کنیم که سرورهای مجود در Perimeter Network در پروسه DC Locator دی سی مربوط به سایت خود را انتخاب و درخواست های Log on خود را به RODC ارسال کنند. قبل از هر چیز باید کاری کنیم RODC رکورد های لازم خود را در DNS ثبت کند تا در پروسه DC Locator سرورها RODC را پیدا کنند. قبلا گفتیم که RODC چنین مجوزی ندارد. برای حل این مشکل باید به RODC این Permission را بر روی DNS بدهیم. برای اینکار :
Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

Computer Account سرور RODC را لیست می کنیم و مجوز Full به آن می دهیم. همین کار را برای کانتینر های زیر انجام دهید:
Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

نکته: بدیهی: تنظیمات بالا را بر روی DNSی که بر روی Write domain Controller قرار دارد انجام دهید. مرحله بعدی تعقیر رجیستری زیر بر روی سرور RODC:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters
Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

پیش فرض مقدار بالا 1 می باشد. مقدار آن را 0 کنید و OK کنید. بعد از آن سرور RODC را ریستارت کنید.

If you set this value to 0 (FALSE), the RODC tries to register all DNS records.

برای اطلاع بیشتر درباره روش بالا لینک زیر را بخوانید:

Authentication fails when an external client tries to log on to a Windows Server 2008 server by using a read-only domain controller in a perimeter network

https://support.microsoft.com/en-us/kb/977510
مرحله بعدی باید سرورها را از طریق RODC جوین دومین کنیم.
  • نکته: RODC یک نسخه فقط خواندنی می باشد و نمی توان بوسیله آن کامپیوتری را جوین کرد. برای اینکار ما مجبور هستیم از قابلیت domain offline join استفاده کنیم.
پس دستور زیر را بر روی Write Domain Controller اجرا می کنیم:
djoin /provision /domain  /machine  /savefile blob.txt
Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

قدم بعدی Computer Account ایجاد شده بوسیله دستور فوق را در گروه Allowed RODC Password Replication Group عضو می کنیم.
Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

  • نکته: با اجرای دستور فوق یک فایل به نام blod.txt ایجاد میشود. این فایل را به سروری که قراره از طریق RODC جوین دومین بشه منتقل کنید.
الان توسط دستور زیر Computer Account فوق را به RODC ریپلیکت می کنیم.
repadmin /rodcpwdrepl RODC_Server Write_Domain_Controller CN=comp1,CN=Computers,DC=Forest_Name,DC=com
Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

الان به سروری که قراره از طریق RODC جوین دومین بشه لاگین می کنیم و دستور زیر را اجرا می کنیم:
Djoin /requestODJ /loadfile c:\blob.txt  /windowspath %systemroot% /localos
Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

بعد از اجرای دستور فوق باید سرور را Re-boot کنید. بعد از Re-boot باید بتوانید به دومین لاگین کنید.
  • نکته: Userی که کاربر توسط آن بر روی این سرور لاگین می کند را عضو گروه Allowed RODC Password Replication Group کنید. (در مواقعی که Write Domain Controller در دسترس نباشد بتوان به این سرور لاگین کرد)
خب الان اگر بخواهم مطمئن شوم با کدوم DC لاگین کردم از دستور زیر استفاده می کنم:
nltest /dsgetdc:
Deploy کردن Read Only Domain Controller در قسمت Perimeter Network  شبکه

در پروژه ای که با یکی از دوستان رفته بودم (به عنوان یک تماشاچی) جزئی از پروژه آنها جوین کردن سرورها در Perimeter Network از طریق RODC بود که برای عملی کردن سناریو فوق یک هفته من و بچه ها وقت گذاشتیم. که من کل تجربمون را در یک محیط لابراتورار شبیه سازی و در خدمت شما گذاشتم. امیدوارم به درد یکی بخوره :)دوستان اگر سوال یا ابهامی در مورد سناریو بالا داشتید همینجا مطرح کنید.

منبع:

Deploying RODCs in the Perimeter Network

https://technet.microsoft.com/en-us/library/dd728035(v=ws.10).aspx#add_servers_tothe_perimeter_network_site

نویسنده: احمد جهلولی

#rodc_در_قسمت_perimeter_network #قرار_دادن_rodc_در_dmz #افلاین_دومین_جوین #طراحی_rodc_در_dmz #لاگین_کردن_به_rodc #قابلیت_offline_domain_join #نصب_rodc #rodc_چیست #جوین_کردن_کلاینتها_از_طریق_rodc #استفاده_از_rodc_در_dmz

احمد جهلولی
احمد جهلولی

متخصص سرویس های مایکروسافت

سایت شخصی من: https://msdeeplearn.net

نظرات