در اینترنتی که می شناسیم با سایت ها و آدرس های url سر و کار داریم. پروتکل TCP/IP از IP برای آدرس دهی سرورها استفاده می کنه و ما برای ارسال و گرفتن اطلاعات به یک سرور، باید IP اون رو بدونیم. برای راحت کردن استفاده کاربرها و برای اینکه همه مجبور نباشن برای مثال IP موتور جستجوی گوگل رو وارد کنن باید فکری می شد. بنابراین هر سایت یک آدرس منحصر به فرد انتخاب کرد که در مورد مثالمون google.com بود و وظیفه تبدیل این آدرس به IP برعهده ماشین ها گذاشته شد. سامانه نام دامنه یا Domain Name System که خلاصه اش می شه DNS این کار رو انجام می ده. در این پست به بخشی از مباحث امنیت در سامانه نام دامنه خواهم پرداخت و یکی دو نرم افزار برای بالابردن امنیت معرفی خواهم کرد.
خب بذارید ببینیم قبل از دیدن صفحه گوگل چه اتفاقاتی می افته و نقطه های خطر رو پیدا کنیم.
ابتدا مرورگر رو باز می کنیم و google.com رو تایپ کرده و از مرورگر می خوایم که این آدرس رو برامون بیاره. مرورگر نگاه می کنه ببینه آیا در کامپیوترمون IP متناظر با google.com ذخیره شده یا خیر (کش DNS). اگر شده باشه، همون IP رو به عنوان مقصد انتخاب می کنه و اطلاعات دریافتی از اون IP رو به عنوان سایت گوگل به ما نشون می ده.
در صورتیکه IP متناظر در سیستم عامل ما وجود نداشته باشه، از یک سرویس دهنده می پرسه که IP متناظر با گوگل چیه. اون سرویس دهنده از پایگاه داده ای که داره استفاده می کنه و نتیجه رو برای مرورگر ما ارسال می کنه و سپس مرورگر اطلاعات اون IP رو به عنوان google.com به ما نشون می ده. در ضمن در کش DNS سیستممون هم این IP متناظر با سایت google.com ثبت می شه که در مراجعه بعدی، سریعتر IP پیدا بشه.
سرویس دهنده ای که در پاراگراف قبل گفتم می تونه در تنظیمات سخت افزار شبکه (کارت شبکه) مشخص بشه. معمولا ISP های ایران در انتخاب اول DNS خودشون رو برای کاربر تعیین می کنند و در انتخاب بعدی DNS گوگل رو. سرویس دهنده های مختلف و بیشماری وجود دارند که کار تبدیل نام دامنه به IP رو برای کاربرها انجام می دن.
مراحل بالا هر کدوم ریزه کاریهای خودش رو داره و استانداردهایی برای شیوه اجرا. وارد جزییات اونها نشدم و البته در پست های بعدی در موردشون بیشتر خواهم گفت. در این پست لایه اول خطرات امنیتی که می تونه کاربرهای عادی رو دچار مشکل کنه بررسی می کنم.
مهمترین خطر در بحث DNS، جایگزین کردن IP تقلبی با IP واقعی سایته که می تونه در سطح سیستم عامل و یا در سطح سرویس دهنده اتفاق بیافته. بسیاری از بدافزارها وقتی که سیستم ما رو آلوده می کنن، کش DNS یا در واقع IP های ذخیره شده رو تغییر می دن. یعنی اگر IP واقعی گوگل ۷۴.۱۲۵.۲۳۹.۱۰۱ باشه، بدافزار در ذخیره سیستم ما، اون رو به ۱۸۵.۱۸۵.۱۸۵.۱۸۵ (برای مثال) تغییر می ده. از این به بعد هروقت مرورگر خواست سایت گوگل رو باز کنه، اطلاعات ارسالی از یک سرور خطرناک رو برای ما میاره. موتور جستجوی گوگل حتی اگر تقلبی هم باشه ممکنه برای خیلی ها مهم نباشه ولی فرض کنیم سایت بانک ما هم تقلبی باشه، اون وقت تمام اطلاعاتی که وارد می کنیم مثل شماره حساب و پسورد، در اختیار هکرها قرار می گیره.
با توجه به ارسال و دریافت اطلاعات به سرورهای ارائه دهنده سرویس نام دامنه، کسانی که در یک شبکه اند و یا کنترل نقطه های میانی اتصال را بر عهده دارند، می تونن این اطلاعات رو ببینند و حتی تغییر بدن.
از نمونه های واقعی این خطرها میشه به هک شدن سایت گوگل و یاهو در آذربایجان از طریق هک سرویس دهنده DNS منطقه ای اشاره کرد. در این حالت در واقع سایت ها هک نشدن بلکه کاربرها به سرورهای دیگری منتقل می شوند.
نکته بعدی در بحث امنیت DNS بیشتر به حریم خصوصی مربوط می شه. درواقع سرویس دهنده نام دامنه ما، کلیه سایت هایی که بازدید کردیم رو می دونه. شاید خواسته یا ناخواسته یک سایت بزرگسالان رو باز کنیم و نخوایم که ISP بدونه. ضمن اینکه در بسیاری از کشورها، ISP ها لیست وبسایت های بازدید شده کاربران رو برای مدت های طولانی نگه می دارن و در اختیار مراجع رسمی می ذارن. بازدید از سایت های به اشتراک گذاری فیلم و موزیک، می تونه نشون دهنده دانلود غیر قانونی باشه که در برخی کشورها تبعاتی برای کاربر داره. نمونه های مشابه بسیاره.
برای جلوگیری از خطرات گفته شده چند کار رو همزمان باید انجام بدیم.
- اول اینکه با بالابردن سطح امنیت کامپیوتر و استفاده از آنتی ویروس و فایروال و غیره، مطمئن بشیم که سیستم ما آلوده به بدافزار نیست.
- دوم اینکه کش DNS رو به صورت دوره ای پاک کنیم که در صورت تغییر این فایل، مشکلات در سیستم باقی نمونه.
- سوم اینکه از سرویس های امن تری به جای سرویس ISP استفاده کنیم. یکی از مشهورترین سرویس ها در این زمینه OpenDNS است.
- و در آخر اینکه از رمزگذاری برای رد و بدل اطلاعات با سرویس دهنده نام دامنه استفاده کنیم تا احتمال تغییر اطلاعات در بین راه رو کم کنیم (چیزی شبیه استفاده از https به جای http).
سرویس دهنده OpenDNS ابزاری برای رمزگذاری ترافیک DNS ارائه کرده به اسم DNSCrypt. استفاده از DNSCrypt می تونه ردیف ۳ و ۴ لیست بالا رو همزمان انجام بده. درضمن این نرم افزار به صورت متن بار منتشر شده که می تونه در بحث امنیت یک قدم به جلو باشه.
با توجه به انتشار متن این نرم افزار، توسعه دهنده های دیگری با استفاده از این منبع، ابزارهای دیگری ساختند که دست کاربر رو بازتر می کنه. یک نمونه خوب از این نرم افزارها در سیستم عامل ویندوز DNSCrypt Windows Service Manager است.
DNSCrypt Windows Service Manager با اینکه ظاهر ساده ای داره اما این امکان رو به کاربر می ده که از سروری غیر از سرور OpenDNS استفاده کنه. همچنین می تونیم پروتکل UDP یا TCP رو انتخاب کنیم و یا از IP v6 به جای IP v4 استفاده کنیم.
قبل از انتخاب سرورهای لیست شده در این نرم افزار مطمئن بشید که اون سرویس دهنده تاریخچه وبگردی شما رو نگه نمی داره یا با سایت های تبلیغاتی و دولت ها به اشتراک نمیذاره.
این نرم افزار در مراحل اولیه است و توسعه دهنده اش گزینه های زیادی برای نسخه های بعدی در نظر گرفته.
هرچند استفاده از سرورهای امن DNS و رمزگذاری ترافیک راه خوبی برای بالا بهتر کردن امنیت و حریم خصوصیه اما در صورتیکه از شبکه های عمومی استفاده می کنید و یا از شبکه های که بهش مشکوکید و احتمال نفوذ و یا کنترل داره (مثل WiFi رستوران و هتل)، پیشنهاد می شه از شبکه خصوصی مجازی یا VPN کمک بگیرید.
گفتی که ISPها معمولاً ابتدا DNSهای خودشون رو قرار میدن و بعد از جایی مثل گوگل استفاده میکنن. و بعد گفتی که ما میتونیم از سرویسی مثل openDNS به جای DNSهای ISP استفاده کنیم. یعنی ما دسترسی این کار رو داریم که تنظیمات ISP رو عوض کنیم؟ یا در واقع از openDNS به جای سرویس محلی کامپیوتر خودمون استفاده میکنم و با این کاره که ISP رو دور میزنیم؟ جواب این سؤال وقتی برام مهمه که فرض کنم سرویسدهنده عامدانه قصد داشته باشه از طریق تغییرات DNS آسیبی به منِ نوعی بزنه. آیا با این کار دسترسی اونو کوتاه میکنیم؟ سؤال دوم این که چطوری این کارو بکنیم؟ کاش یه پست دیگه برای توضیحش بذاری. مممنون از مطلب خوب و مفیدت
طه نمی دونم چطور این کامنت رو جواب ندادم 🙂
شرمنده. با تاخیر:
تنظیمات ISP رو نمی تونیم تغییر بدیم. مودم خودمون رو میتونیم تنظیم کنیم که درخواست های DNS رو به سرور خاصی بفرسته.
اگر سرویس دهنده عامدانه قصد داشته باشه توی درخواست های DNS دستکاری بکنه، در مورد سرورهای دیگه هم انجام می ده. مثلا الان اگر توی ایران از سرویس DNS گوگل بپرسی که facebook کجاست، جواب میگیری ۱۰.۳۴… که IP فیسبوک نیست. چرا؟ چون که ترافیک DNS مثل ترافیک عادی بررسی دقیق می شه و دستکاری هم می شه.
راهش اینه که از رمزنگاری و روش های کنترل صحت اطلاعات استفاده کنیم.
حتما در موردش مینویسم. خوب شد که اتفاقی این پست رو دوباره دیدم
سلام
بسیار مطلب خوبی بود
نکته مهم اینه که در بسیاری از موارد حتی با استفاده از سرویس های رمزنگاری ترافیک باز هم از این طریق امکان شنود سایت هایی که مرور میشه وجود داره و خیلی ها در این مورد چیزی نمیدونن
ممنون