‫ امن‌سازي حساب‌هاي سرويس (بخش اول)

IRCAR201310188
تاريخ: 27/07/92
 
در بخش نخست از اين مجموعه مقالات، حساب‌هاي سرويس معرفي شده و اهميت محافظت از آنها بيان خواهد شد.
 
مقدمه
هركس كه با امنيت ويندوز در ارتباط باشد، حساب‌هاي سرويس را مي‌شناسد. تنظيم حساب‌هاي سرويس و حصول اطمينان از اينكه به ازاي هر برنامه نصب شده‌اي كه به آن نياز دارد كار مي‌كنند، دردسر ساز است. ما مي‌دانيم كه حساب‌هاي سرويس به درستي امن نشده‌اند. در واقع حساب‌هاي سرويس از دو جنبه پيچيدگي و امنيت قابل بررسي هستند. با پيش گرفتن گام‌هاي صحيح براي امن‌سازي اين حساب‌ها، سطح كلي حملات براي حساب‌هاي سرويس به شكل قابل توجهي كاهش خواهد يافت.
 
چرا بايد حساب‌هاي سرويس امن‌سازي شوند؟
اغلب حساب‌هاي سرويس زماني كه ايجاد و تنظيم مي‌شوند، حقوق دسترسي بالايي دريافت مي‌كنند. اين حقوق دسترسي با قرار دادن اين حساب‌ها در يك گروه administrative به آنها اعطا مي‌شود. اين گروه مي‌تواند يك گروه محلي مانند Administrators يا يك گروه دامنه‌اي مانند Domain Admins باشد. با توجه به اين حقوق دسترسي بالا، بايد اطمينان حاصل كنيم كه اين حساب‌ها در مقابل حملات محافظت شده هستند.
 
حساب سرويس ويندوز چيست؟
حساب‌هاي سرويس، حساب‌هايي هستند كه يك سرويس ويندوز را اجرا مي‌كنند. البته برنامه‌هايي وجود دارند كه بر روي سيستم‌هاي ويندوز اجرا مي‌شوند و به حساب سرويس نيز نياز دارند. در اين مقاله به چنين حساب‌هايي اشاره نمي‌كنيم. براي مثال اگر برنامه‌اي داشته باشيد كه بر روي يك سرور ويندوز اجرا شود، ولي سرويسي بر روي آن سرور براي آن برنامه مشاهده نكنيد، اين سرويس مد نظر اين مقاله نيست. اما اگر با اجراي services.msc بر روي سرور، سرويسي را مشاهده مي‌كنيد كه براي آن برنامه اجرا مي‌شود، در اينصورت اين سرويس مد نظر اين مقاله است. شكل 1 فهرست سرويس‌هاي يك سرور ويندوز را نمايش مي‌دهد.
شكل 1: فهرست سرويس‌هاي يك سرور ويندوز
 
هر حساب سرويس را چگونه بيابيم؟
اكنون كه مشخص شد به كدام سرويس‌ها اشاره مي‌كنيم، بايد بدانيم كه چگونه مي‌توانيم حساب‌هاي سرويس را پيدا كنيم. حساب‌هاي سرويس بسيار متنوعي وجود دارد، ولي ما فقط بر روي دسته كوچكي از آنها كه با حساب‌هاي كاربري ويندوز در ارتباط هستند تمركز خواهيم كرد. براي كشف اين مسأله كه كدام حساب‌ها هر سرويس را كنترل مي‌كنند، مي‌توانيد به سادگي به خروجي services.msc نگاهي انداخته و به ستون Log On As توجه نماييد. اين موضوع در شكل 2 قابل ملاحظه است.
شكل 2: حساب‌هاي سرويس به ازاي هر سرويس با استفاده services.msc
 
مشاهده مي‌كنيد كه چهار نوع مختلف در ستون Log On As وجود دارد: Network Service، Local System، Local Service و BEYONDTRUST\Derek. اما فقط چهارمين مورد است كه ما مي‌خواهيم بر روي آن تمركز كنيم. سه مورد ديگر حساب‌هاي كاربري داخلي هستند و تعاريف زير را دارند:
Network Service: حساب Network Service يك حساب محلي از پيش تعريف شده است كه توسط مدير كنترل سرويس مورد استفاده قرار مي‌گيرد. اين حساب توسط زيرسيستم امنيتي تشخيص داده نمي‌شود. اين حساب داراي حداقل حق دسترسي بر روي سيستم محلي است و به عنوان كامپيوتر روي شبكه فعاليت مي‌كند. حساب Network Service از حقوق زير بهره‌مند است:
  • SE_CHANGE_NOTIFY_NAME
  • SE_CREATE_GLOBAL_NAME
  • SE_IMPERSONATE_NAME
  • تمام حقوق تخصيص يافته به كاربران و كاربران احراز هويت شده
 
Local Service: حساب Local Service يك حساب محلي از پيش تعريف شده است كه توسط مدير كنترل سرويس مورد استفاده قرار مي‌گيرد. اين حساب توسط زيرسيستم امنيتي شناسايي نمي‌شود. اين حساب داراي حداقل حق دسترسي بر روي سيستم محلي است و اطلاعات اعتباري anonymous را بر روي شبكه ارائه مي‌كند. حساب Local Service از حقوق زير برخوردار است:
  • SE_CHANGE_NOTIFY_NAME
  • SE_CREATE_GLOBAL_NAME
  • SE_IMPERSONATE_NAME
  • تمام حقوق تخصيص يافته به كاربران و كاربران احراز هويت شده
 
Local System: حساب Local System يك حساب محلي از پيش تعريف شده است كه توسط مدير كنترل سرويس مورد استفاده قرار مي‌گيرد. اين حساب توسط زيرسيستم امنيتي شناسايي نمي‌شود. اين حساب حقوق دسترسي بسيار ارزشمندي بر روي سيستم محلي دارد و به عنوان كامپيوتر بر روي شبكه فعاليت مي‌كند. Token اين حساب شامل SID هاي NT AUTHORITY\SYSTEM و BUILTIN\Administrators مي‌باشد. اين حساب‌ها به اغلب اشياي سيستم دسترسي دارند. نام اين حساب در تمامي قسمت‌ها \LocalSystem است. نام LocalSystem يا ComputerName\LocalSystem نيز مي‌تواند مورد استفاده قرار گيرد. حساب LocalSystem از حقوق دسترسي زير برخوردار است:
  • SE_AUDIT_NAME
  • SE_CHANGE_NOTIFY_NAME
  • SE_CREATE_GLOBAL_NAME
  • SE_CREATE_PAGEFILE_NAME
  • SE_CREATE_PERMANENT_NAME
  • SE_DEBUG_NAME
  • SE_IMPERSONATE_NAME
  • SE_INC_BASE_PRIORITY_NAME
  • SE_LOCK_MEMORY_NAME
  • SE_PROF_SINGLE_PROCESS_NAME
  • SE_TCB_NAME
 
نكته:
اغلب سرويس‌ها به چنين حق دسترسي بالايي نياز ندارند. درصورتي‌كه سرويسي نياز به اين حقوق ندارد و سرويس تعاملي نيز نيست، استفاده از LocalService يا NetworkService توصيه مي‌گردد.
حساب‌هاي سرويسي كه بايد به آنها توجه كنيد، حساب‌هايي به شكل <computer/domain name>\<user account name> هستند. اين حساب‌ها هستند كه براي تنظيمات مورد بحث در اين مقاله كنترل مي‌گردند. براي درك نحوه اين نامگذاري‌ها به راهنماي زير توجه كنيد:
  • <computer name>\<user account name>: درصورتي‌كه نام حساب به اين شكل باشد، نشان مي‌دهد كه اين يك حساب كاربري محلي بر روي كامپيوتري است كه نام آن در ادامه آمده است، مانند Server1\SRV1.
  • <domain name>\<user account name>: درصورتي‌كه نام حساب به اين شكل باشد، نشان مي‌دهد كه اين يك حساب كاربري Active Directory است. اين حساب‌ها بر روي كنترل كننده‌هاي دامنه ذخيره مي‌شوند و به‌طور پيش‌فرض به تمامي كامپيوترهاي دامنه دسترسي دارند، مانند BEYONDTRUST\SRV1.
 
اطمينان حاصل كنيد كه حساب‌هاي سرويس، administrator نيستند
نخستين مسأله در مورد حساب‌هاي سرويس اين است كه اطمينان حاصل كنيم كه اين حساب‌ها، حساب‌هاي پيش‌فرض Administrator نيستند. اين كار ساده است، اما ممكن است بررسي‌هاي ثانويه نيز مورد نياز باشد.
نخستين بررسي ساده است. اگر نام حساب Administrator باشد، اين پيكربندي خوب نيست.
اگر نام حساب Administrator نباشد، بايد اطمينان حاصل كنيم كه حساب Administrator تغيير نام نيافته و حساب تغيير نام يافته به عنوان حساب سرويس فهرست نشده باشد. به اين منظور بايد SID (شناسه امنيتي) اين حساب را بررسي كنيم. ابزارهاي زيادي مي‌توانند براي اين كار مورد استفاده قرار گيرند. DumpSec ابزاري ساده و رايگان براي بررسي حساب‌هاي كاربري محلي و دامنه است. شكل 3 نتاريج DumSec را براي فهرست دامنه كاربران نشان مي‌دهد.
شكل 3: كاربران و SID هاي دامنه در DumpSec
 
چيزي كه ما در اين فهرست به دنبال آن هستيم، SID هايي است كه با 500 تمام مي‌شوند. همانطور كه در شكل 3 مشاهده مي‌كنيد، حساب Administrator با 500 خاتمه مي‌يابد، در نتيجه مي‌توانيم بفهميم كه اين يك حساب پيش‌فرض Administrator است. اگر نام Administrator در فهرست نباشد يا نام Administrator داراي SID با عدد 500 در انتهاي آن نباشد، بايد نام جديدي را كه حساب Administrator به آن تغيير يافته است پيدا كنيم، سپس اطمينان حاصل كنيم كه اين حساب به عنوان يك حساب سرويس بر روي هيچ سرويسي تنظيم نشده باشد.
 
خلاصه
در اين قسمت به تعريف حساب‌هاي سرويس و اهميت محافظت از آنها پرداختيم. ما سرويس‌هاي خود و حساب‌هاي سرويس مرتبط با آنها را فهرست كرديم. بر روي هر سرويس چهار حساب سرويس مختلف مي‌تواند وجود داشته باشد: Network Service، Local System، Local Service و <computer/domain name>\<user account name>. از ميان اين چهار حساب، نوع چهارم است كه براي امن‌سازي حساب‌هاي سرويس مد نظر ما قرار دارد. نخستين مسأله مهم در مورد حساب‌هاي سرويس اين است كه حساب Administrator پيش‌فرض (يا حساب Administrator تغيير نام داده شده) نباشد. در قسمت بعدي به گام‌هاي بعدي امن‌سازي حساب‌هاي سرويس خواهيم پرداخت.

نظرات

بدون نظر
شما برای نظر دادن باید وارد شوید

نوشته

 
تاریخ ایجاد: 18 مرداد 1393

دسته‌ها

امتیاز

امتیاز شما
تعداد امتیازها:0