رفتن به محتوا
ارزیابی رایگان سطح حمله بیرونی سازمان شماثبت درخواست
نت‌گارد — اسکنر آسیب‌پذیری و هاردنینگ

هاردنینگ اکتیو دایرکتوری: چک‌لیست امن‌سازی Active Directory

راهنمای عملی هاردنینگ اکتیو دایرکتوری: مدل لایه‌ای ادمین، گروه‌های ممتاز، LAPS، امن‌سازی Kerberos و NTLM، امضای LDAP، ممیزی و مقاوم‌سازی کنترلر دامنه.

نویسنده: نت‌گاردبه‌روزرسانی: ۹ دقیقه مطالعهRead in English

تصویر جلد راهنمای هاردنینگ اکتیو دایرکتوری شامل مدل لایه‌ای، Kerberos و امنیت کنترلر دامنه

هاردنینگ اکتیو دایرکتوری (Active Directory Hardening) یعنی کوچک کردن سطح حمله‌ی جنگل AD؛ محدود کردن دسترسی‌های ممتاز، کنار گذاشتن پروتکل‌های احراز هویت قدیمی، اصلاح تنظیمات ضعیف Kerberos و اطمینان از اینکه هر تغییر حساس ثبت می‌شود. اکتیو دایرکتوری احراز هویت تقریباً همه‌ی سرورها، کلاینت‌ها و بسیاری از نرم‌افزارهای سازمان را بر عهده دارد؛ بنابراین نفوذ به یک حساب Domain Admin در عمل یعنی از دست رفتن کنترل کل شبکه.

بیشتر نفوذهای واقعی به AD به آسیب‌پذیری روز صفر نیازی ندارند. مهاجم چند ضعف معمولی را کنار هم می‌گذارد: حساب سرویسی با رمز ضعیف و SPN، رمز یکسان ادمین محلی روی صدها سیستم، مدیری که با حساب ممتاز روی یک کلاینت آلوده لاگین کرده، یا NTLM که هنوز همه‌جا پذیرفته می‌شود. در این مقاله کنترل‌هایی را مرور می‌کنیم که این زنجیره را می‌شکنند؛ تقریباً به همان ترتیبی که پیشنهاد می‌کنیم اجرا شوند.

مدل لایه‌ای مدیریت (Tiered Admin Model)

کنترلرهای دامنه هش رمز همه‌ی حساب‌ها را نگه می‌دارند؛ برای همین مقاوم‌سازی تک‌تک سرورها، که در راهنمای هاردنینگ ویندوز سرور توضیح داده‌ایم، به‌تنهایی کافی نیست. مدل لایه‌ای، مدیریت را به چند ناحیه تقسیم می‌کند تا اطلاعات ورود یک ناحیه‌ی حساس هرگز روی سیستمی کم‌اهمیت‌تر در معرض سرقت قرار نگیرد. مایکروسافت این مدل را در قالب Enterprise Access Model گسترش داده، اما برای AD درون‌سازمانی همچنان عملی‌ترین نقطه‌ی شروع است.

لایه شامل چه چیزهایی است چه کسی مدیریت می‌کند
لایه ۰ (Tier 0) کنترلرهای دامنه، PKI و AD CS، ADFS، Entra Connect و سامانه‌های مجازی‌سازی و بکاپی که آن‌ها را کنترل می‌کنند حساب‌های اختصاصی لایه ۰ از ایستگاه کاری امن (PAW)
لایه ۱ (Tier 1) سرورهای عضو، پایگاه‌های داده و نرم‌افزارهای سازمانی حساب‌های جداگانه‌ی ادمین سرور
لایه ۲ (Tier 2) ایستگاه‌های کاری، لپ‌تاپ‌ها و دستگاه‌های کاربران حساب‌های پشتیبانی و Help Desk
نمودار مدل لایه‌ای مدیریت در هاردنینگ اکتیو دایرکتوری از لایه ۰ کنترلرهای دامنه تا لایه ۲ کلاینت‌ها
مدل لایه‌ای مدیریت اکتیو دایرکتوری

برای اجرای واقعی این مدل، هر مدیر برای هر لایه یک حساب جدا داشته باشد. با حقوق کاربری Group Policy مانند «Deny log on locally» و «Deny log on through Remote Desktop Services» جلوی ورود حساب‌های لایه ۰ به سیستم‌های لایه ۱ و ۲ را بگیرید. Authentication Policies و Silos هم می‌توانند همین مرز را در سطح Kerberos اعمال کنند.

کنترل گروه‌های ممتاز و حساب‌های حساس

اولین قدم، فهرست کردن همه‌ی اعضای مستقیم و تودرتوی گروه‌های Domain Admins، Enterprise Admins، Schema Admins، Administrators، گروه‌های Operators داخلی، DnsAdmins و Group Policy Creator Owners است.

  • گروه‌های Enterprise Admins و Schema Admins را خالی نگه دارید و فقط برای یک تغییر برنامه‌ریزی‌شده عضو اضافه کنید.
  • گروه‌های Account Operators، Server Operators، Print Operators و Backup Operators را خالی بگذارید؛ این گروه‌ها به‌طور پیش‌فرض اجازه‌ی ورود به کنترلر دامنه را دارند.
  • روی همه‌ی حساب‌های ادمین گزینه‌ی «Account is sensitive and cannot be delegated» را فعال کنید.
  • کامپیوترهایی غیر از کنترلر دامنه را که Unconstrained Delegation دارند پیدا و اصلاح کنید.
  • مقدار ms-DS-MachineAccountQuota را صفر کنید تا کاربران عادی نتوانند کامپیوتر به دامنه اضافه کنند.
  • ACLهای اشیای حساس را بازبینی کنید؛ ابزارهایی مثل PingCastle و BloodHound مسیرهای حمله‌ی پنهان را نشان می‌دهند.

گروه Protected Users

اعضای گروه Protected Users نمی‌توانند از NTLM استفاده کنند، در پیش‌احراز هویت Kerberos از DES و RC4 استفاده نمی‌کنند، اطلاعات ورودشان قابل Delegation نیست و اعتبارنامه‌ی کش‌شده برای ورود آفلاین ندارند. عمر TGT آن‌ها چهار ساعت و غیرقابل تمدید است. حساب‌های انسانی ادمین را پس از آزمایش به این گروه اضافه کنید، اما هرگز حساب سرویس یا کامپیوتر را عضو آن نکنید.

رمز ادمین محلی یکتا با Windows LAPS

رمز مشترک ادمین محلی به مهاجم اجازه می‌دهد با نفوذ به یک کلاینت، به همه‌ی کلاینت‌ها برسد (Lateral Movement). Windows LAPS که در نسخه‌های فعلی ویندوز و ویندوز سرور تعبیه شده، برای هر سیستم یک رمز یکتا می‌سازد، آن را به‌صورت دوره‌ای عوض می‌کند و در AD (با امکان رمزگذاری) یا Microsoft Entra ID نگه می‌دارد.

# Extend the AD schema for Windows LAPS (once per forest)
Update-LapsADSchema
# Allow computers in an OU to write their own LAPS password
Set-LapsADComputerSelfPermission -Identity "OU=Servers,DC=corp,DC=example"
# Check who can read passwords, then retrieve one as an authorized admin
Find-LapsADExtendedRights -Identity "OU=Servers,DC=corp,DC=example"
Get-LapsADPassword -Identity "SRV-APP01" -AsPlainText

امن‌سازی Kerberos

چرخش رمز حساب krbtgt

حساب krbtgt همه‌ی تیکت‌های Kerberos را امضا می‌کند و اگر هش آن سرقت شود، مهاجم می‌تواند «Golden Ticket» جعل کند. رمز این حساب را دو بار ریست کنید و بین دو ریست منتظر تکمیل Replication و دست‌کم به اندازه‌ی حداکثر عمر تیکت (به‌طور پیش‌فرض ۱۰ ساعت) بمانید. این کار را طبق سیاست امنیتی به‌صورت دوره‌ای و حتماً پس از هر گمان نفوذ به دامنه انجام دهید.

استفاده از AES و کنار گذاشتن RC4

پس از اطمینان از اینکه هیچ سیستم قدیمی به RC4 نیاز ندارد، تنظیم «Network security: Configure encryption types allowed for Kerberos» را روی AES128_HMAC_SHA1، AES256_HMAC_SHA1 و Future encryption types بگذارید. مقدار msDS-SupportedEncryptionTypes حساب‌های سرویس را بررسی کنید و رمز حساب‌های خیلی قدیمی را عوض کنید تا کلید AES برایشان ساخته شود.

مقابله با Kerberoasting و AS-REP Roasting

در حمله‌ی Kerberoasting مهاجم برای حساب‌های کاربری دارای SPN تیکت سرویس می‌گیرد و رمز را آفلاین می‌شکند. AS-REP Roasting همین کار را با حساب‌هایی انجام می‌دهد که پیش‌احراز هویت Kerberos برایشان غیرفعال است.

# User accounts with SPNs (Kerberoasting candidates)
Get-ADUser -Filter 'ServicePrincipalName -like "*"' -Properties ServicePrincipalName, PasswordLastSet |
  Select-Object SamAccountName, PasswordLastSet, ServicePrincipalName
# Accounts without Kerberos pre-authentication (AS-REP roasting)
Get-ADUser -Filter 'DoesNotRequirePreAuth -eq $true' | Select-Object SamAccountName

سرویس‌ها را به group Managed Service Account (gMSA) منتقل کنید که رمزی طولانی و تصادفی دارند و خودکار عوض می‌شوند. اگر ممکن نیست، از رمز تصادفی ۲۵ کاراکتری یا بیشتر استفاده کنید، فقط AES را مجاز کنید، SPN را از حساب‌های ممتاز حذف کنید و پیش‌احراز هویت را برای همه فعال کنید.

محدودسازی NTLM و امن‌سازی LDAP

NTLM راه حملات Relay و Pass-the-Hash را باز می‌کند و LDAP بدون امضا امکان دستکاری ترافیک دایرکتوری را می‌دهد. اول ممیزی، بعد اعمال.

تنظیم Group Policy مقدار پیشنهادی
Network security: LAN Manager authentication level Send NTLMv2 response only. Refuse LM & NTLM
Network security: Do not store LAN Manager hash value on next password change Enabled
Network security: Restrict NTLM: Audit NTLM authentication in this domain Enable all (پیش از مسدودسازی)
Domain controller: LDAP server signing requirements Require signing
Domain controller: LDAP server channel binding token requirements ابتدا When supported، سپس Always
Network security: LDAP client signing requirements Negotiate signing یا بالاتر
Microsoft network server: Digitally sign communications (always) Enabled

پیش از اعمال، با لاگ عملیاتی NTLM و رخدادهای 2887 و 2889 در لاگ Directory Service، کلاینت‌هایی را که هنوز از NTLM یا اتصال LDAP بدون امضا استفاده می‌کنند پیدا کنید.

پاکسازی Group Policy و ممیزی رخدادها

بهداشت GPO

رمزهای ذخیره‌شده در Group Policy Preferences (مشکل قدیمی cpassword) را حذف کنید، GPOهای خالی یا بدون Link را پاک کنید و دسترسی ویرایش GPOهای متصل به OU کنترلرهای دامنه و ریشه‌ی دامنه را محدود کنید. برای هر GPO هدف و مالک مشخص کنید. یک خط مبنای شناخته‌شده مانند CIS Benchmark یا Security Baseline مایکروسافت نقطه‌ی شروع آزموده‌ای است.

ممیزی و پایش

روی کنترلرهای دامنه Advanced Audit Policy را برای Kerberos Authentication Service، Kerberos Service Ticket Operations، Credential Validation، Security Group Management، User Account Management و Directory Service Changes فعال کنید، رخدادها را به SIEM بفرستید و برای این موارد هشدار بسازید:

  • رخدادهای 4728، 4732 و 4756: اضافه شدن عضو به گروه امنیتی، به‌ویژه گروه‌های ممتاز
  • رخداد 4769 با رمزنگاری RC4 (نوع 0x17): نشانه‌ی احتمالی Kerberoasting
  • رخداد 4768 بدون پیش‌احراز هویت و انبوه رخداد 4771: Roasting یا Password Spraying
  • رخداد 5136: تغییر اشیای دایرکتوری، از جمله تغییر GPOها
  • رخداد 4794: تلاش برای تنظیم رمز DSRM؛ رخداد 1102: پاک شدن لاگ ممیزی

چک‌لیست هاردنینگ کنترلر دامنه

  1. کنترلر دامنه را سرور اختصاصی و فقط با نقش‌های AD DS و DNS نگه دارید؛ در صورت امکان از Server Core استفاده کنید.
  2. هایپروایزر، استوریج و سامانه‌ی بکاپی را که میزبان کنترلر دامنه است جزو لایه ۰ بدانید.
  3. سرویس Print Spooler را روی کنترلرهای دامنه غیرفعال کنید.
  4. مرور اینترنت و ترافیک خروجی غیرضروری را از کنترلرهای دامنه مسدود کنید.
  5. وصله‌های امنیتی (Patch) کنترلرها را در اولویت نصب کنید و یک خط مبنای امن روی آن‌ها اعمال کنید.
  6. برای کنترلرهای مجازی و شعب از Secure Boot و BitLocker استفاده کنید و جایی که امنیت فیزیکی ضعیف است RODC بگذارید.
  7. از System State به‌طور منظم بکاپ بگیرید، بازیابی جنگل را تمرین کنید، AD Recycle Bin را فعال کنید و از رمز DSRM محافظت کنید.

برای کنترل‌های عمومی‌تر، راهنمای جامع هاردنینگ سیستم‌ها را ببینید.

نت‌گارد چگونه به امنیت اکتیو دایرکتوری کمک می‌کند

نت‌گارد با اسکن احراز هویت‌شده‌ی کنترلرهای دامنه و سرورهای عضو، وصله‌های نصب‌نشده را پیدا می‌کند و پیکربندی آن‌ها را با CIS Benchmark و خط مبنای اختصاصی سازمان شما مقایسه می‌کند؛ از جمله تنظیماتی مانند LAN Manager authentication level، امضای LDAP و انواع رمزنگاری Kerberos. تشخیص انحراف پیکربندی (Configuration Drift) نشان می‌دهد کدام تغییر GPO یک تنظیم امن را تضعیف کرده، یافته‌ها بر اساس اطلاعات اکسپلویت و اهمیت دارایی اولویت‌بندی می‌شوند و گزارش‌ها به فارسی و انگلیسی ارائه می‌شوند. درباره‌ی ممیزی هاردنینگ بیشتر بخوانید یا با ما تماس بگیرید.

سوالات متداول

مدل لایه‌ای (Tier Model) در اکتیو دایرکتوری چیست؟

مدل لایه‌ای مدیریت را به سه سطح تقسیم می‌کند: لایه ۰ شامل کنترلرهای دامنه و سامانه‌های هویت، لایه ۱ شامل سرورها و نرم‌افزارها، و لایه ۲ شامل دستگاه‌های کاربران. هر مدیر برای هر لایه حساب جداگانه دارد و حساب لایه بالاتر هرگز روی سیستم لایه پایین‌تر لاگین نمی‌کند. به این ترتیب نفوذ به یک کلاینت به سرقت اعتبارنامه‌ی ادمین دامنه منجر نمی‌شود.

رمز krbtgt را هر چند وقت یک‌بار باید عوض کرد؟

زمان‌بندی چرخش را در سیاست امنیتی سازمان به‌صورت دوره‌ای تعیین کنید و پس از هر گمان نفوذ به دامنه بلافاصله آن را انجام دهید. هر چرخش شامل دو ریست است و بین آن‌ها باید Replication کامل شود و دست‌کم به اندازه‌ی حداکثر عمر تیکت (پیش‌فرض ۱۰ ساعت) صبر کنید. دو ریست پشت سر هم می‌تواند احراز هویت را در کل دامنه مختل کند.

چطور جلوی حمله‌ی Kerberoasting را بگیریم؟

حساب‌های کاربری دارای SPN را پیدا کنید و سرویس‌ها را تا جای ممکن به gMSA منتقل کنید که رمز طولانی و تصادفی دارند و خودکار عوض می‌شوند. برای حساب‌هایی که باید بمانند، رمز تصادفی دست‌کم ۲۵ کاراکتری بگذارید، فقط رمزنگاری AES را مجاز کنید و SPN را از حساب‌های ممتاز حذف کنید. درخواست تیکت سرویس با رمزنگاری RC4 را هم در SIEM پایش کنید.

گروه Protected Users چه کاری انجام می‌دهد؟

اعضای این گروه نمی‌توانند با NTLM احراز هویت شوند، در پیش‌احراز هویت Kerberos از DES و RC4 استفاده نمی‌کنند، قابل Delegation نیستند و اعتبارنامه‌ی کش‌شده ندارند. عمر TGT آن‌ها چهار ساعت و غیرقابل تمدید است. این گروه محافظت مؤثری برای حساب‌های انسانی ادمین است، اما حساب‌های سرویس و کامپیوتر نباید عضو آن شوند.

آیا باید NTLM را کاملاً غیرفعال کرد؟

هدف نهایی کنار گذاشتن NTLM است، اما این کار باید مرحله‌ای انجام شود. ابتدا با تنظیم LAN Manager authentication level استفاده از LM و NTLMv1 را ممنوع کنید، سپس ممیزی NTLM را فعال کنید تا نرم‌افزارها و دستگاه‌هایی که هنوز به آن وابسته‌اند مشخص شوند. پس از اصلاح آن‌ها و تعریف استثناهای ضروری، NTLM را در سطح دامنه محدود کنید.

  • #هاردنینگ اکتیو دایرکتوری
  • #امن‌سازی اکتیو دایرکتوری
  • #هاردنینگ Active Directory
  • #امنیت کنترلر دامنه
  • #چک‌لیست امنیت AD
  • #Kerberoasting
  • #Active Directory hardening

ببینید مهاجمان چه چیزی می‌بینند — پیش از آن‌که آن‌ها ببینند

یک ارزیابی رایگان از سطح حمله بیرونی و گزارش اولویت‌بندی‌شده از مهندسان امنیت ما دریافت کنید.