محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

djbdns چیست؟ معرفی DNS سرور لینوکسی به زبان ساده

خوب تا اینجای کار در جزیره لینوکس و متن باز وب سایت توسینسو ما DNS سرورهای قدرتمند PowerDNS و BIND را بصورت کامل معرفی کردیم و اینبار نوبت به djbdns می رسد. djbdns هم یک DNS سرور است که به نوعی فلسفه لینوکس و یونیکس را برای DNS سرور تداعی می کند ، زمانیکه لینوس توروالدز برای یونیکس رقیبی به نام لینوکس تولید کرد و با آن رقابت کرد را می توانیم برای djbdns هم متصور باشیم ، شخصی به نام Daniel J.Bernstein در پاسخ به مشکلات و حفره های امنیتی که سالها در DNS سرور BIND وجود داشت تصمیم گرفت که DNS سروری با کمترین حفره امنیتی و با بالاترین سطح امنیت تولید کند .

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

Daniel سالها بر روی امنیت djbdns کار کرد و همیشه یک جایزه 1000 دلاری برای هر کسی که حفره امنیتی در این DNS سرور پیدا کند در نظر گرفت تا اینکه در سال 2009 Mathew Dempsky توانست این جایزه را ببرد و حفره امنیتی در djbdns پیدا کند ، این روزها این DNS سرور همچنان یکی از امن ترین DNS سرورهای دنیا محسوب می شود . فکر می کنم تا اینجای کار متوجه شده باشید که djbdns مخفف شده چه اسامی است : بله مخفف نام Daniel J Bernstein یعنی سازنده این محصول است .

Djbdns دارای اجزا مختلف سروری و کلاینتی است که بصورت جداگانه بسیار مورد استفاده قرار می گیرند برای مثال محبوب ترین ماژول یا جزوء این DNS سرور به نام TinyDNS در سال 2004 به عنوان محبوب ترین DNS سرور اینترنت از لحاظ تعداد Domain هایی که از ان استفاده می کردند را به خودش اختصاص داد. جالب اینجاست بدانید که زمانیکه حمله DNS Cache Poisoning بصورت گسترده در اینترنت در سال 2008 فراگیر شد این TinyDNS بود که هیچوقت از طریق این نوع حملات تهدید نشد و حمله ای بر روی این DNS سرور گزارش نشد .

هر چند بعدها مشخص شد که TinyDNS از لحاظ امنیتی بر روی نوع خاصی از همین نوع حمله آسیب پذیر است که به سرعت این آسیب پذیری نیز برطرف شد . سورس کد اصلی این DNS سرور تا سال 2007 بصورت مرکزی مدیریت نمی شد و پس از آن پروژه های دیگری در Debian از این سورس برای ایجاد DNS سرورهای خودشان استفاده کردند که برای مثال dbndns از جمله این پروژه ها است ، در خصوص DNSSEC باید بگوییم که djbdns بصورت مستقیم از این قابلیت پشتیبانی نمی کند اما patch های جانبی برای اینکار وجود دارند که می توانند در قالب TinyDNS این سرویس را ارائه بدهند ، بصورت کلی همانطور که اعلام کردیم djbdns از دو قسمت نرم افزاری اصلی تشکیل شده است است که به شرح زیر می باشند :

اجزای سروری DNS سرور djbdns

  1. dnscache : سرویس DNS Resolver ای که قبلا در BIND معرفی کردیم و سرویس Cache جزو این Component هستند
  2. tinydns : یک DNS سرور کامل با قابلیت استفاده از Database
  3. walldns : در واقع این Component به تنهایی عملیات Reverse Lookup یا تبدیل IP به دومین را انجام می دهد
  4. rbldns : سرویس لیست سیاه یا Blacklisting را انجام می دهد
  5. pickdns : یک قابلیت جدید در TinyDNS است که پاسخ کاربر را بر اساس محل قرارگیری کاربر ارائه می کند
  6. axfrdns : سرور Zone Transfer این DNS سرور است ( قبلا در مورد AXFR در TOSINSO صحبت کرده ایم )

اجزای کلاینتی DNS سرور djbdns

  1. axfr-get : یک درخواست کننده برای Zone Transfer است
  2. dnsip : قابلیت تبدیل اسم به IP به ساده ترین شکل ممکن را ارائه می کند
  3. dnsipq : قابلیت تبدیل اسم به IP با استفاده از Rewriting Rule های سرور
  4. dnsname : قابلیت تبدیل اسم به IP به ساده ترین شکل ممکن را ارائه می دهد
  5. dnstxt : قابلیت استفاده از Text Record در جستجوی نام را ارائه می کند
  6. dnsmx : قابلیت استفاده از Mail Exchange Record در جستجوی نام را ارائه می کند
  7. dnsfilter : قابلیت جستجوی نام و خواندن آدرس از کتابخانه stdin بصورت موازی را می دهد
  8. dnsqr : قابلیت جستجوی Recursive ( بازگشتی ) را به DNS سرور می دهد
  9. dnsq : بیشتر برای فرآیند Debug استفاده می شود ( کاربرد برای Non-Recursive Query ) ها
  10. dnstrace : برای تست چرخه Authority در DNS سرورها و اسامی آنها استفاده می شود

با توجه به موارد گفته شده در بالا حتما متوجه شده اید که djbdns قابلیت ها و سرویس های خودش را در قالب برنامه های مجزا ارائه کرده است . برای مثال بحث Zone Transfer ، بحث Caching ، بحث خالی کردن اطلاعات بیخودی Zone ها و حتی نوع تبدیل کردن درخواست های IP به اسم و برعکس هر کدام توسط یک برنامه جداگانه انجام می شوند.هدف از این نوع طراحی DNS سرور این است که تا جای ممکن سرویس با حداقل تعداد خطوط سورس کد اجرا شود و پیچیدگی ها به حداقل برسد و هسته درخواست ها را سریعتر پردازش کند. هدف دیگر این نوع طراحی ایجاد امنیت سطح بالاتر و البته پشتیبانی از سیستم عامل های خانواده یونیکس است ، djbdns کاملا رایگان و بصورت عمومی Open Source از سال 2007 در اختیار همگان قرار گرفت . امیدوارم مورد توجه شما قرار گرفته باشد خوشحال می شویم در خصوص این مطلب نظرات شما را در ادامه جویا شویم.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات