يُستخدم الدليل النشط (AD) من قبل العديد من المنظمات لإدارة المستخدمين وخدمات المصادقة. فهم انتهاء صلاحية كلمة مرور حسابات المستخدم في AD مهم للحفاظ على الأمان. باستخدام PowerShell، يمكن أتمتة هذه المهمة، مما يجعل الإدارة أسهل. سيشرح هذا المقال كيفية التحقق من انتهاء صلاحية كلمة مرور حسابات المستخدم في AD باستخدام PowerShell، خطوة بخطوة.
الأمر للتحقق من انتهاء صلاحية كلمة المرور
للتحقق من انتهاء صلاحية كلمة مرور حساب مستخدم الدليل النشط، ادمج cmdlet Get-ADUser في PowerShell مع عدة خصائص. أدناه الأمر الأساسي للتحقق من انتهاء صلاحية كلمة مرور لمستخدم محدد.
# التحقق من انتهاء صلاحية كلمة مرور المستخدم
Get-ADUser -Identity "username" -Properties "PasswordLastSet", "PasswordNeverExpires" | Select-Object -Property Name, PasswordLastSet, PasswordNeverExpires, @{Name="PasswordExpires"; Expression={if ($_.PasswordNeverExpires -eq $false) { $_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays) } else {"Never Expires"}}}
يسترجع هذا الأمر “PasswordLastSet” (آخر مرة تم فيها تعيين كلمة المرور)، وما إذا كانت كلمة المرور مضبوطة على ألا تنتهي أبدًا “PasswordNeverExpires”، وإذا كانت كلمة المرور لها تاريخ انتهاء، يحسب ويعرض متى يكون هذا التاريخ.
تعليقات
- يُستخدم cmdlet
Get-ADUser
لاسترجاع معلومات المستخدم من AD. - يحدد الباراميتر
-Identity
اسم المستخدم المستهدف. - باستخدام الباراميتر
-Properties
، تحدد الخصائص التي ترغب في استرجاعها. بشكل افتراضي، لا يتم استرجاع جميع الخصائص. - استخدم cmdlet
Select-Object
لاختيار المعلومات التي ترغب في عرضها وإضافة خصائص مخصصة.
مثال السكريبت 1: سرد المستخدمين الذين انتهت صلاحية كلمات مرورهم
يمكن للسكريبت تحديد وسرد المستخدمين الذين انتهت صلاحية كلمات مرورهم بين جميع مستخدمي الدليل النشط للتحقق من الامتثال لسياسات الأمان التنظيمية وأتمتة مهام إدارة الحسابات.
يكتشف السكريبت التالي في PowerShell المستخدمين الذين انتهت صلاحية كلمات مرورهم عن طريق مقارنة التاريخ الحالي ويخرج قائمة بهؤلاء المستخدمين.
# سرد المستخدمين الذين انتهت صلاحية كلمات مرورهم
Import-Module ActiveDirectory
$today = (Get-Date)
Get-ADUser -Filter * -Properties
PasswordLastSet, PasswordNeverExpires | Where-Object {
$_.PasswordNeverExpires -eq $false -and
($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)) -lt $today
} | Select-Object Name, PasswordLastSet, @{Name="PasswordExpires"; Expression={$_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)}}
تعليقات
- يجعل
Import-Module ActiveDirectory
الأوامر المتعلقة بالدليل النشط متاحة. هذا السطر ضروري دائمًا قبل تشغيل السكريبتات المتعلقة بAD. - يُستخدم cmdlet
Get-Date
للحصول على التاريخ الحالي، الذي يُستخدم كأساس لتحديد انتهاء صلاحية كلمة المرور. Get-ADUser -Filter *
يستهدف جميع المستخدمين في الدليل النشط.- cmdlet
Where-Object
يُستخدم لتصفية المستخدمين الذين لا تكون كلمات مرورهم صالحة بشكل دائم والذين تكون تاريخ إعداد كلمة المرور الخاصة بهم بالإضافة إلى الفترة القصوى المحددة بواسطة سياسة كلمة المرور للنطاق قبل تاريخ اليوم. - استخدم cmdlet
Select-Object
لاختيار المعلومات الضرورية فقط وإضافة الخاصية المخصصةPasswordExpires
لحساب وعرض تاريخ انتهاء صلاحية كلمة المرور.
يسهل هذا السكريبت إدارة المستخدمين الذين انتهت صلاحية كلمات مرورهم، مما يساهم في الحفاظ على الأمان.
مثال السكريبت 2: إرسال رسائل بريد إلكتروني تنبيهية قبل الانتهاء
إبلاغ المستخدمين داخل المنظمة بأن كلمة المرور الخاصة بهم على وشك الانتهاء يمكن أن يحسن تجربة المستخدم ويعزز الأمان. يكتشف السكريبت التالي في PowerShell المستخدمين الذين ستنتهي صلاحية كلمات مرورهم خلال عدد محدد من الأيام ويُرسل تلقائيًا رسائل بريد إلكتروني تنبيهية لهؤلاء المستخدمين.
# إرسال رسائل بريد إلكتروني تنبيهية قبل الانتهاء
Import-Module ActiveDirectory
$notificationPeriod = 14 # عدد الأيام قبل إرسال التنبيه
$smtpServer = "smtp.example.com" # عنوان خادم SMTP
$fromEmail = "admin@example.com" # عنوان بريد المرسل
$subject = "كلمة مرورك ستنتهي قريبًا" # موضوع البريد
$users = Get-ADUser -Filter * -Properties EmailAddress, PasswordLastSet, PasswordNeverExpires | Where-Object {
$_.PasswordNeverExpires -eq $false -and
($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays - $notificationPeriod)) -lt (Get-Date)
}
foreach ($user in $users) {
$toEmail = $user.EmailAddress
$body = "عزيزي $($user.Name),\n\nكلمة المرور الخاصة بك ستنتهي في أقل من $notificationPeriod أيام. يرجى
تغيير كلمة مرورك في أقرب وقت ممكن.\n\nأطيب التحيات،\nفريق تقنية المعلومات الخاص بك"
Send-MailMessage -SmtpServer $smtpServer -From $fromEmail -To $toEmail -Subject $subject -Body $body
}
تعليقات
- يستخدم هذا السكريبت متغير
$notificationPeriod
لتحديد متى يبدأ في إبلاغ المستخدمين، مُعدًا على 14 يومًا مقدمًا في هذا المثال. - يسترجع cmdlet
Get-ADUser
معلومات المستخدم بما في ذلك الخصائصEmailAddress
،PasswordLastSet
، وPasswordNeverExpires
. - يُستخدم cmdlet
Where-Object
لتصفية المستخدمين الذين تقترب صلاحية كلمات مرورهم من الانتهاء. - يُستخدم الحلقة
foreach
لإرسال بريد إلكتروني لكل مستخدم ذي صلة باستخدام cmdletSend-MailMessage
.
بتشغيل هذا السكريبت بانتظام، يمكن للمستخدمين اتخاذ الإجراءات المناسبة قبل انتهاء صلاحية كلمات مرورهم، مما يساعد في الحفاظ على أمان الحسابات وتقليل عدد التذاكر الدعم.
مثال السكريبت 3: تعطيل الحسابات المنتهية تلقائيًا
كإجراء أمان، يمكن أن يقلل تعطيل الحسابات المستخدمة التي انتهت صلاحية كلمات مرورها تلقائيًا من خطر الوصول غير المصرح به. يكتشف السكريبت التالي في PowerShell الحسابات المستخدمة ذات كلمات المرور المنتهية ويعطل تلك الحسابات تلقائيًا.
# تعطيل المستخدمين المنتهية صلاحية كلمات مرورهم تلقائيًا
Import-Module ActiveDirectory
$today = (Get-Date)
$expiredUsers = Get-ADUser -Filter * -Properties PasswordLastSet, PasswordNeverExpires | Where-Object {
$_.PasswordNeverExpires -eq $false -and
($_.PasswordLastSet.AddDays((Get-ADDefaultDomainPasswordPolicy).MaxPasswordAge.TotalDays)) -lt $today
}
foreach ($user in $expiredUsers) {
# تعطيل حساب المستخدم
Disable-ADAccount -Identity $user.SamAccountName
Write-Output "تم تعطيل الحساب: $($user.Name)"
}
تعليقات
Import-Module ActiveDirectory
يستورد وحدة الدليل النشط، مما يسمح باستخدام الأوامر المتعلقة بAD.- يسترجع cmdlet
Get-ADUser
كل معلومات المستخدم ويستخدمWhere-Object
لتصفية المستخدمين ذوي كلمات المرور المنتهية. - داخل حلقة
foreach
، يُستخدم cmdletDisable-ADAccount
لتعطيل حسابات المستخدمين الذين انتهت صلاحية كلمات مرورهم. - يخرج السكريبت إلى وحدة التحكم عندما يتم تعطيل حساب مستخدم.
هذا السكريبت مفيد بشكل خاص لإدارة الحسابات في المنظمات الكبيرة، مما يؤتمت الامتثال لسياسات الأمان ويقلل من العبء الإداري. تشغيل السكريبت بانتظام يضمن أن الحسابات ذات كلمات المرور المنتهية يتم تعطيلها، مما يعزز أمان النظام.
الاعتبارات الأمنية
عند أتمتة سياسة كلمة المرور وإدارة حساب المستخدم، يجب مراعاة عدة اعتبارات أمنية. انتبه إلى النقاط التالية عند تنفيذ وتشغيل هذه السكريبتات.
- تطبيق مبدأ أقل امتياز: يجب منح الحساب الذي ينفذ السكريبت الأذونات الضرورية الدنيا. على سبيل المثال، إذا كان الغرض هو قراءة معلومات كلمة المرور للمستخدم فقط، يجب تعيين أذونات للقراءة فقط، ويجب منح الأذونات الضرورية فقط لتعطيل الحسابات لتلك العمليات.
- تأمين تخزين السكريبت: نظرًا لأن السكريبتات قد تحتوي على معلومات حساسة أو أوامر تغير النظام، يجب تخزينها بأمان لحمايتها من الوصول غير المصرح به.
- التسجيل والمراقبة: يجب تسجيل ومراقبة التغييرات التي تجريها السكريبتات بشكل صحيح. هذا يمكن من الاستجابة السريعة للسلوكيات غير المتوقعة أو الحوادث الأمنية.
- الحفاظ على آليات الإخطار: خاصةً للسكريبتات التي تخطر المستخدمين بانتهاء صلاحية كلمة المرور الوشيك أو تعطل الحسابات تلقائيًا، من المستحسن وجود آليات لإخطار المسؤولين أو المستخدمين عند اتخاذ الإجراءات.
- المراجعة والتحديث المنتظم: يجب مراجعة السكريبتات بانتظام وتحديثها عند الضرورة، استجابةً للتغييرات في السياسات التنظيمية أو التحديثات على بيئة الدليل النشط.
بالالتزام بهذه الاعتبارات الأمنية، يمكن للعمليات الآلية التي تسهلها هذه السكريبتات أن تعمل بكفاءة مع الحفاظ على التوافق مع معايير الأمان التنظيمية.
خاتمة
استخدام PowerShell للتحقق من وإدارة انتهاء صلاحية كلمة مرور حسابات المستخدم في الدليل النشط أساسي للحفاظ على أمان المنظمة. من خلال استخدام السكريبتات المقدمة في هذا المقال، يمكن تحقيق مراقبة فعالة لانتهاء صلاحية كلمة مرور حسابات المستخدم في AD، والإخطار قبل الانتهاء، وتعطيل الحساب تلقائيًا بناءً على سياسات الأمان.
من المهم أن تدعم هذه العمليات الآلية وتعزز سياسات الأمان للمنظمة. ومع ذلك، يجب أن تصاحب الأتمتة تطبيق مبدأ أقل امتياز، وتأمين تخزين السكريبت، والتسجيل والمراقبة المناسبين، وصيانة آليات الإخطار، والمراجعة والتحديث المنتظمين، من بين اعتبارات أمنية أخرى.
في النهاية، من خلال الجمع بين هذه الممارسات الأفضل وسكريبتات الأتمتة بشكل مناسب، يمكن أن تصبح إدارة بيئة الدليل النشط أكثر كفاءة وأمانًا.