۱. مبانی Name Resolution
فلسفه Name Resolution چیست؟
هیچکدام از لایههای زیرین شبکه (مثل لایه ۲ و ۳) فیلدی به نام Destination Name (نام مقصد) ندارند؛ آنها فقط با MAC و IP کار میکنند. بنابراین نامِ سیستم باید توسط روشها و سرویسهایی به IP تبدیل شود تا کامپیوترها بتوانند با هم ارتباط بگیرند.
سرویسها و پروتکلهای تبدیل نام
فرآیند تبدیل نام در دو بستر انجام میشود: بستر داخلی شبکه (LAN) و بستر اینترنت (WAN). این کار توسط دو ابزار کلی صورت میگیرد:
- توسط سرورهای تخصصی: مانند DNS، WINS (برای ویندوزهای قدیمی) و BIND (برای لینوکس).
- توسط پروتکلهای محلی: در شبکههایی که سرور ندارند از طریق پیامهای Broadcast و پروتکل LLMNR انجام میشود.
کالبدشکافی پروتکل LLMNR
پروتکل LLMNR (Link-Local Multicast Name Resolution) زمانی کار میکند که دو سیستم در یک Subnet باشند. این پروتکل مختص تجهیزات مایکروسافتی است و برای کار کردن به روشن بودن قابلیت Network Discovery متکی است. ارتباطات LLMNR بر پایه شبکههای IPv6 و روی آدرس مولتیکست FF02::1:3 انجام میشود.
Search غیرفعالسازی اصولی LLMNR
پروتکل LLMNR یک حفره امنیتی بزرگ برای حملات Man-in-the-Middle است (هکرها با ابزاری مثل Responder به درخواستهای LLMNR پاسخ جعلی میدهند). برای غیرفعال کردن آن در کل شبکه باید از گروپپالیسی استفاده کنیم:
Computer Configuration > Administrative Templates > Network > DNS Client
=> Policy: "Turn off multicast name resolution" => Enabled
Host Name و تفاوت ساختار نامها
نام کامپیوترها در شبکههای ویندوزی به دو شکل میتواند باشد:
ساختار مسطح (Flat)
در شبکههای Workgroup، کامپیوترها یک نامِ تکقسمتی و مسطح (مثل PC-Ali) دارند.
ساختار سلسلهمراتبی (FQDN)
در دامینها، نامها بخشبندی میشوند (مانند PC-Ali.company.local) که درک مسیر را برای DNS راحتتر میکند.
معماری باستانی NetBIOS
قبل از ویندوز ۲۰۰۰، شبکههای مایکروسافتی بر پایه NetBIOS (Network Basic Input/Output System) کار میکردند. در این ساختار، طول نام حداکثر ۱۶ کاراکتر بود که ۱۵ کاراکتر اول برای نام کامپیوتر و ۱۶امین کاراکتر (به صورت هگزادسیمال) نشاندهنده نوع سرویسِ آن سیستم (مثل Workstation یا Server) بود.
Workstation Service: سرویسی است که باعث میشود شما (به عنوان کلاینت) بتوانید به فایلهای شیر شدهی دیگران متصل شوید.
Search خاموش کردن NetBIOS
NetBIOS در شبکههای مدرن کاربردی ندارد و خاموش کردن آن امنیت را بالا میبرد. روشها:
- دستی: کارت شبکه > IPv4 > Advanced > تب WINS > انتخاب Disable NetBIOS over TCP/IP
- متمرکز: از طریق Option شماره 43 در تنظیمات سرور DHCP
Search انواع Node Type
کلاینتهای NetBIOS برای پیدا کردن هم ۴ رفتار (Node Type) داشتند که از طریق DHCP (Option 46) یا رجیستری قابل تغییر است:
- B-Node: فقط از طریق Broadcast
- P-Node: مستقیم میپرسید از سرور WINS (Peer-to-Peer)
- M-Node: اول Broadcast، بعد WINS
- H-Node: (Hybrid) اول WINS، بعد Broadcast
اولویت و مراحل نیمرزولوشن در ویندوز
وقتی در مرورگر یا CMD یک آدرس تایپ میکنید، ویندوز به ترتیب زیر برای پیدا کردن آیپی تلاش میکند (اگر در یک مرحله جواب بگیرد، به مراحل بعدی نمیرود):
1. Client Cache ➔
2. Hosts File ➔
3. DNS ➔
4. LLMNR ➔
5. NetBIOS Cache ➔
6. WINS Server ➔
7. Broadcast ➔
8. LmHost File
Search فایل Hosts چیست و چگونه هک میشود؟
فایل Hosts یک دفترچه تلفن متنی و بدون پسوند در مسیر C:\Windows\System32\drivers\etc\hosts است. ویندوز قبل از ارسال ریکوئست به DNS سرور، همیشه اول داخل این فایل را نگاه میکند و اطلاعات داخل آن تا ابد در حافظه سیستم (Cache) باقی میماند!
سناریوی نفوذ (Pharming / DNS Spoofing): هکر با نفوذ به سیستم (مثلاً از طریق یک بدافزار)، فایل Hosts را ادیت میکند. او مینویسد: 10.0.0.99 www.bank.com. در نتیجه وقتی کاربر آدرس بانک را میزند، ویندوز اصلاً به سرورهای جهانیِ DNS مراجعه نمیکند و کاربر را مستقیماً به صفحه فیشینگ هکر (آیپی 10.0.0.99) هدایت میکند!
معماری DNS در برابر WINS
سرور WINS صرفاً برای تبدیل نامهای مسطحِ NetBIOS به آیپی استفاده میشد. اما سیستم جهانی DNS که در سال ۱۹۸۴ معرفی شد، برای تبدیل نامهای سلسلهمراتبی (FQDN) به آیپی طراحی شده است.
- هر دامینِ راهاندازی شده، حتماً حداقل یک Zone (محدوده) در DNS نیاز دارد.
- سیستمهایی که به دامین Join میشوند، نام و آیپی خود را به صورت خودکار در Zone ثبت میکنند.
- وقتی کلاینت عضو دامین نیست (Workgroup است)، برای اینکه DNS به او جواب بدهد حتماً باید درخواست خود را به صورت FQDN (کامل) بفرستد.
Authoritative در برابر Non-Authoritative
وقتی با دستور nslookup از یک سرور DNS سؤالی میپرسیم، دو نوع جواب ممکن است بگیریم:
Authoritative Answer (معتبر / صاحبخانه)
سروری که این جواب را داده، خودش مالک اصلی آن Zone است و فایلها دست خودش است (جواب قطعی و مستند).
Non-Authoritative Answer (غیرمستقیم)
سرور خودش مالک آن Zone نیست، بلکه جواب را از سرورِ دیگری پرسیده یا از Cache خودش خوانده و به شما داده است.
مسیردهی درخواستها در DNS (مکانیسم پرسش)
اگر سرور DNS ما نتواند جواب را در Zoneهای خودش پیدا کند (Non-Authoritative باشد)، به ترتیب سراغ سه مکانیسم میرود:
- کاندیشنال فورواردر (Conditional Forwarder): به DNS سرور میگوییم: "اگر کسی دامنه
google.com را خواست، فقط و فقط از فلان آیپی بپرس". (شرطی است).
- فورواردر اصلی (Forwarder): اگر کاندیشنال جواب ندهد یا آدرسی که کاربر زده اصلاً در لیست کاندیشنال نباشد، همهچیز به صورت فلهای روی سروری که در بخش Forwarder تنظیم کردیم (مثلاً DNS اینترنتِ مخابرات یا گوگل 8.8.8.8) فوروارد میشود.
- روت هینت (Root Hints): اگر Forwarder هم جوابی نداشته باشد (یا تنظیم نشده باشد)، سرور DNS مستقیماً سراغ ۱۳ سرور اصلی و ریشهی اینترنت در جهان (Root Servers) میرود تا آدرس را پیدا کند.
انواع Zone در دیاناس (DNS Zone Types)
1. Primary Zone
زونِ اصلی و مادر است. فایل دیتابیسِ آن قابل خواندن و نوشتن (Read/Write) است.
2. Secondary Zone
کپیِ پشتیبانِ زون پرایمری است که در سرور دیگر ساخته میشود. فقط قابل خواندن (Read-Only) است.
3. Stub Zone
نسخهای بسیار سبک از زون است که کلاینتهای داخلش را کپی نمیکند، بلکه فقط رکوردهای SOA، NS و Aیِ مربوط به نامِ خودِ سرورها را نگه میدارد.
4. ADI Zone
زونی است که اطلاعاتش را داخل خودِ دیتابیس اکتیودایرکتوری ذخیره میکند. در نتیجه تمام DCها میتوانند روی آن بنویسند (Multi-Master) و بسیار امنتر است.
کالبدشکافی رکوردهای DNS (صفر تا صد)
رکوردهای DNS اطلاعاتِ حیاتیِ زون را در خود نگه میدارند. در ادامه مهمترین آنها را بررسی میکنیم.
رکورد A و AAAA
رکورد A نام (Name) را به آیپی نسخه ۴ تبدیل میکند. رکورد AAAA نام را به آیپی نسخه ۶ تبدیل میکند.
ترفند Same as parent folder: اگر موقع ساخت رکورد A، کادر نام (FQDN) را خالی بگذارید، رکوردی به نام (same as parent folder) ساخته میشود. این یعنی اگر کسی در شبکه فقط اسمِ خودِ دامین (مثلاً ping mcs.local) را تایپ کند، مستقیماً به آیپی سروری که در این رکورد ست شده میرسد.
رکورد CNAME (Aliases)
برای نامگذاری مستعار استفاده میشود؛ یعنی یک نام را به یک نامِ دیگر (بهجای آیپی) متصل میکند. مثلاً www.site.com در واقع CNAMEای به سمت site.com است.
رکورد NS (Name Server)
این رکورد اعلام میکند که چه سروری یا سرورهایی وظیفهی ارائه و مدیریت این Zone را برعهده دارند.
رکورد MX (Mail Exchanger)
نشاندهنده آدرس سرورِ ایمیل (Mail Server) آن سازمان است. وقتی ایمیلی ارسال میکنید، DNS با چک کردن رکورد MX میفهمد که بسته را باید تحویلِ کدام سرورِ سازمانِ مقصد بدهد.
Search پیدا کردن رکورد MX با NSLOOKUP
برای پیدا کردن آدرس میلسرور سازمانها (مثلاً گوگل)، CMD را باز کرده و مینویسیم:
> nslookup
> set type=mx
> google.com
تبدیل آیپی به نام
تمام رکوردهایی که گفتیم در Forward Lookup Zone ساخته میشوند. اما اگر آیپی را داشته باشیم و بخواهیم بفهمیم نامِ آن سیستم چیست، باید رکورد PTR بسازیم. رکوردهای PTR منحصراً داخل Reverse Lookup Zone قرار میگیرند.
رکورد قطورِ SOA (Start of Authority)
رکورد SOA شناسنامه و قلب تپندهی هر زون است و مشخصاتِ اصلی مالکیت آن را در خود دارد. در تنظیمات این رکورد، اطلاعات حیاتیِ ارتباطی بین Primary Server و Secondary Server تعریف میشود:
- Primary Server: نام سرور پرایمری که این زون را ساخته است.
- Responsible Person: آدرس ایمیل مدیر سرور (به جای @ از نقطه استفاده میشود).
- Serial Number: یک عدد است که با هر تغییر در دیتابیس زون بالا میرود. سرور Secondary همیشه این عدد را چک میکند؛ اگر بالاتر رفته باشد، میفهمد که باید آپدیتها را بگیرد (Zone Transfer).
- Refresh / Retry / Expire: تایمرهایی هستند که به سرور Secondary میگویند: "هر چند دقیقه برای دریافت آپدیتها مراجعه کن"، "اگر پرایمری قطع بود چند دقیقه بعد دوباره تلاش کن" و "تا چه مدت اگر پرایمری برنگشت، اطلاعات را منقضی کن".
فناوری Netmask Ordering
Netmask Ordering قابلیتی هوشمند در ویندوز سرور است. فرض کنید یک دامنه (مثل fileserver.local) روی دو آیپیِ مختلف تنظیم شده است. وقتی کلاینت آدرسِ این دامنه را از DNS میپرسد، DNS به صورت هوشمند نگاه میکند ببیند آیپیِ خودِ کلاینت در چه رنجی (Subnet) است، و از بین آن دو آیپی، آدرسی را اول به او برمیگرداند که از نظر فیزیکی و شبکهای به کلاینت نزدیکتر (همسابنت) باشد.
Search مکانیزم Aging & Scavenging
وقتی سیستمی از شبکه خارج میشود، رکورد DNS آن تا ابد باقی میماند و شبکه پر از رکوردهای مرده میشود. این مکانیزم برای پاکسازی خودکار رکوردهای قدیمی است.
در این حالت، به هر رکورد یک Timestamp (برچسب زمانی) میخورد. دو بازه زمانی داریم:
۱. No-refresh interval: بازهای که سرور به سیستم اجازه نمیدهد Timestamp خود را الکی آپدیت کند.
۲. Refresh interval: بازهای که سیستم فرصت دارد به سرور بگوید "من هنوز زندهام". اگر این زمان بگذرد، رکورد Stale (کهنه) محسوب شده و توسط پروسه Scavenging پاک میشود.
Search Trust Point چیست؟
این مفهوم در سیستم امنیتی DNSSEC استفاده میشود. در DNS عادی هکرها میتوانند بستههای DNS را در میانه راه تغییر دهند (Spoofing).
با DNSSEC، سرور پاسخها را رمزنگاری (Sign) میکند. Trust Point در واقع لنگرگاهِ اعتماد است و شامل کلید عمومیِ (Public Key) زونهای معتبر است که کلاینتها و سرورهای دیگر از طریق آن بررسی میکنند تا مطمئن شوند پاسخی که از سمت سرور DNS آمده، در میانه راه توسط هکر دستکاری نشده باشد.