Skip to main content

حسابرسی و بررسی login ها

Auditing logins

در این درس از دوره SQL Server Essential Training، به بررسی جامع فرآیند Auditing Logins در SQL Server پرداخته می‌شود؛ بدین صورت که با استفاده از SQL Server Audit، ورودهای موفق و ناموفق ثبت و مورد تحلیل قرار می‌گیرند تا از طریق نظارت دقیق، تهدیدات احتمالی شناسایی و امنیت پایگاه داده بهبود یابد. آموزش ارائه شده علاوه بر تشریح اهمیت امنیتی نظارت بر ورودها، به پیکربندی بهینه سیستم‌های ثبت لاگ و به‌کارگیری بهترین شیوه‌های مدیریتی جهت تحلیل و واکنش سریع نسبت به رخدادهای مشکوک می‌پردازد؛ هدف اصلی این درس، تجهیز متخصصان با دانش عملی و فنی برای پیاده‌سازی سیستم‌های نظارتی مدرن در محیط‌های تولیدی و ارتقای سطح امنیت داده‌های سازمانی می‌باشد.

لینک کمکی (official link) – آموزش auditing logins در SQL Server: رازهای امنیت دیتابیس

چیز متداولی که من در مانیتورینگ و کنترل عملکرد نظارت sql server2016 دوست دارم این هست که بدونم چه کسی به سرور من لاگ شده و همچنین تلاشهای ناموفق رو که برای ورود به سرورم شده، رو هم بدونم. این ها از نقطه نظر امنیتی جالب هستن. بدیهی هست که اگه یک تعداد بزرگ log های ناموفق که نتونسته باشن به سرور وارد بشن، ببینیم، میتونه علامت این باشه که کسی سعی میکنه نقص امنیتی ایجاد کنه و به سرورمون رخنه کنه. اما در بسیاری از وضعیتهای عیب یابی و عیب زدایی، ما میخوایم بدونیم که چه کسی لاگین هست یا چه کسی مشکل لاگین داره و چرا.

یکی ازمتداولترین چیزهایی که من برای رفع عیوب سرور در شغلم دارم اتصال ناموفق به SQL server هست. بنابراین زمانی که کاربرهای متفاوت این نرم افزار با من تماس میگیرن، اونها معمولا اصراردارن که اونها رو در ip ادرس های درست قرار بدم، یا اینکه با username و password درست، مشکل ورود به سرورشون رو حل کنم.

اما واقعا من نمیدونم که این نام های کاربری که قبلا بهشون برای ورود به سرور دادم درست أزشون استفاده میشه یا خیر. اونها میتونن به طور تصادفی پسورد رو اشتباه قرار بدن، اونها میتونن ازusername نادرست استفاده کنن. پس من قبل از اینکه بخام پسورد جدیدی رو براشون تعریف کنم باید بفهمم که دقیقا چرا اون کاربرهام نتونستنن به سرور لاگین کنن. بنابراین اگه با ابزار مانیتورینگ sql server 2016 به لاگین نظارت کنم، میتونم به لاگ ها برم و این موضوع رو چک کنم و ببینم که ایا اونها با موفقیت لاگین شدن یا نه مشکل از پسوردی بوده که من بهشون برای ورود به سرور دادم و یا اینکه مشکل از یوزرنیمی هست که اونم من براشون تعریف کرده ام؛ و با این مانیتورینگ و تسلط بیام و اقدام به ویرایش مشکلشون در ورود به سرور بکنم و یا اینکه ایا سرورم بدلایل مشکلات شبکه ای هیچ تلاشی برای لاگین شدن کاربرام نکرده.

بنابراین اینجا در Management Studioروی نام SQL server ام کلیک راست میکنم و به گزینه  Propertiesمیرم و در صفحه Server Properties، در جایی که توی پنجره server properties نوشته Select a page، به گزینه Security میرم و  یک گزینه برای  Login auditingمیبینم و این بمعنی حسابرسی لاگین ها هستش. به صورت پیش فرض Failed logins only بمعنی فقط ورودها ناموفق هست. شخصا من دوست دارم که روی گزینه Both failed and successful باشه بمعنی اینکه میخام هم ورودهای موفق و هم ورودهای ناموفق برام بنمایش دربیاد. خب بعد از اینکه این تغییر رو ایجاد کردم روی دکمه اوکی کلیک میکنم. به منظور این که این تغییرات اعمال شود، ما باید سرویس اس کیو ال سرورمون رو متوقف و restart کنیم.

یک تعداد راه برای این که شما بتونین اون رو انجام بدین وجود داره. شما میتونین به سرویس  control panelبرین میتونین به SQL server configuration manager برین. اما در حال حاضر  Management Studioباز شده هست. پس اجازه بدین که این رو از همین جا انجام بدم. پس برای اینکار دوباره، روی این مکان قبلی، روی نام سرور کلیک راست میکنم و گزینه Restart رو انتخاب میکنم. این کار رو انجام دادم، حالا از من میپرسه که ایا در restart کردن مطمئن هستم و من روی گزینه yes کلیک میکنم و SQL server service ام در حال restart شدن هست اول متوقف میشه و بعد agent restart بشه. یک پیغامی در این باره میاد که بعد از این که من اومدم سرور شما رو استوپ کردم آیا دوست دارید sql server agent مجدد ران بشه؛ ایا مایل به ادامه هستم؟ بنابراین من این کار رو انجام دادم و این رو میدونیم که قصدمون هم همین هست پس روی Yes کلیک میکنم.

بسیار خب، به نظر میرسه که سرویسها restart شدن، و اون تنظیماتی رو که من اعمال کردم دیگه تو اولویت هستن. حالا من باید یک سری لاگین های ناموفق تولید کنم. تا بالطبع ما بتونیم بعدش به اونها در لاگها نگاه کنیم .خب پس من میخوام Management Studio رو ببندم و دوباره باز کنم. اینجا جایی هست که من میخوام لاگین شوم. من قصد دارم عمدا چند بار به اشتباه وارد شم. اون رو از  Windows Authenticationبه SQL Server Authentication تغییر میدم و از  TestLogin برای لاگین استفاده میکنم که لاگین معتبری هست. اما من پیش میرم و عمدا پسورد اشتباهی رو وارد میکنم و ما میبینیم که پیغام خطا میده که میگه Login failed، میام و روی گزینه ok کلیک میکنم.

من میخوام لاگین ناموفق دیگه ای انجام بدم. این بار از یک نام لاگین نامعتبر استفاده میکنم و روی گزینه Connect میزنم و دوباره میگه ناموفق بود. اوکی. و حالا میخوام این رو مثل قبل به Windows Authentication تغییر بدم وپیش میرم و لاگینم با موفقیت انجام میشه. حالا میخوام به لاگ هام نگاه کنم تا ببینم که این اطلاعات چطور به سیستم وارد شدن. بنابراین زیر Management میرم و SQL Server Logs رو باز میکنم و روی Current دوبار کلیک میکنم. صفحه رو بزرگ میکنم. میبینم که دومین خط در اینجا Login succeeded برای username ام هست.

اگر ما به 5 یا 10 خط بعدی نگاه کنیم، میبینم که چند اتصال به صورت موفقیت امیز هست. و دلیلشون هم این هست که Managment Studio بیشتر از  یک اتصال رو به عنوان نمونه ایجاد کرده. بنابراین این همه پیغام موفقیت آمیز خیلی تعجب اور نیست. اما اگه کمی بعد تر رو نگاه کنیم “Login failed for user ‘HelloWorld’. “Reason: Could not find a login matching the name provided” رو میبینیم. بنابراین در این مورد ما میدونیم که کاربران نام کاربری نامعتبری رو ارائه دادن و دو گام زیری اون هم میبینیم که میگه  Login failed for user ‘TestLoginیعنی کاربر TestLogin نتونسته وارد بشه.

می بینید دلیلش هم نوشته Reason: Password did not match. یعنی کاربر TestLogin پسورد رو اشتباه وارد کرده، بنابراین یک همچین اطلاعاتی میتونه خیلی با ارزشتر هم باشه. اگه من با یک همچین اطلاعات بی بهایی بتونم یک مشکل ارتباطی رو عیب یابی کنم، اون میتونه یک کار ارزشمند باشه. به کابر نهایی اصرار میکنم که از  یک پسورد درست برای ورودش به سرور استفاده کنه و خیلی راحت مشکلش رو حل می کنم. خب پس دیدید من میتونم بیام اینجا در log و فقط در عرض چند ثانیه ای، جمله  No, you’re not using the right passwordرو، به معنی این که شما از پسورد صحیح استفاده نکردین، تعیین کنم، و خیلی راحت به جای استفاده از روش های غیر معمول عیب یابی و مسیرهای نامتعارف دیگه مشکل این کاربرم رو حل کنم و اگه چیزی شبیه به این که میگه cannot find a login matching the name provided رو دیدم خب معلومه که کاربر از نام کاربری درستی استفاده نکرده و فقط کافیه بهش اطلاع بدم.

اگه من login succeded رو دیدم، پس اون  یک مسیر عیب یابی متفاوت رو فراهم کرده، که حاکی از اتصال موفقیت امیز کابران بوده. و چیزهایی که بعد از اون وجود داره، اشتباه خواهد بود. و سپس، همچنین در این مورد، اگه چیزی در log ندیدم، مثل no successful login و no unsuccessful login اینها به این معنی هستن که نه لاگ به صورت موفقیت امیزه نه ناموفق. پس اونوقت که من میفهمم که کاربر هیچ تماسی با سرور نداره، بنابراین من احتمالا، اون رو به عنوان  یک مشکل شبکه ای تصور میکنم، و کافی هست کابل ها و ارتباط بین سرور و کلاینت ها رو چک کنم. بنابراین دیدیم که خیلی از اطلاعات خوب در اینجا در این لاگ ها و در نحوه ورود یا لاگین شدن کاربران، برای هر دو نوع لاگهای موفق و ناموفق وجود داره.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دوره ها
درس ها
Tha PMIS
طهاکو من
0