
یکی از تحولاتی که در دنیای اینترنت رخ داد، به وجود آمدن DNS بود. به کمک این سیستم، نیاز به حفظ کردن اعداد طولانی برای رسیدن به سایتها از بین رفت. به این ترتیب کاربران میتوانند فقط با نوشتن نام دامنه یک سایت وارد آن شوند. بیایید که میخواهیم یک داستان برایتان بگوییم.
فرض کنید بهعنوان توریست در کشوری غریب هستید و میخواهید از محلی به محل دیگر بروید. سادهترین انتخابی که پیش رویتان قرار دارد استفاده از ناوگان حملونقل عمومی مانند تاکسی است! از آنجایی که تشخیص تاکسیها در کشورهای مختلف کار خیلی سختی نیست، با دیدن اولین ماشین زرد دستتان را بلند میکنید تا شما را سوار کند؛ اما به این فکر کردهاید که شاید در این کشور نظارت چندانی روی تاکسیها نباشد؟ اگر یک سارق با تاکسی جعلی شما را سوار کند و همهچیزتان را بدزدد تکلیف چیست؟!
نه اینکه بخواهیم دلتان را خالی کنیم، اما خوب کلیت سیستم DNS هم امنیت تضمینشده ندارد. در داستان بالا کشور غریب را دنیای اینترنت درنظر بگیرید، ناوگان حملونقل عمومی همان سیستم DNS است و سارق تاکسیران هم هکرهای همیشه در صحنه!
برای افزایش امنیت این سیستم، پروتکلی با نام DNSSEC طراحی شده است و این مقاله هم راجع به همین پروتکل است.
قبل از اینکه با پروتکل DNSSEC آشنا شوید، بیایید تعریف DNS را مرور کنیم.
DNS چیست و چه وظیفهای دارد؟
قبلاً در مقالهای بهطور کامل و مفصل راجع به DNS صحبت کردهایم. این مقاله با عنوان DNS چیست؟ آشنایی با نیمسرور در قرار دارد؛ اما از آنجایی که در این مقاله هم به تعریف این مفهوم نیاز داریم، اجازه دهید اشاره کوتاهی به آن داشته باشیم.
DNS مخفف Domain Name System است. بهسادهترین بیان، DNS را میتوان به دفترچه تلفن دنیای وسیع اینترنت تشبیه کرد. سرورهایی که وظیفه دارند نامهای دامنه را، برای فهم کامپیوترها، به آدرسهای IP تبدیل کنند.
اما یک مشکل وجود دارد. این سیستمها در ابتدا بدون هیچگونه امنیتی طراحی شدند و تا مدت زیادی هم بدون مشکل به کار خود ادامه دادند. تا این که هکرها فهمیدند سوءاستفاده از این سهلانگاری ممکن است و شروع به آزار و اذیت کاربران کردند. یکی از رایجترین حملاتی که آنها با استفاده از این رخنه امنیتی انجام میدهند، DNS Spoofing نام دارد!
DNS Spoofing چیست و چگونه انجام میشود؟
حملات DNS Spoofing با روشهای مختلفی اجرا میشوند؛ یکی از پراستفادهترین روشها، حمله مرد میانی یا Man In The Middle است. توصیه من این است که مقاله انواع حملات سایبری را بخوانید تا بیشتر با انواع روشهای هک آشنا شوید.
نمیخواهیم موضوع را تخصصی و پیچیده کنیم. در DNS Spoofing که به خاطر ضعف امنیتی DNSها ممکن میشود، فردی که قصد بازدید از یک سایت را دارد، توسط هکرها به سایت دیگری هدایت میشود. این سایت میتواند یک کپی بینقص از سایت اصلی باشد که برای اجرای حملات فیشینگ، یا کسب اطلاعات حساس کاربران، طراحی شده است.
تصویر زیر بهخوبی این فرایند را نشان میدهد:
این ناامنی بیشازحدِ نیمسرورها یا همان DNS، باعث بهوجود آمدن پروتکل امنیتی DNSSEC شد.
DNSSEC چیست و چگونه باعث افزایش امنیت میشود؟
DNSSEC مخفف Domain Name System Security Extension است و مشکل ناامنی سیستم نام دامنه یا همان نیمسرور را از بین میبرد. استفاده از این افزونه برعهده وبسایتها است تا با استفاده از آن هم از سایت خودشان و هم از بازدیدکنندگانشان محافظت کنند.
در سال ۲۰۱۶ حملهای گسترده از جانب هکرها رخ داد که منجر به آلودگی صدها هزار دستگاه متصل به اینترنت شد. این حمله که در زمان خود جزو بزرگترین حملات سایبری محسوب میشد، کمپانی مطرح Dyn را هدف قرار داده بود. این کمپانی در زمینه DNS به سایتهای بزرگی مانند BBC، CNN و حتی اسپاتیفای خدمات ارائه میکرد. بعد از این حمله بود که نیاز به افزایش امنیت DNSها احساس شد و DNSSEC به وجود آمد.
DNSSEC با رمزنگاری (Cryptography) و امضای دیجیتال (Digital Signature) کار میکند.
رمزنگاری (Cryptography) چیست؟
در دنیای اینترنت، برای رمزگذاری دادههای مختلف از Cryptography استفاده میشود. شاید باورتان نشود، اما رمزگذاری همیشه برای مخفی کردن پیامها استفاده نمیشود و میتوان از آن برای تائید درستی – یا نادرستی – دادهها هم استفاده کرد.
در سیستم DNSSEC هم، Cryptography وظیفه احراز هویت رکوردها را بر عهده دارد.
خیلی ساده و خودمانی درمورد رمزنگاری بگوییم که این کار به روشهای گوناگونی انجام میشود. رمزنگاری مدنظر ما در موضوع DNSSEC، رمزنگاری کلید عمومی (Public Key Cryptography) است.
در این روش اطلاعات توسط یک جفت کلید رمزگذاری میشوند. اصطلاحاً این کلیدها به کلید عمومی و کلید خصوصی معروف هستند. برای رمزگشایی پیامی که با کلید خصوصی رمزنگاری شده است، باید از کلید عمومی استفاده کنید و برعکس!
امضای دیجیتال (Digital Signature) چیست؟
امضای دیجیتال هم روش تکمیلی برای رمزنگاری دادهها است. از این امضا برای راستیآزمایی پیامهای دریافتی توسط منابع ناشناس استفاده میشود و جعل آنها کار بسیار سختی است (تقریباً غیرممکن!).
وقتی صحبت از امضای دیجیتال در پروتکل DNSSEC باشد، دادهها ابتدا توسط توابع هش، به خروجیهای مختلفی تبدیل میشوند. (توابع هش، توابع ریاضی هستند که وظیفه تبدیل دادهها به اعداد طبیعی را دارند) سپس اطلاعات با امضای دیجیتال تکمیل و توسط یک کلید خصوصی برای طرف دیگر ارسال میشوند.
اگر طرف مقابل کلید عمومی را داشته باشد، میتواند به محتویات پیام دست پیدا کند. حالا برای اینکه از درستی پیام اطمینان حاصل شود، فقط کافی است آن را وارد تابع هش کند و خروجی را با تابعی که در اختیار دارد مقایسه کند. اگر تفاوتی وجود نداشته باشد، یعنی پیام توسط شخص سومی (مثلاً هکر) دستکاری نشده است!طرز کار امضای دیجیتال در تصویر زیر نمایش داده شده است.
در تصویر بالا پوریا باید کلید عمومی مهرداد را داشته باشد تا پیام او را دریافت کند.
پس DNSSEC چگونه کار میکند؟! عجله نکنید، ابتدای بیایید رکوردهای آن را بشناسیم.
رکوردهای مرتبط با DNSSEC
همانطور که گفتیم، DNSSEC وظیفه دارد اعتبار پاسخهایی که از جانب DNS به مرورگر بازدیدکنندگان ارسال میشود را تائید کند. این کار با رمزنگاری امضاهای دیجیتال روی رکوردهای DNS انجام میشود. برای این که DNSSEC بتواند بهدرستی کار کند، چند رکورد جدید به رکوردهای موجود در DNS اضافه میشوند. در ادامه به این رکوردها آشنا میشوید.
RRset
تمام رکوردهایی که نام، نوع و کلاس یکسان دارند، درون یک RRset قرار میگیرند. درست مانند پوشهای که حاوی یک فیلم بههمراه فایل زیرنویس و عکس کاور آن است. مثلاً تمام رکوردهای NS مربوط به یک دامنه، داخل یک RRset قرار میگیرند.
Resource Record Signature (RRSIG)
تمام RRsetها یک امضای دیجیتال دارند. RRSIG رکوردی است که امضای دیجیتال یک RRset را درون خود دارد.
DNSKEY
این رکورد وظیفه نگهداری از کلید عمومی را دارد. کلید عمومیای که در فرایند احراز هویت DNS مورد استفاده قرار میگیرد.
وقتی یک DNS پاسخی از جانب DNSSEC دریافت میکند، با استفاده از این کلید عمومی درستی امضای دیجیتال باقی رکوردها را تائید میکند. یک سرور نام معتبر، باید کلید عمومیای در اختیار داشته باشد که با کلیدهای خصوصی سازگاری داشته باشد. همان کلیدهای خصوصی که برای امضای رکوردها استفاده میشوند.
DS
این رکورد مخفف Delegation Signer است؛ تفویض اختیار (Delegation) در DNS، فرایند تقسیم فضای DNS به چند محدوده متفاوت است. در واقع رکورد DS، تابع هش کلید عمومیای است که به اصطلاح در محدوده والدین قرار میگیرد.
وقتی یک سرور بخواهد به دادههایی از محدوده – اصطلاحاً – کودکان دسترسی پیدا کند، باید DSNKEYای که در این بخش وجود دارد را تائید کند. برای انجام این کار، سرور DNSKEY را وارد یک تابع هش – که از قبل در اختیار داشته– میکند. سپس باید خروجی را با تابع هش DS مقایسه کند. اگر تناقضی وجود نداشته باشد، سرور میتواند به تمام رکوردهای موجود در محدوده کودکان اعتماد کند.
نکته: منظور از محدوده والدین و محدوده کودکان در این قسمت، بزرگی و کوچکی هر قسمت است. محدوده والدین یک بخش بزرگ است و محدوده کودکان بخشهای کوچکتر.
NSEC
این رکورد مخفف Next Secured Record است. وظیفه این رکورد این است که در صورت موجود نبودن نام دامنه درخواستی، نام دامنه بعدی – با بیشترین تشابه – را نشان دهد. بدون NSEC، سیستم DNS درخواستهایی که نامی برای آنها یافت نمیشود را کلاً بدون پاسخ میگذارد.
مشکلی که در رابطه با این رکوردها وجود دارد، NSEC-Walking است؛ یعنی هکرها میتوانند به تمام محتویات یک محدوده دسترسی داشته باشند. چگونه؟ خیلی ساده! فقط کافی است رکورد NSEC را کندوکاو کنند.
NSEC3
این رکورد وظیفه حل مشکل NSEC-Walking را برعهده دارد. این کار با رمزنگاری توسط هش روی تمام نامها انجام میشود.
NSEC3 Parameters (NSEC3PARAM)
DNS باید بتواند تشخیص دهد که از کدام رکوردهای NSEC3، در پاسخ به DNSSEC برای نامهای دامنهای که وجود ندارند استفاده کند. این رکورد حاوی اطلاعات لازم برای این پاسخ است.
حالا وقت آن است که ببینیم این قهرمان داستان ما، یعنی DNSSEC چگونه کار میکند.
آشنایی با طرز کار DNSSEC در ۷ مرحله
تا به اینجای مقاله فهمیدید که DNS یا نیمسرور، خیلی ایمن نیست و این ناامنی زمینه را برای تاختوتاز هکرها فراهم میکند. DNSSEC برای رفع این مشکلات معرفی شد. این سیستم طی ۷ مرحله امنیت کاربران و سایتها را تامین میکند.
مرحله اول
وقتی آدرس یک سایت را در نوار URL مرورگرتان وارد میکنید، مرورگر برای پیدا کردن IP آن سایت، شروع به جستوجو در DNS کامپیوترتان میکند. اگر قبلاً وارد آن سایت شده باشید، به احتمال خیلی زیاد، آدرس آیپی در حافظه کش کامپیوتر وجود دارد و بدون نیاز به کمک خارجی، وارد سایت مدنظرتان میشوید.
مرحله دوم
اگر آیپی سایت موردنظر در حافظه کَش وجود نداشته باشد، درخواست به یک سرور بازگشتی ارسال میشود. این سرور توسط ارائهکننده سرویس اینترنتتان (ISP) مدیریت میشود.
مرحله سوم
اگر آدرس IP منطبق با نام دامنهای که به دنبال آن هستید در سرور ISP هم موجود نباشد به این مرحله میرسیم. در اینجا جستوجو برای سرور DNSای که به کارتان بیاید شروع میشود؛ یعنی سروری که اطلاعات معتبر در رابطه با نام دامنهای که به دنبال آن هستید را درون خود داشته باشد.
مرحله چهارم
این مرحله با جستوجو در پسوند دامنه مربوطه شروع میشود. مثلاً اگر میخواهید وارد Iranserver.com شوید، جستوجو در DNS جهانی پسوند com انجام خواهد شد.
مرحله پنجم
پس از ورود به DNS دامنههای سطح اول (TLD)، جستوجو برای نام دامنه درخواستی آغاز میشود که همان Iranserver.com است.
توجه: برای آشنایی با انواع مختلف پسوندهای دامنه، میتوانید راهنمای انواع پسوند دامنه را بخوانید.
مرحله ششم
در تمامی مراحل سرور درخواست کلید DNSSECای را میکند که با محدوده آن DNS – در اینجا com – سازگار باشد. این مرحله هم همینطور است.
سرور DNS درخواست یک کلید DNSSEC میکند که قفل محدوده پسوندهای com را باز کند. پاسخی که دریافت میشود شامل رکورد RRSIG است که این کلید را درون خود دارد.
مرحله هفتم
سرور بازگشتی رکورد RRSIG از راه رسیده را ارزیابی میکند. اگر اعتبار آن تائید شود و اطمینان حاصل شود که در میان راه تغییری در آن ایجاد نشده است، در نهایت کاربر به سایت مدنظر خود منتقل خواهد شد.
تمامی این مراحل در کسری از ثانیه انجام میشوند و شما – در صورت تائید درستی آدرس – خیلی سریع به سایت مدنظرتان هدایت میشوید.
اگر فکر میکنید DNSSEC نهایت امنیت است و هیچ ایرادی ندارد، سخت در اشتباهید!
مزایا و معایب پروتکل DNSSEC
پروتکل DNSSEC در کنار تمام ویژگیهای خوبی که دارد، خالی از ایراد هم نیست! پس بیایید اول نگاهی کلی به مزایای آن داشته باشیم و بعد هم به معایب آن بپردازیم.
مزایای پروتکل DNSSEC
احتمالاً بزرگترین مزیتی که این پروتکل امنیتی ایجاد میکند، دفاع از کاربران در برابر حملات هکرها مانند مرد میانی یا MITM، DNS Spoofing، Cache Poisoning و … است.
وقتی این خطرها از بین بروند، خیالتان از خیلی جهات راحت میشود و میتوانید با تمرکز بیشتری روی فعالیتهای آنلاینتان تمرکز کنید. همچنین خیال مشتریانتان هم راحت میشود و میتوانند اعتماد بیشتری به شما داشته باشند. پس مزیت بعدی افزایش اعتماد بازدیدکنندگان است.
در کنار این مزایا، DNSSEC معایبی هم دارد.
معایب پروتکل DNSSEC
اگر بگوییم بیشتر معایب پروتکل DNSSEC صرفاً به خاطر نوظهور بودن آن است، برایتان عجیب است؟!! حقیقت همین است! این پروتکل هنوز توسط بسیاری از سرورهای DNS پشتیبانی نمیشود و زمان بیشتری برای جا افتادن نیاز دارد.
یکی از بدترین عیبهای DNSSEC پیچیدگیای است که در هر دو طرف سرور و کلاینت ایجاد میکند. اگر هم بخواهید از این پیچیدگی کم کنید باید هزینه بیشتری بپردازید!
تمام این معایب میتوانند با گذشت زمان و ارائه آپدیتهای جدید از بین بروند و در نقطه مقابل به مزایای این پروتکل تبدیل شوند. با این اوصاف شاید استفاده از پروتکل DNSSEC مناسب همه سایتها نباشد.
چه سایتهایی باید از DNSSEC استفاده کنند؟
استفاده از پروتکل DNSSEC میتواند برای تمام سایتها مناسب باشد؛ اما با توجه به ایراداتی که در مورد آنها صحبت کردیم، شاید بهتر باشد با توجه به ماهیت سایتتان تصمیم بگیرید. مثلاً اگر سایت فروشگاهی دارید، بهتر است از این پروتکل استفاده کنید تا خدایی نکرده پول بازدیدکنندگانتان (مشتریان) دزدیده نشود!
بعد از آن باید از سرور DNSای که آیپی سایتتان روی آن قرار گرفته اطمینان حاصل کنید؛ اطمینان از این جهت که این پروتکل را پوشش دهد. بعد از آن نگاهی به بودجهتان بیندازید؛ آیا تامین هزینه DNSSEC برایتان صرف اقتصادی دارد؟
در کل میتوان گفت DNSSEC، پروتکلی است که داشتن آن نه لزوماً مفید است و نه لزوماً مضر! اما در بسیاری موارد بد نیست که از آن استفاده کنید.
حرف آخر
چه بخواهید و چه نخواهید، هنگام کار با اینترنت در حال استفاده از DNSها هستید. حقیقت غیرقابل انکاری وجود دارد و آن هم اینکه این سرورها امنیت زیادی ندارند! هکرها میتوانند با استفاده از رخنههای موجود در این سیستم برایتان دردسر درست کنند.
پروتکل DNSSEC برای رفع این رخنهها معرفی شده و تا حد بسیار زیادی هم دست هکرها را برای اجرای حملات از این طریق کوتاه کرده است؛ البته این پروتکل معایبی هم دارد که احتمالاً با گذشت زمان از بین میروند و عملکرد آن را بهتر هم میکنند.
برای نوشتن این مقاله از سایتهای معتبری کمک گرفتیم که در ادامه نام آنها را مشاهده میکنید:
درضمن علاوه بر مقاله DNS چیست که در طول متن دو بار به آن اشاره کردیم، مقاله DNS پویا چیست هم با این موضوع مرتبط است و میتوانید برای افزایش دانشتان آن را مطالعه کنید.
نظر شما چیست؟ استفاده از DNSSEC را برای افزایش امنیت توصیه میکنید؟
منبع