ممکن است آدرس یک بانک آنلاین را درست در مرورگر وارد کنید، اما در نهایت به سروری جعلی برسید؛ آن هم بیآنکه خطای مشخصی ببینید. حملههای جعل DNS از همین نقطه سوءاستفاده میکنند، چون DNS در طراحی اولیهاش راهی برای سنجش اصالت پاسخها نداشت. برای فهم اینکه DNSSEC چیست، باید از همین ضعف شروع کرد. DNSSEC با افزودن امضای دیجیتال به دادههای DNS کمک میکند مشخص شود پاسخی که دریافت شده معتبر است یا در مسیر دستکاری شده است.
این مطلب از بلاگ مبین هاست به طور کامل به موضوع: «آموزش DNSSEC» میپردازد و علاوه بر چیستی و مزایا و محدودیتها، اشتباهات رایج هنگام فعالسازی DNSSEC را برمیشماریم. با ما تا انتهای این مطلب همراه باشید.
DNSSEC چیست؟
DNSSEC مخفف Domain Name System Security Extensions است؛ مجموعهای از افزونههای امنیتی که امکان بررسی اصالت دادههای DNS را با امضای دیجیتال فراهم میکنند. DNS در حالت عادی نام دامنهای مثل mobinhost.com را به آدرس IP سرور تبدیل میکند، اما در طراحی اولیۀ آن سازوکاری برای اثبات اصالت پاسخ وجود نداشت. در نتیجه، اگر کسی میتوانست پاسخ جعلی را جای پاسخ معتبر بنشاند، کاربر یا ریزالور راه مطمئنی برای تشخیص این دو از هم نداشت.
DNSSEC این ضعف را با استفاده از کلیدهای رمزنگاری برطرف میکند. رکوردهای DNS پیش از انتشار با کلید خصوصی امضا میشوند و ریزالور، پیش از پذیرفتن پاسخ، امضا را با کلید عمومی متناظر بررسی میکند. اگر امضا با دادۀ دریافتی همخوان نباشد، ریزالور نتیجه میگیرد که رکورد در مسیر تغییر کرده و آن را نمیپذیرد. این امضاها معمولاً از قبل روی زون تولید میشوند، نه هنگام پاسخدادن به هر درخواست؛ بنابراین فرایند امضاکردن فشار پردازشی مستقیمی در لحظۀ پاسخگویی ایجاد نمیکند.
چرا DNS به امنیت اضافه نیاز دارد؟
برای درک دلیل نیاز به DNSSEC، کافی است ببینیم DNS چیست و چطور کار میکند. DNS را میتوان شبیه دفترچه تلفن اینترنت در نظر گرفت: نام دامنه را میگیرد و آدرس IP متناظر را برمیگرداند. مسئله این است که این فرایند در شکل پایۀ خود، امضا یا سازوکاری برای تأیید اصالت پاسخ ندارد.
دو حملۀ رایج از همین ضعف استفاده میکنند. در DNS Cache Poisoning، مهاجم تلاش میکند پاسخ جعلی را پیش از پاسخ اصلی به ریزالور برساند. اگر این پاسخ وارد کش شود، تا پایان TTL رکورد (که بسته به تنظیمات ممکن است از چند دقیقه تا چند ساعت باشد) کاربران همان ریزالور میتوانند به مقصد جعلی هدایت شوند. در DNS Spoofing نیز پاسخ DNS در مسیر شبکه دستکاری میشود؛ آن هم معمولاً با هدف فرستادن کاربر به صفحۀ فیشینگ یا محتوای مخرب. برای یک فروشگاه اینترنتی یا سامانۀ پرداخت، چنین اتفاقی فقط به معنای اختلال موقت نیست و میتواند اعتماد کاربران را هم آسیب بزند.
برای اجرای این حملات لزوماً نیازی به دسترسی به رمز عبور یا سوءاستفاده از آسیبپذیری نرمافزاری سایت نیست و مشکل در خود لایۀ DNS قرار دارد و DNSSEC برای محافظت از همین بخش طراحی شده است.
پروتکل DNSSEC چگونه کار میکند؟
DNSSEC برای تشخیص پاسخ معتبر از پاسخ جعلی، رکوردهای DNS را با امضای دیجیتال همراه میکند. وقتی ریزالور یک پاسخ DNS دریافت میکند، امضای آن را با کلید عمومی مربوط به دامنه بررسی میکند تا مطمئن شود اطلاعات در مسیر تغییر نکردهاند و از منبع مورد اعتماد آمدهاند. این اعتبارسنجی فقط به یک رکورد محدود نیست؛ DNSSEC با ایجاد زنجیرهای از اعتماد میان ریشۀ DNS، پسوند دامنه و خود دامنه، امکان بررسی مرحلهبهمرحلۀ صحت پاسخ را فراهم میکند. در ادامه، اجزای اصلی این فرایند و رکوردهایی را که در آن نقش دارند، بررسی میکنیم.
1) زنجیرۀ اعتماد (Chain of Trust)
DNSSEC از یک ساختار سلسلهمراتبی به نام زنجیرۀ اعتماد استفاده میکند. این زنجیره از ریشۀ DNS شروع میشود و تا دامنۀ شما ادامه دارد. هر سطح، اعتبار سطح پایینتر را تأیید میکند: ریشه، پسوند دامنه را و پسوند دامنه، دامنۀ شما را. اگر یکی از حلقهها قابل تأیید نباشد، ریزالور زنجیره را نامعتبر در نظر میگیرد و پاسخ را نمیپذیرد.
قدرت DNSSEC به همین پیوستگی زنجیره برمیگردد. برای ساختن یک پاسخ جعلی معتبر، مهاجم باید زنجیرۀ اعتماد را از ریشه تا دامنۀ هدف بازسازی کند؛ کاری که بدون دسترسی به کلیدهای خصوصی هر سطح ممکن نیست. در این مدل، اعتبار پاسخ فقط به یک سرور یا یک رکورد وابسته نیست و کل مسیر در فرایند اعتبارسنجی نقش دارد.
2) رکوردهای کلیدی DNSSEC
چهار رکورد اصلی بخش مهمی از سازوکار DNSSEC را تشکیل میدهند. DNSKEY کلید عمومی دامنه را نگه میدارد و برای بررسی امضاها استفاده میشود. RRSIG امضای دیجیتال هر مجموعه رکورد، مانند A یا MX، را در خود دارد. DS شامل هش کلید عمومی دامنه است و در سطح بالاتر، یعنی پسوند دامنه، ثبت میشود تا حلقۀ زنجیره اعتماد تکمیل شود. رکوردهای NSEC یا NSEC3 نیز نشان میدهند نبودن یک رکورد واقعی است و نتیجۀ پنهانشدن آن در یک پاسخ جعلی نیست.
بیشتر ارائهدهندگان DNS برای مدیریت امضاها دو نوع کلید جدا در نظر میگیرند. کلید KSK عمر طولانیتری دارد و برای امضای DNSKEY استفاده میشود؛ در مقابل، ZSK رکوردهای دیگر زون را امضا میکند و معمولاً زودتر میچرخد. این تفکیک مدیریت چرخش کلیدها را سادهتر میکند و باعث میشود برای هر بار تغییر ZSK نیازی به ثبت دوبارۀ رکورد DS نباشد.
ترکیب این رکوردها به ریزالور اجازه میدهد مسیر اعتماد هر پاسخ DNS را دنبال کند و بررسی کند که دادهها در میانۀ راه تغییر نکردهاند.
مزایا و محدودیتهای DNSSEC
DNSSEC اصالت پاسخهای DNS را قابلبررسی میکند، اما در مقابل، حجم پاسخها و پیچیدگی مدیریت کلیدها را هم افزایش میدهد. جدول زیر تفاوت DNS معمولی و DNS مجهز به DNSSEC را خلاصه میکند.
| DNS با DNSSEC | DNS معمولی | ویژگی |
| هر مجموعه رکورد امضای دیجیتال دارد | ندارد | اعتبارسنجی پاسخ |
| عملاً مسدود | آسیبپذیر | مقاومت در برابر Cache Poisoning |
| بیشتر؛ بهدلیل رکوردهای RRSIG و DNSKEY | کمتر | حجم پاسخ DNS |
| نیازمند مدیریت و چرخش دورهای کلیدها | سادهتر | پیچیدگی مدیریت |
| چند میلیثانیه بیشتر؛ معمولاً غیرمحسوس | چند میلیثانیه | زمان پاسخدهی معمول |
DNSSEC محتوای درخواست و پاسخ DNS را رمزنگاری نمیکند. اگر کسی ترافیک DNS را ببیند، همچنان میتواند محتوای پرسش و پاسخ را بخواند؛ تفاوت در این است که دستکاری دادهها بدون ایجاد خطای اعتبارسنجی ممکن نیست.
برای رمزنگاری ترافیک DNS باید از پروتکلهایی مانند DoH یا DoT استفاده شود که نقش مکمل DNSSEC را دارند. از طرف دیگر، رکوردهای امضاشده حجم بیشتری دارند و گاهی پاسخ DNS برای جاگرفتن کامل دادهها از UDP به TCP منتقل میشود. این موضوع با EDNS0 مدیریت میشود و معمولاً به تنظیم دستی از سمت کاربر نیاز ندارد.
تفاوت DNSSEC و گواهی SSL در چیست؟
DNSSEC و SSL هر دو به امنیت دامنه مربوطاند، اما در دو بخش متفاوت کار میکنند. DNSSEC مرحلۀ تبدیل نام دامنه به آدرس IP را اعتبارسنجی میکند؛ یعنی کمک میکند ریزالور مطمئن شود پاسخ مربوط به mobinhost.com همان پاسخی است که باید دریافت شود. پس از رسیدن کاربر به سرور درست، گواهی SSL ارتباط میان مرورگر و سرور را رمزنگاری میکند و هویت سرور را به مرورگر اثبات میکند.
به بیان سادهتر، DNSSEC روی درستبودن مقصد تمرکز دارد و SSL از ارتباط با آن مقصد محافظت میکند. این دو جای یکدیگر را نمیگیرند و در کنار هم پوشش کاملتری ایجاد میکنند. اگر فقط SSL فعال باشد و پاسخ DNS دستکاری شود، کاربر ممکن است به مقصد دیگری برسد که گواهی SSL خودش را دارد. در چنین شرایطی وجود SSL بهتنهایی تضمین نمیکند که کاربر به دامنه و سرور مورد انتظار رسیده است.
آموزش فعالسازی DNSSEC روی دامنه
جزئیات فعال سازی DNSSEC ممکن است بین ریجیسترارها و سرویسهای DNS متفاوت باشد، اما روند کلی معمولاً شامل این 5 مرحله است:
- بررسی پشتیبانی ریجیسترار و DNS Provider: ابتدا مطمئن شوید هم شرکتی که دامنه را از آن تهیه کردهاید و هم سرویسدهندۀ DNS از DNSSEC پشتیبانی میکنند (البته بعضی پسوندهای دامنۀ ایرانی هنوز پشتیبانی کامل ندارند).
- فعالسازی DNSSEC روی زون دامنه: در پنل مدیریت DNS، گزینۀ مربوط به DNSSEC را فعال کنید. سرویس معمولاً جفتکلید عمومی و خصوصی را میسازد و رکوردهای DNSKEY و RRSIG را به زون اضافه میکند.
- دریافت رکورد DS: پس از فعالسازی، سرویس DNS رکورد DS را در اختیار شما قرار میدهد. این رکورد همان هشی است که باید در سطح بالاتر ثبت شود.
- ثبت رکورد DS در پنل ریجیسترار: وارد پنل مدیریت دامنه شوید و رکورد DS را ثبت کنید. با این کار، زنجیرۀ اعتماد از پسوند دامنه به زون شما متصل میشود.
- تست و اعتبارسنجی: در پایان، با ابزارهایی مانند DNSSEC Analyzer یا دستور dig با پرچم dnssec بررسی کنید که امضاها بهدرستی منتشر شدهاند و زنجیرۀ اعتماد خطایی ندارد.
اگر با تنظیم DNS دامنه آشنایی کافی ندارید، بهتر است پیش از فعالسازی DNSSEC، رکوردهای پایۀ دامنه را بررسی کنید. فعالکردن DNSSEC روی زونی که رکوردهای ناقص یا اشتباه دارد، عیبیابی را دشوارتر میکند.
نکتۀ کاربردی: بعد از ثبت رکورد DS، اثر تغییرات همیشه فوری دیده نمیشود. انتشار تنظیمات، بسته به TTL رکوردها، میتواند از چند ساعت تا 48 ساعت طول بکشد. در این فاصله، دامنهتان همزمان از دو مسیر قابل دسترسی خواهد بود؛ بنابراین نگران قطعی سرویس نباشید.
اشتباهات رایج هنگام فعالسازی DNSSEC
بخش زیادی از خطاهای DNSSEC به چند مورد مشخص برمیگردد. هنگام فعالسازی یا تغییر سرویس DNS، این موارد را با دقت بررسی کنید:
- ثبتنکردن یا ثبت اشتباه رکورد DS در ریجیسترار: اگر زون امضا شده باشد اما رکورد DS درست در سطح بالاتر ثبت نشده باشد، ریزالورها نمیتوانند زنجیرۀ اعتماد را کامل کنند و دامنه ممکن است از دسترس خارج شود.
- فراموشکردن تمدید یا چرخش کلیدها: کلیدهای DNSSEC دورۀ عمر مشخصی دارند و اگر در زمان مناسب جایگزین نشوند، امضاهای وابسته به آنها نامعتبر میشوند.
- تغییر رکوردهای DNS بدون امضای دوباره: در زونفایلهایی که دستی مدیریت میشوند، تغییرات باید دوباره امضا شوند، در غیر این صورت ریزالور اعتبارسنج آنها را رد میکند.
- انتقال دامنه بین ریجیسترارها بدون هماهنگی DNSSEC: باقیماندن رکورد DS قدیمی که به کلید قبلی اشاره میکند، میتواند باعث از دسترس خارج شدن دامنه شود.
هشدار: پیش از انتقال دامنه یا تغییر DNS Provider، وضعیت رکورد DS و تنظیمات DNSSEC را هماهنگ کنید. باقیماندن رکورد قدیمی یا اتصال آن به کلید اشتباه میتواند دامنه را برای ساعتها یا حتی روزها از دسترس خارج کند. بهتر است چنین تغییراتی را در بازهای کمترافیک انجام دهید.
جمعبندی
DNSSEC با امضای دادههای DNS و ایجاد زنجیرۀ اعتماد، امکان تشخیص پاسخ معتبر از پاسخ دستکاریشده را فراهم میکند. برای فعالسازی درست آن، هماهنگی میان سرویس DNS و ریجیسترار مهم است: پشتیبانی هر دو را بررسی کنید، رکورد DS را دقیق ثبت کنید و پس از اعمال تغییرات، وضعیت زنجیرۀ اعتماد را تست کنید.
DNSSEC اصالت پاسخهای DNS را بررسی میکند، اما ارتباط میان مرورگر و سرور را رمزنگاری نمیکند. این بخش بر عهدۀ گواهی SSL است. مبینهاست گواهیهای SSL را برای دامنههای ir و بینالمللی ارائه میدهد و میتوانید براساس نیاز سایت، گزینۀ مناسب را انتخاب و فعال کنید.
سؤالات متداول
آیا فعالسازی DNSSEC سایت را کند میکند؟
فعالسازی DNSSEC معمولاً اثر محسوسی روی سرعت بارگذاری سایت ندارد. آنچه بیشتر میشود حجم پاسخ DNS است، چون رکوردهای امضا هم، همراه پاسخ ارسال میشوند. این افزایش معمولاً در حد چند میلیثانیه است و کاربر آن را احساس نمیکند؛ ضمن اینکه این تأخیر برای هر رکورد در ریزالور رخ میدهد، نه در هر بار بازدید از سایت.
آیا DNSSEC جایگزین گواهی SSL میشود؟
خیر. DNSSEC و SSL در دو لایۀ متفاوت کار میکنند. DNSSEC اصالت پاسخ مربوط به تبدیل دامنه به IP را بررسی میکند و SSL ارتباط بین مرورگر و سرور را رمزنگاری میکند. برای پوشش هر دو بخش، استفادۀ همزمان از این دو سازوکار لازم است.
کدام دامنهها امکان فعالسازی DNSSEC را دارند؟
اغلب پسوندهای بینالمللی مانند com و net از DNSSEC پشتیبانی میکنند. در پسوندهای ملی شرایط یکسان نیست و باید پشتیبانی رجیستری و ریجیسترار را جداگانه بررسی کنید. بعضی دامنههای ir نیز امکان ثبت رکورد DS را دارند؛ بنابراین پیش از فعالسازی، وضعیت دامنۀ خود را مستقیماً از رجیستری یا ریجیسترار پیگیری کنید.
اگر DNSSEC را اشتباه فعال کنم چه اتفاقی میافتد؟
یکی از پیامدهای رایج تنظیم اشتباه DNSSEC این است که ریزالورهای اعتبارسنج پاسخ زون را رد کنند و دامنه از دسترس خارج شود. اگر تجربۀ قبلی ندارید، بهتر است ابتدا فرایند را روی یک دامنۀ تستی یا محیطی کمریسک تمرین کنید تا با مراحل و خطاهای احتمالی آشنا شوید.
چطور مطمئن شوم DNSSEC روی دامنهام درست کار میکند؟
ابزارهایی مانند DNSSEC Analyzer یا Verisign DNSSEC Debugger زنجیرۀ اعتماد دامنه را بررسی میکنند و خطاهایی مثل رکورد DS ناقص یا امضای منقضی را نشان میدهند. بهتر است پس از هر تغییر مهم در تنظیمات DNSSEC این بررسی را انجام دهید؛ یک تست ساده میتواند جلوی بسیاری از قطعیهای ناگهانی را بگیرد.




