آنچه در این مقاله میخوانید
جستوجوی DNS بازگشتی، زمانی رخ میدهد که سرور DNS با چندین سرور DNS دیگر ارتباط برقرار میکند تا آدرس IP را پیدا کند. برخلاف Recursive DNS، جستوجوی DNS تکراری اینگونه است که کلاینت، مستقیماً با هر سرور DNS درگیر در جستوجو ارتباط برقرار میکند.
سرور DNS چیست؟
هر زمان که کاربری، نام دامنهای را در مرورگر خود تایپ میکند این عمل منجر به جستوجوی DNS میشود. سپس عدهای از رایانهها که معروف به سرورهای DNS هستند آدرس IP آن دامنه را پیدا میکنند تا کاربران بتوانند به وبسایت صحیح دسترسی داشته باشند.
انواع مختلف سرورهای DNS در کنار هم کار میکنند تا جستوجوی DNS را تکمیل کنند. DNS resolver ،DNS root server ،DNS TLD server و DNS authoritative همگی باید اطلاعاتی را برای تکمیل جستوجو ارائه دهند. هنگام ذخیرهسازی، یکی از این سرورها ممکن است پاسخ را در جستوجوی قبلی ذخیره کرده باشد و سپس آن را از حافظه تحویل دهد.
تفاوت بین بازگشت و تکرار چیست؟
بازگشت و تکرار اصطلاحات علوم کامپیوتر هستند که دو روش مختلف را برای حل مسئله توصیف میکنند. در بازگشت، تا زمانی که شرطی برآورده شود، برنامه بهطور مکرر خود را فراخوانی میکند. در حالی که در تکرار، مجموعهای از دستورالعملها تکرار میشود تا آن شرط برآورده شود. نشاندادن تفاوت این دو بدون ورود به کد دشوار است اما نکته کلیدی این است که بازگشت، راهحلی است که بارها و بارها خود را فرا میخواند.
داشتن درک عمیق از بازگشت و تکرار برای فهمیدن تفاوت بین جستوجوی Recursive DNS و تکراری ضروری نیست. در جستوجوی بازگشتی، سرور DNS بازگشت را انجام داده و آنقدر به جستوجوی سایر سرورهای DNS ادامه میدهد تا آدرس IP برای بازگشت به کلاینت (اغلب سیستمعامل کاربر) را داشته باشد. در جستجوی تکراری DNS، هر کوئری بهطور مستقیم به کلاینت پاسخ داده و آدرس یک سرور DNS دیگر را برای پرسیدن ارائه میدهد و کلاینت به پرسوجو از سرورهای DNS ادامه میدهد تا یکی از آنها آدرس IP صحیح برای دامنه موردنظر را برگرداند.
به عبارت دیگر، کلاینت شکلی از تفویض اختیار را در جستوجو Recursive DNS انجام میدهد. به حلکننده DNS میگوید: «من به آدرس IP برای این دامنه نیاز دارم. لطفاً آن را پیدا کن و تا زمانی که پیدایش تکردی به من برنگرد.» در جستوجو تکراری، کلاینت به حلکننده DNS میگوید: «من به آدرس IP برای این دامنه نیاز دارم. لطفاً آدرس سرور DNS بعدی را در فرآیند جستوجو به من بده تا بتوانم خودم آن را جستوجو کنم.»
مزایای Recursive DNS چیست؟
جستوجوهای Recursive DNS معمولاً سریعتر از جستوجوهای تکراری انجام میشود. این سرعت بهدلیل ذخیرهسازی است. سرور Recursive DNS پاسخ نهایی هر جستوجویی که انجام میدهد را ذخیره و برای مدت زمان مشخصی (معروف به Time To Live) ثبت میکند.
هنگامیکه حلکننده بازگشتی، کوئریای برای یک آدرس IP دریافت میکند که قبلاً در حافظه پنهان (cache) خود دخیره کرده بود، میتواند بدون اینکه با سرورهای دیگر DNS ارتباط برقرار کند، بهسرعت پاسخ ذخیرهشده را به کلاینت ارائه دهد. ارائه سریع پاسخ از حافظه پنهان بسیار محتمل است اگر الف) سرور DNS به تعداد زیادی کلاینت خدمترسانی کند و/یا ب) وبسایت موردنظر بسیار محبوب باشد.
معایب Recursive DNS چیست؟
اجازهدادن به جستوجوهای بازگشتی DNS در سرورهای DNS باز، آسیبپذیری امنیتی ایجاد میکند زیرا این پیکربندی میتواند مهاجمان را قادر سازد تا حملات تقویت DNS و مسمومیت حافظه پنهان DNS را انجام دهند.
سرورهای Recursive DNS و حملات تقویت DNS
در یک حمله تقویت DNS (DNS Amplification Attack)، مهاجم معمولاً از گروهی از ماشینها (که به آنها باتنت گفته میشود) استفاده میکند تا حجم زیادی از کوئریهای DNS را با استفاده از یک آدرس IP جعلی ارسال کند. آدرس IP جعلی شبیه به یک آدرس برگشت تقلبی است؛ مهاجم درخواستها را از IP خود ارسال میکند، اما از سرور میخواهد که پاسخها به قربانی ارسال شوند. برای تشدید حمله، مهاجم از تکنیکی به نام تقویت (Amplification) استفاده میکند، که در آن درخواست جعلی پاسخی بسیار طولانی را طلب میکند. سرویس قربانی با سیلی از پاسخهای طولانی و ناخواسته DNS مواجه میشود که میتواند عملکرد سرورهای آن را مختل کند یا حتی از کار بیندازد. این نوعی حمله توزیعشده منع سرویس (DDoS) است.
سرور DNS که جستوجوهای بازگشتی را میپذیرد برای انجام این نوع حمله مورد نیاز است زیرا بستههای DNS تقویتشده، پاسخی به جستوجوهای بازگشتی DNS هستند.
سرورهای Recursive DNS و حملات مخرب به حافظه پنهان DNS
در حمله مخرب حافظه پنهان DNS (DNS Cache Poisoning)، زمانی که یک سرور بازگشتی DNS از یک سرور دیگر درخواست آدرس IP میکند، مهاجم این درخواست را رهگیری کرده و پاسخی جعلی ارائه میدهد که معمولاً آدرس IP وبسایتی مخرب است. سرور بازگشتی DNS نهتنها این آدرس IP را به کلاینت اصلی ارسال میکند، بلکه پاسخ را در حافظه پنهان خود نیز ذخیره میکند. هر کاربری که درخواست آدرس IP برای همان نام دامنه را داشته باشد، به وبسایت مخرب هدایت خواهد شد. اگر نام دامنه و حلکننده DNS محبوب باشند، این حمله میتواند بر هزاران کاربر تأثیر بگذارد.
در یک جستجوی تکراری DNS، کلاینت مستقیماً از هر سرور DNS پاسخ را میپرسد. حتی اگر مهاجم بتواند پاسخی جعلی به این پرسوجو ارسال کند، تنها بر یک کلاینت تأثیر میگذارد، که معمولاً ارزش صرف زمان برای مهاجم را ندارد.
- جستوجوی Recursive DNS چه تفاوتی با جستوجوی تکراری DNS دارد؟
در جستوجوی Recursive DNS، سرور بازگشتی تمام فرآیند جستوجو را مدیریت میکند و تا زمانی که آدرس IP نهایی را پیدا نکند، به کلاینت پاسخ نمیدهد. در مقابل، در جستوجوی تکراری DNS، کلاینت مستقیماً با هر سرور DNS تعامل میکند و آدرس سرور بعدی را برای ادامه جستوجو درخواست میکند تا زمانی که پاسخ نهایی را بیابد.
- چرا حملات تقویت DNS (DNS Amplification) خطرناک هستند؟
در حملات تقویت DNS، مهاجم با ارسال کوئریهای جعلی و درخواست پاسخهای طولانی، ترافیک سنگینی را به سمت سرور قربانی هدایت میکند. این کار میتواند سرورها را از کار بیندازد یا عملکرد آنها را مختل کند. این حمله به سرورهای Recursive DNS نیاز دارد، زیرا آنها پاسخهای طولانی را به کوئریهای بازگشتی ارائه میدهند.
- چگونه حملات مسمومسازی حافظه پنهان DNS (DNS Cache Poisoning) کاربران را تحت تأثیر قرار میدهد؟
در حمله مسمومسازی حافظه پنهان، مهاجم پاسخ جعلی را به یک سرور بازگشتی ارسال میکند. این پاسخ در حافظه پنهان سرور ذخیره میشود و برای کاربران دیگر که همان دامنه را درخواست میکنند ارسال میگردد. این باعث میشود کاربران به وبسایتهای مخرب هدایت شوند. اگر سرور DNS یا دامنه موردنظر محبوب باشد، این حمله میتواند تعداد زیادی کاربر را تحت تأثیر قرار دهد.
این مقاله را به اشتراک بگذارید