آموزش تغییر پسورد Local administrator در ویندوز ۲۰۱۲ از طریق LAPS
در ویندوز ۲۰۰۸ می توانستیم برای تغییر اتوماتیک پسورد های Local Administrator کلاینت های دامین از یک پالیسی استفاده کنیم که بتوانیم همه پسوردها را با هم تغییر دهیم. بعد ها متخصصان امنیتی و خرابکاران سایبری با همکاری یکدیگر مایکروسافت را به این نتیجه رساندند که این روش علی رغم سادگی ، چندان هم امن نیست. درواقع زمانی که این پالیسی را اجرا می کردیم ، پسورد به صورتی غیر خوانا در Sysvol ذخیره می شد ، اما غیرخوانا بودن همیشه به معنای امنیت نیست. گذشته از این در روش سابق همه ماشین های تحت پالیسی ، یک پسورد یکسان را دریافت می کردند. در نتیجه نفوذگر با یافتن تنها یک پسورد می توانست به تمام کلاینت ها دسترسی داشته باشد.
ایراد دیگر آن بود که پسوردها با استفاده از AES 256 رمزنگاری می شدند و Private Key مورد استفاده برای این رمزنگاری در MSDN وجود داشت.
حتی در همان زمان نیز ، مایکروسافت در هنگام استفاده از این پالیسی به شما هشدار می داد که پسورد در فایل XML موجود در Sysvol قابل خواندن است.
اجازه بدید که به نحوه ذخیره سازی پسورد در فایل مذکور هم نگاهی بیاندازیم که برای استفاده از راه حل جدید مایکروسافت بیشتر قانع شوید. چون این سولوشن تازه کمی پیچیده است و باید دلیل کافی برای استفاده از آن وجود می داشت.
با توجه به دلایلی که ذکر شد مایکروسافت راه کار تازه ای را ارائه داد و حتی در همان ویندوز سرور ۲۰۰۸ طی یک Update روش سابق را حذف کرد. در این مقاله ما نحوه اجرای راه کار تازه مایکروسافت به نام Microsoft LAPS را آموزش خواهیم داد.
به دلیل اینکه این سولوشن پیوسته در حال به روزرسانی است از آپلود آن در مجله تک تیک خودداری خواهیم کرد و شما می توانید فایل های مورد نیاز خود را از آدرس زیر در وب سایت مایکروسافت دانلود نمایید :
https://code.msdn.microsoft.com/Solution-for-management-of-ae44e789
از لینک بالا فایل installers.zip را دانلود کنید. در حالی که فایل دانلود می شود برخی از موارد امنیتی که در ارائه این راهکار مد نظر قرار گرفته است را با هم مرور می کنیم :
– پسورد ها باید در هر کامپیوتر یکتا و تصادفی باشند.
– امکان حدس پسورد ها نباید از طریق نام کامپیوتر ، آدرس مک و مواردی از این قبیل وجود داشته باشد.
– افراد مجاز در هر زمان باید راهی جهت به دست آوردن پسورد تصادفی داشته باشند.
– این راهکار باید بتواند قابل پیاده سازی در شبکه هایی با بیش از ۱۰۰۰ کلاینت هم باشد.
– قابلیت تغییر نام کاربری Administrator نیز به صورت گروهی بایستی فراهم باشد.
– سولوشن ارائه شده باید بتواند در زمانی که به هر دلیل ارتباط Client با کنسول مدیریت قطع می شود و امکان اطلاع پسورد جدید به Management وجود ندارد از تغییر پسورد بر روی Client طبق جدول زمانی خودداری کند. ( ادمین بدبخت نشه ! )
– و آخرین مورد اینکه این راهکار باید با کلاینت های ویندوز XP و ۲۰۰۳ به بالا و همچنین هر دو پلتفرم ۶۴ و ۳۲ بیتی سازگار باشد.
این موارد خط مشی های مهم این راهکار هستند اما استفاده از این روش به این موارد محدود نمی شود و امکانات بسیار زیادی دارد که در صورت علاقه مندی بیشتر می توانید فایل Documentation.zip را هم از آدرس دانلود که قبل تر ارائه شد مطالعه نمایید. اما توجه داشته باشید که اگر تصمیم به تست قابلیت های دیگر را داشتید حتما در ابتدا آن ها را در محیط Lab پیاده سازی نمایید. چرا که بسیاری از امکانات آن نیازمند ویرایش Schema از طریق ADSIEdit است که همان طور که مستحضرید بیش تر ویرایش های انجام شده در این محیط گاهی غیر قابل برگشت هستند.
مراحل اجرای LAPS
در ابتدا فایل installers.zip را که در مرحله قبل دانلود کردید را در یک فولدر Extract نمایید. این فایل محتوی دو اینستالر برای ویندوزهای ۶۴ بیت و ۳۲ بیت می باشد. با توجه به معماری سیستم عامل سرور خود فایل مناسب را اجرا می کنیم.
در مرحله اول روی Next کلیک کنید.
در اولین ماشینی که فایل را نصب می کنیم بایستی همه آپشن های نصب را فعال نماییم. بعدا از همین فایل ها برای نصب AdmPwd در سمت کلاینت یا همان Client Side Extension و ماژول پاور شل و یا Fat Client بر روی کامپیوترهای در نظر گرفته شده برای Management استفاده خواهیم کرد.
بر روی Install کلیک کنید.
و سپس Finish را انتخاب کنید.
ویرایش Schema
در این قسمت باید دو ویژگی جدید زیر را به Schema اضافه کنیم :
ms-MCS-AdmPwd – Stores the password in clear text
ms-MCS-AdmPwdExpirationTime – Stores the time to reset the password
برای به روزرسانی Schema و اضافه کردن دو ویژگی مذکور ، ابتدا PowerShell ویندوز را اجرا می کنیم و ماژول AdmPwd را Import می تماییم. – توسط دستور رو به رو : Import-module AdmPwd.PS
حال با دستور زیر Schema را به روز رسانی خواهیم کرد :
Update-AdmPwdADSchema
مرحله بعدی تنظیم عدم دسترسی خواندن ویژگی ms_MCS-Adm-Pwd برای کامپیوترهای OU ای است که قصد اعمال این پالیسی را برای آن ها داریم. اگر قصد اعمال این سناریو برای همه کامپیوترهای دامین را دارید بایستی در همه OU ها این دسترسی غیر فعال شود.
جهت این کار ADSIEdit را باز کنید. ( از Administrative Templates )
بر روی OU حاوی کامپیوتر اکانت هایی که قصد اعمال این سناریو برای آن ها را دارید کلیک راست نمایید و از منو ، Properties را انتخاب کنید. در زبانه Security و در قسمت Advanced دسترسی گروه (ها) و یا یوزر (ها)یی را که نباید بتوانند پسورد های ایجاد شده را بخوانند را غیر فعال نمایید. ( با غیر فعال سازی گزینه All extended rights )
نکته مهم در این قسمت این است که اگر این مرحله را انجام ندهید نیز LAPS کار خواهد کرد. اما با ریسک های امنیتی همراه خواهد بود.
گام بعدی اضافه کردن دسترسی Write در ms-MCS-AdmPwdExpirationTime و ms-MCS-AdmPwd برای همه اکانت های کامپیوتر ( SELF built-in accounts ) است. از این جهت که هر ماشین باید بتواند پسورد و برچسب زمان انقضای پسورد Local Administrator خود را به روز رسانی نماید. برای این کار دستور زیر را در PowerShell اجرا می کنیم.
Set-AdmPwdComputerSelfPermission –OrgUnit <name of the OU to delegate permissions>
به جای <name of the OU to delegate permissions> نام OU مورد نظر را قرار خواهیم داد. برای مثال من قصد دارم که این دسترسی را برای OU با نام Servers در دامین خود محول کنم. که مطابق شکل زیر دستور را نوشته ام :
هنوز به چند Permission دیگر نیز نیاز داریم. دسترسی CONTROL_ACCESS بر روی ms-MCS-AdmPwd که مشخص کنیم کدام گروه یا یوزر می تواند پسورد Local Administrators کامپیوتر های تحت مدیریت را بخواند و همچنین ایجاد یک دسترسی برای مشخص کردن اینکه کدام یوزر یا گروه در هر OU مجاز است که پسورد را خارج از برنامه زمان بندی شده و در هر زمان دلخواه بر روی کامپیوترهای تحت مدیریت Reset نماید.
برای قسمت اول از دستور زیر در PowerShell استفاده می کنیم :
Set-AdmPwdReadPasswordPermission –OrgUnit <name of the OU to delegate permissions> -AllowedPrincipals <users or groups>
دوباره مانند قبل بعد از سوئیچ –OrgUnit نام OU را خواهیم نوشت و بعد از سوئیچ AllowedPrincipals نیز نام گروه یا یوزر را به صورت Principal Name می نویسیم. برای مثال نام دامنه من Domain2 و نام کاربری مورد نظر من Administrator است که آن را به این صورت نوشته ام : domain2\Administrator
نکته : می توانید چندین یوزر یا گروه را با جدا کردن Principal Names توسط کاما از یکدیگر در یک دستور وارد نمایید. برای مثال -AllowedPrincipals domain2\Administrator,domain2\HelpDesk,domain2\Group3
برای قسمت دوم نیز دستور زیر را استفاده خواهیم کرد :
Set-AdmPwdResetPasswordPermission –OrgUnit < name of the OU to delegate permissions> -AllowedPrincipals <users or groups>
از آن جایی که این راهکار برای استفاده در شبکه های بزرگ ابداع شده است ( که در آن ها نصب نسخه کلاینت به صورت تک تک امکان پذیر نیست ) نصب AdmPwd را برای کلاینت ها از طریق ویژگی Software Installation در Group Policy را پیشنهاد می کنم. اما در صورتی که شما مایل هستید از هر راه دیگری این مهم را به انجام برسانید دقت داشته باشید که برای نسخه کلاینت نیازی به فعال کردن Option های دیگر در هنگام نصب نیست. برای کسب اطمینان از اینکه با هر روش ، نصب به درستی صورت پذیرفته است یا خیر می توانید به Programs and Features در Control Panel نگاهی بیاندازید.
اگر تا این جای کار را به درستی انجام داده باشید ، حال می توانید تنظیمات سفارشی خود را پیاده سازی نمایید. به صورت پیش فرض AdmPwd هر ۳۰ روز یکبار پسورد Local Administrator را ریست می کند و پسوردی که خواهد ساخت یک پسورد ۱۲ کاراکتری Complex خواهد بود.
این مقادیر پیش فرض را می توان از قسمت Password Settings تغییر داد :
بنابراین تا اینجای کار ما کلاینت ها را به نوعی برنامه ریزی کردیم که هر ۳۰ روز یکبار پسورد یکتایی برای حساب کاربری Local Administrator به صورت اتوماتیک ایجاد خواهد شد و پسورد قبلی منقضی خواهد شد. همچنین این پسورد جدید دارای ۱۲ کاراکتر است و طبق قواعد Complexity ایجاد گردیده است. اما سوال اینجاست که ما به عنوان ادمین چطور باید بدانیم در هر لحظه پسورد ادمین لوکال هر کدام از سرورها یا کلاینت های شبکه ما چیست ؟ اگر یادتان باشد در زمان نصب AdmPwd گزینه Fat Client UI را فعال کردیم. این گزینه از مسیر زیر قابل دسترسی است :
C:\Program Files\AdmPwd\AdmPwd.UI.exe
پس از اجرای آن تنها کافی ست که نام کامپیوتری را که می خواهید پسورد Local Administrator آن را بدانید را وارد و بر روی Search کلیک کنید. بلافاصله پسورد و تاریخ انتقضای آن برای شما نمایش داده خواهد شد.
لازم به ذکر است روش های دیگری هم برای مشاهده پسورد و تغییر آن وجود دارند. از جمله از طریق دسترسی به کنسول Active Directory و همچنین دستورات PowerShell که از ذکر آن ها در این مقاله خودداری می کنیم.
در انتها شاید برایتان جالب باشد که کامپیوتر یا کاربری که دسترسی Read را در قسمت های قبل با دستورات PowerShell برایش محدود کردیم در صورتی که Fat Client UI را نصب کند آیا می تواند پسورد کامپیوتر ها را ببیند یا خیر ؟ پاسخ منفی است. تصویر زیر را ببینید.
تا جای ممکن سعی شد که این آموزش برای کاربرانی که اولین بار از PowerShell استفاده می کنند شفاف باشد و به قدر کافی توضیح داده شده باشد. همچنین می توانید در قسمت کامنت ها سوال هایی که در این آموزش پاسخ داده نشده اند را مطرح نمایید و خیلی زود به آن ها پاسخ داده خواهد شد. اگر اجرای این مراحل برای شما مشکل است یا به هر دلیل دوست ندارید که از این روش استفاده نمایید توصیه من به شما نرم افزار Synergix و ManageEngine Password Manager Pro است.
خیلی عالی بود