همانطور که میدانید DNS یکی از سرویسهای زیرساختی شبکههای کاربردی به شماره میرود. بطوری که نبود این سروریس و یا اختلال در کارکرد آن به راحتی میتواند ارتباطات درون شبکه و برون شبکهای را مختل سازد. وظیفه اصلی DNS تبدیل نام به آدرس IP است چرا که در دنیای انسانی از یک طرف ارتباطات بر اساس نام صورت میپذیرد و از سویی دیگر به خاطر سپردن نامها بسیار سادهتر از آدرسهای آیپی است. بنابراین از سرویسی استفاده خواهیم کرد که آگاهی کاملی از تمامی نامهای موجود در شبکه به همراه آدرسهای آیپی آنها داشته باشد و بتواند درخواستهای مورد نظر در خصوص تبدیل و ترجمه نام به آدرس آیپی را به درستی انجام دهد.
کمی به جمله قبل دقت کنید: “سرویسی که آگاهی کاملی از نامها و آدرسهای IP موجود در شبکه دارد” دقیقا به همین دلیل که DNS از تمامی نامها (اعم از نامهای سرور و نامهای کلاینت) و آدرسهای آیپی آگاه است امنیت آن نیز مهم و حیاتی جلوه میکند.
این سرویس مهم در صورت بروز شکست امنیتی، برای نفوذگران اطلاعات مهمی را در بر خواهد داشت:
- ساختار آدرسهای IP و آدرسهای IP فعال
- آدرسهای IP سرویسهای حساس و حیاتی شبکه و نیز اسامی آنها
- هدایت ترافیک شبکه به مقصدی خاص با وارد نمودن اسم و آدرس تقلبی
- استفاده از آدرسهای سایر افراد در شبکه در جهت مقاصد غیر قانونی
- ایجاد اختلال در سرویس و یا توقف آن به منظور مختل نمودن ارتباطات شبکه
بنابراین آشنایی با خطراتی که سرویس DNS را تهدید میکند و نحوه رفع این خطرات و در نهایت ایمنسازی سرویس DNS امری مهم به نظر میرسد. پیش از آنکه به بحث امنیت در سرویس DNS بپردازیم ابتدا به خطرات موجود اشاره میکنیم:
- Zone file compromise
- Zone information leakage
- Compromised dynamic updates
- DNS client flooding (denial of service)
- Cache poisoning
Zone File Compromise
در ساختار DNS مبتنی بر ویندوزهای سرور، سرویس دهنده DNS حاوی یک Zone یا ناحیهای است که مسئول معتبر پاسخدهی در آن ناحیه محسوب میشود. به عبارت دیگر این Zone حاوی اطلاعات و یا رکوردهایی است که نشانگر نام و آدرس آیپی کامپیوترهای داخل شبکه خواهد بود. بطور پیشفرض Administrator میتواند سرویس DNS را با استفاده از کنسول مدیریتی آن و یا دستور متناسب مدیریت نموده و Resource Recordها را ویرایش نماید. یکی از خطراتی که ساختار DNS را تهدید میکند این است که نفوذگر بتواند مستقیماً و یا از راه دور به کنسول مدیریتی DNS دسترسی پیدا کرده و آن را به دلخواه خود تغییر دهد. نکته مهم امنیتی در این بخش این است که سرویس DNS تنها برای افراد دارای صلاحیت (Authorized)فعال بوده و سایر افزاد مجوز دسترسی به آن را نداشته باشند. این مجوز دسترسی بهتر است هم بصورت لوکال و هم بصورت ریموت و نیز برای کاربر و حتی ماشین تعریف گردد.
Zone Information Leakage
Zone در یک DNS حاوی اسامی کامپیوترها و آدرسهای آیپی متناظر با آنهاست. این Resource Recordها فارغ از این که بصورت دستی در DNS ثبت شده باشند و یا اینکه ثبت آنها با استفاده از Dynamic Update باشد میتواند اطلاعات مهمیرا در اختیار نفوذگر قرار دهند. نشت اطلاعات از Zone زمانی اتفاق میافتد که نفوذگر بتواند بر اساس نام یک سرور به Role یا نقش آن در شبکه پی ببرد. به عنوان مثال DCSRV میتواند نامی باشد که به سرور Domain Controller اشاره دارد. مسلم است که این اطلاعات ساده میتواند به نفوذگر در اقدامات بعدی کمک موثری داشته باشد! نفوذگر به طرق مختلفی میتواند اسامیکامپیوترهای موجود در شبکه را بدست آورد. بعنوان مثال چنانچه Zone Transfer بر روی سرور DNS فعال باشد مکانیسم تبادل Zone براحتی میتواند اطلاعات شما را در اختیار نفوذگر قرار دهد. حتی اگر Zone Transfer نیز فعال نباشد اما نفوذگر کمیحوصله کار داشته باشد میتواند بر اساس Queryهایی از نوع Reverse DNS به ساختار نام شبکه دسترسی پیدا کند.
در کنار این موضوع، آگاهی از آدرسهای آیپی فعال در شبکه نیز میتواند نفوذگر را در کار خود چند قدمی به جلو حرکت دهد. به عنوان مثال دیگر نیازی نیست Range زیادی از آدرسهای آیپی را برای آگاهی از آدرسهای فعال اسکن کند. همچنین با آگاهی از آدرسهای آیپی غیر فعال میتواند با استفاده از همان آدرسها سرویسهای تقلبی به نفع خود در شبکه راه اندازی کند.
Compromised Dynamic Updates
همانطور که میدانید DNS Dynamic Update مزیت بسیار بزرگی برای راهبران شبکه محسوب میشود چراکه این راحتی را در اختیار راهبر قرار میدهد که بدون نیاز به ثبت اسامی و آدرسهای آیپی کامپیوترها بصورت دستی، ثبت و به روز رسانی آنها بصورت پویا و اتوماتیک صورت پذیرد.
بطور کلی Dynamic Update به دو صورت Secure و Unsecure انجام میشود. در حالت ایمن، کلاینت موظف است عملیات Authentication را (مثلا با استفاده از نام کامپیوتر خود که پیش از این در Active Directory ثبت شده است) انجام دهد. در حالت غیر ایمن نیز عملیات Authentication انجام نمیشود و هر کلاینتی میتواند رکورد خود را در DNS ثبت نماید.
البته این را نیز باید بدانید که Secure Dynamic Updateها همیشه و در هر شبکه ای یکسان نیستند. به عنوان مثال تصور کنید که در شبکهای تنها کاربران گروه Administrator اجازه Join کردن کامپیوتر به شبکه را داشته باشند. در این حالت ایمنی از حالت نرمال بالاتر خواهد رفت چراکه راهبر شبکه حتما توانایی تشخیص کامپیوتر مطمئن را از غیر مطمئن خواهد داشت. در همین حال اگر سایر کاربران نیز توانایی Join به شبکه را داشتن باشند قطعاً امنیت پایینتری را خواهید داشت.
هنگامیکه پروسه Dynamic Update در معرض خطر قرار گرفته و شکسته میشود آنگاه نفوذگر میتواند اطلاعات موجود در Resource Recordهای کلیدی و حساس را تغییر دهد. به عنوان مثال با وارد نمودن یک اسم تقلبی ترافیک را به سمت مقصد خاص هدایت کند.
DNS Client Flooding
اگر تا به حال بر روی سرور DNS حمله DoS را تجربه نکردهاید باید بگوییم که جزو افراد خوش شانس محسوب میشوید. Queryهای DNS، Authenticate نمیشوند و DNS همواره سعی بر این دارد که درخواستهای واصله را پاسخ دهد. این بدین معنی است که به راحتی میتوان حملهای بصورت Distributed Denial of Service بر علیه سرویس DNS راه اندازی کرده و بعد از مدتی مناسب سرویس را از کار انداخت. پس از غیرفعال شدن سرویس، نفوذگر زمان کافی در اختیار خواهد داشت تا یک سرویس تقلبی DNS را راه اندازی کرده و درخواستهای واصله را به دلخواه نفوذگر پاسخ دهد. در این حالت کاربران به هیچ طریقی نمیتوانند از تقلبی بودن سرویس دهنده DNS آگاهی پیدا کنند. حال به راحتی نفوذگر میتواند بعنوان مثال ترافیک را به سمت سایتهای تقلبی و مشابه با سایتهای اصلی هدایت کرده و حسابهای کاربری و رمز عبور کاربران را بدست آورد.
Cache Poisoning
همانطور که میدانید سرویس دهنده DNS گاهی به منظور ارایه پاسخ به درخواستهای واصله موظف است از دیگر سرویس دهندههای DNSای پرسش نموده و اطلاعات بدست آمده را برای ارایه در درخواستهای بعدی در حافظه موقت (Cache)خود ذخیره نماید. این اطلاعات برای مدتی معین در حافظه ذخیره شده و در زمان دریافت درخواست بعدی که پاسخ آن در Cache موجود است، کارآیی DNS در ارایه پاسخ افزایش خواهد یافت. در کنار افزایش کارآیی سرویس DNS، مشکل امنیتی نیز ممکن است بوجود آید. DNS Cache Poisoning زمانی اتفاق میافتد که سرویسهای DNS از یک سرویس دهنده دیگر سوال کرده و سرویس دهنده دوم اطلاعات غلط در اختیار DNS قرار میدهند. در اغلب اوقات سرویس دهنده DNS دوم که اطلاعات غلط در اختیار قرار داده، قبلا توسط نفوذگر تسخیر شده است.
DNS Cache Poisoning به این دلیل اتفاق میافتد که سرویس دهنده اصلی DNS از صحت اطلاعات بدست آمده آگاهی نداشته و همچنین خود به بررسی و اعتبار سازی آن نیز نمیپردازد. در این حالت اطلاعات غلط در Cache قرار گرفته و درخواستهای کلاینتها در نوبتهای بعدی با این اطلاعات پاسخ داده خواهد شد.
منبع: computernews