از LDAP استفاده کنیم یا LDAPS؟
از LDAP استفاده کنیم یا LDAPS؟
برای جواب این سوال، اول بهتره بدونیم اصلاً LDAP چیه؟
در اصل، LDAP مخفف Lightweight Directory Access Protocol هست؛ یعنی یه پروتکل استاندارد برای دسترسی به اطلاعات داخل سرویسهای دایرکتوری مثل Active Directory.
در سازمانها، وقتی یک کاربر وارد نرمافزاری میشود، یا میخواهد بررسی کند که چه کسی در چه گروهی است، یا وقتی Outlook میخواهد اطلاعات کاربران را از AD بخواند، معمولاً از LDAP استفاده میشود.
ساختار LDAP شبیه یک درخت، سلسله مراتبیه (hierarchical). اطلاعات مثل یوزرها، گروهها، OUها و … بهصورت آبجکتهایی ذخیره میشن که هرکدوم یه آدرس منحصربهفرد دارن. مثلاً:
cn=Mohammad,ou=Users,dc=theways,dc=local
یعنی یوزری به اسم mohammad توی OU ای به نام Users و داخل دومین theways.local قرار داره.
اما یه نکتهی خیلی مهم:
ارتباط LDAP بهصورت پیشفرض رمزنگاری نشده است؛ یعنی اطلاعات مثل یوزرنیم و پسورد ممکنه بهصورت clear-text، (متن ساده) توی شبکه جابهجا بشن.
و این یعنی در معرض انواع حملات مثل:
- Sniffing
- Credential Theft
- Replay Attack
- Man-in-the-Middle (MiTM)
✅ بنابراین بهتر است از نسخه امنتر یعنی LDAPS استفاده کنیم.
LDAPS چیست؟ :
در اصل، LDAPS همون LDAP با رمزنگاری SSL/TLS هست. وقتی از LDAPS استفاده میکنیم:
- اطلاعات بین کلاینت و دایرکتوری بهصورت رمزنگاریشده منتقل میشن
- دیگه یوزرنیم و پسورد بهصورت واضح توی شبکه نمیچرخن
- امنیت ارتباط بهمراتب بالاتر میره
- پروتکل LDAP از پورت ۳۸۹ استفاده میکنه، ولی LDAPS از پورت ۶۳۶
به صورت پیشفرض در Active Directory، ارتباطات از طریق LDAP (بدون رمزنگاری) انجام میشن.برای همین، فعالسازی LDAPS فقط یه انتخاب امنیتی نیست؛ بلکه یه ضرورت واقعی برای محافظت از اطلاعات حساس توی شبکهست.
قبل از فعالسازی LDAPS، بهتره موارد زیر رو بررسی کنیم:
- نرمافزارهایی که به LDAP وابسته هستند را شناسایی میکنیم.مثلاً:
- سامانه حضور و غیاب
- فایروالها یا VPNها
- برنامههای مانیتورینگ
- پورتالهای سازمانی یا اینترنال
- Outlook، Exchange، Skype for Business و …آیا از LDAP (پورت ۳۸۹) استفاده میکنن یا LDAPS (پورت ۶۳۶)؟
- آیا نرمافزارها از LDAPS پشتیبانی میکنن؟
بعضی نرمافزارهای قدیمی فقط با LDAP ساده کار میکنن و ممکنه پشتیبانی از SSL/TLS نداشته باشن.
- بررسی اعتماد به CA داخلی (در صورت استفاده):
اگر سرتیفیکیت از CA داخلی تهیه شده، باید کلاینتها و سرورها به این CA اعتماد داشته باشن.
بررسی شود که CA در بخش Trusted Root Certification Authorities نصب شده باشه.
نکته: با فعال سازی LDAPS، ارتباطات از طریق LDAP (پورت ۳۸۹) همچنان فعال باقی میماند، مگر اینکه به صورت دستی غیرفعال شوند. LDAPS (پورت ۶۳۶) نیز به صورت موازی فعال خواهد بود.
فعال سازی LDAPS:
🔵 ۱: نصب گواهی دیجیتال (Certificate) معتبر روی Domain Controller:
گواهی میتونه از یک CA داخلی مثل (Microsoft CA) یا از CAهای معتبر خارجی صادر بشه. این گواهی باید دارای قابلیت Server Authentication باشه تا ارتباطات SSL/TLS با دامین کنترلر به درستی برقرار بشه.
🔹 اگر از CA داخلی استفاده میکنید:
-با زدن دستور mmc از منوی Run، کنسول Microsoft Management Console را باز میکنیم.
-از منوی File گزینهی Add/Remove Snap-in را انتخاب می کنیم:

در لیست باز شده، گزینهی Certificates را انتخاب کرده و اضافه میکنیم:

-و در مرحلهی بعد، گزینههای Computer Account و سپس Local Computer را انتخاب میکنیم:

-به مسیر زیر رفته:
Certificates (Local Computer) > Personal > Certificates
و با راست کلیک روی پوشهی Certificates ، از بخش All Task، روی گزینه ی Request New Certificate کلیک میکنیم.

-در پنجره ی باز شده بعد از انتخاب Active Directory Enrollment Policy، در مرحله ی بعد، از قالبهای گواهی (Template)، Domain Controller یا Domain Controller Authentication را انتخاب میکنیم و روی دکمه ی Enroll کلیک میکنیم.

-بعد از صدور سرتیفیکیت، با کلیک روی سرتیفیکیت ایجاد شده، مطمئن میشویم نام Common Name (CN) با نام FQDN دامین کنترلر همخوانی دارد:

🔸 نکته: اگر Enterprise CA نصب شده باشه و Auto-Enrollment فعال باشه، معمولاً بهصورت خودکار گواهی ای برای DC صادر میشه.
اگر این گواهی:
- تاریخ انقضای معتبر دارد
- و شامل قابلیت Server Authentication باشد
همان گواهی برای فعالسازی LDAPS کافی است و نیازی به صدور مجدد نیست.
روش پیاده سازی CA مایکروسافتی را می توانید در مقاله مطالعه کنید.
🔵 ۲: باز کردن پورت ۶۳۶ برای LDAPS در فایروال:
پروتکل LDAPS برای ارتباطات امن، از پورت TCP/636 استفاده میکند. بنابراین، لازم است این پورت در بخش Inbound فایروال دامین کنترلر باز باشد.
-برای باز کردن این پورت در فایروال ویندوز:
کنسول Windows Defender Firewall with Advanced Security را باز کرده. برای اینکار میتوان در پنجره ی run، عبارت wf.msc را تایپ کرد.
در کنسول باز شده، روی Inbound Rules در منوی سمت چپ کلیک کرده و در منوی سمت را راست رو گزینه ی New Rule کلیک میکنیم.
در پنجرهی باز شده، گزینهی Port را انتخاب میکنیم و روی Next کلیک میکنیم.

-در این مرحله، گزینهی TCP را انتخاب کرده و در بخش Specific local ports، پورت ۶۳۶ را می نویسم:

-در مرحله بعد اکشن را روی حالت Allow The Connection قرار میدهیم:

-در مرحله بعد پروفایل مورد نظر را انتخاب میکنیم (حتما Domain باید انتخاب شود):

نکته: اگر فایروال سختافزاری یا نرمافزاری بینراهی مثل Firewall Appliance یا UTM دارید، مطمئن شوید که ترافیک ورودی روی پورت ۶۳۶ به دامین کنترلر مسدود نشده باشد.
🔵 ۳: ریستارت سرویس یا سرور:
برای بارگذاری گواهی جدید، با در نظر گرفتن تمام جوانب، سرویس Active Directory Domain Services رو ریستارت میکنیم و اگر سرویس ریستارت نشد یا مشکلی پیش اومد، میتوان (بازهم با در نظر گرفتن تمام جوانب)، سرور DC رو ریستارت کنیم.
و کار آماده سازی، در این مرحله تمام میشود
تست اتصال LDAPS:
برای تست برقرار بودن LDAPS می توان:
- ابزار Ldp.exe رو از منوی run اجرا کرده و از منوی Connection بر روی گزینه ی Connect کلیک کرده وآدرس FQDN دامین کنترلر و پورت ۶۳۶ را وارد میکنیم. اگر اتصال موفق بود و بدون ارور، یعنی LDAPS به درستی فعال شده.
استفاده از دستورات پاورشل:
Test-NetConnection -ComputerName your-dc-name.yourdomain.com -Port 636 ⚫
در این دستور به your-dc-name.domain.com ، آدرس FQDN دومین کنترلر رو وارد میکنیم. که در صورت صحت ارتباط خروجی زیر نمایش داده می شود:
ComputerName : your-dc-name.domain.com
RemoteAddress : [آیپی دامین کنترلر]
RemotePort : 636
InterfaceAlias : [مثلاً Ethernet0]
SourceAddress : [آیپی کلاینت]
TcpTestSucceeded : True
و یا دستور زیر:
nltest /dsgetdc: yourdomain.local /ldaps ⚫
که در صورت موفقیت خروجی ای شبیه متن زیر، نمایش داده خواهد شد:
DC: \\D-C-1.yourdomain.local
Address: 192.168.1.10
Dom Guid: f2e0e244-6cc4-489a-a9d7-xxxxxxxxxxxx
Dom Name: yourdomain.local
Forest Name: yourdomain.local
Dc Site Name: Default-First-Site-Name
Our Site Name: Default-First-Site-Name
Flags: PDC GC DS LDAP KDC TIMESERV WRITABLE DNS_DC DNS_DOMAIN DNS_FOREST CLOSE_SITE FULL_SECRET WS
The command completed successfully
نکته پایانی و مهم:
با انجام این فرآیند، امکان استفاده از LDAPS در شبکه فراهم میشود.
اما باید توجه داشت که این اقدام به معنای حذف ارتباطات از طریق LDAP (پورت ۳۸۹) نیست.
برای اجباری کردن استفاده از LDAPS و جلوگیری از ارتباطات ناامن با LDAP، اقدامات زیر باید انجام شود:
- اطمینان حاصل کنید که همه سامانههایی که تاکنون از LDAP استفاده میکردهاند، از LDAPS نیز پشتیبانی میکنند.
- در Group Policy، پالیسی زیر را روی Domain Controller فعال کنید:
Domain controller: LDAP server signing requirements = Require signing
- در صورت نیاز، پورت ۳۸۹ مربوط به LDAP را در فایروال دامین کنترلر ببندید تا فقط اتصال از طریق LDAPS (پورت ۶۳۶) مجاز باشد.
این کار فقط وقتی مجازه که اطمینان ۱۰۰٪ دارید هیچ نرمافزاری از LDAP استفاده نمیکنه