راه اندازی DNSSEC در سرور BIND DNS

469

 

 

می‌دانیم که DNS  یک پروتکل برای تبدیل نام دامنه‌ها به IP addressهای آنهاست، اما چگونه می‌توان از صحت IP آدرس بازگشتی مطمئن شد؟ آیا ممکن است که یک هکر DNS را آلوده نماید و IP آدرسی بازگشت دهد که کاربر را به یک سایت مخرب بفرستد با اینکه نامی که در آدرس بار مرورگر نشان می‌دهد صحیح است؟ در اینجا ما از افزونه امنیتی DNS با نام DNSSEC استفاده می‌کنیم که هدف آن حفظ امنیت DNS است. DNSSEC با استفاده از PKI ( کلید عمومی) تمام سوابق منابع DNS (A ، MX ، CNAME و …) بررسی می‌کند و اکنون DNS می‌تواند با فعال کردن DNS resolverهایی مانند Google Public DNS صحت dns مورد نظر از لحاظ IP آدرس و دیگر مشخصه ها را با رکوردهای DNSKEY بررسی نماید.

 

DNSSEC Resource Records

Resource Record (RR)ها دارای اطلاعات خاصی از دامین می‌باشند. بعضی از رکوردهای عمومی A دارای اطلاعاتی مانند IP address دامنه، بعضی از AAAA دارای اطلاعات IPv6 و MX دارای اطلاعات Mail server دامنه می‌باشند. لیست کامل RRها را می‌توانید در این صفحه مشاهده نمایید.

DNSSEC به تعدادی RRنیاز دارد:

DNSKEY کلید عمومی را که DNS resolverها برای تأیید استفاده می کنند، در خود نگه می دارد.

RRSIG برای هریک از RR وجود دارد و حاوی امضای دیجیتالی رکورد است.

DS – Delegation Signer این رکورد در نام سرورهای TLD وجود دارد. اگر ZAGRIO.COM را در نظر بگیریم. TLD همان .com است nameserver شامل a.gtld-servers.net تا m.gtld-servers.net می‌باشد.

را‌ه‌اندازی

Domain Name: zagrio.com

برای این منظور شما از نام دامنه خود استفاده نمایید.

Master Nameserver:
IP Address: 1.1.1.1
Hostname: master.zagrio.com

OS: Debian 7

Slave Nameserver:
IP Address: 2.2.2.2
Hostname: slave.zagrio.com
OS: CentOS

محل فایل‌ها و نام‌آنها

نام فایل‌های شما و محل ذخیرسازی آنها بر اساس نوع توزیع لینوکسی که استفاده می‌کنید ممکن است متفاوت باشد.

Debian/Ubuntu

نام سرویس:
bind9
فایل اصلی پیکربندی:
/etc/bind/named.conf.options
Zone names file:
/etc/bind/named.conf.local
Default zone file location:
/var/cache/bind/

CentOS/Fedora

Sنام سرویس:
named
فایل اصلی پیکربندی و zone names file:
/etc/named.conf
Default zone file location:
/var/named/

 

این نام‌ها و محل‌ها اگر از bind-chroot استفاده می‌کنید ممکن است متفاوت باشند.

 

پیکربندی DNSSEC Master

DNSSEC را می‌توان با اضافه کردن دستور العمل‌های پیکربندی در options{ } فعال نمود.

nano /etc/bind/named.conf.options

 

ممکن است تعدادی از این فرامین در توزیع لینوکسی شما از قبل وجود داشته باشند.

با دستور زیر به zone file خود بروید:

و با دستور زیر Zone Signing Key(ZSK) را بسازید.

اگر haveged را نصب کرده باشید برای ایجاد این key فقط چند ثانیه لازم است. در غیر این صورت زمان بیشتی طول خواهد کشید. خروجی به شکل زیر است:

با دستور زیر نیز می‌توانید Key Signing Key(KSK) را بسازید:

نمونه خروجی به شکل زیر است:

دایرکتوری حالا 4 key دارد. ما public key را هم اضافه کردیم که دارای DNSKEY در zone است، حلقه زیر این کار را برای ما انجام می‌دهد.

با کامند زیر dnssec-signzone را نشانه گذاری و sign می‌نماییم.

salt را با یک چیز رندم عوض کنید نمونه خروجی شما مانند زیر خواهد بود:

یک عبارت string شانزده کاراکتری باید به جای salt وارد شود مانند کامند زیر:

با کامند زیر یک فایل با نام example.com.zone.signed می‌سازیم که رکوردهای RRSIG  در ن جای دارند.

تنظیمات فایل را در بخش zone { } تغییر دهید.

فایل را ذخیره کنید و bind را دوباره بارگذاری نمایید.

بررسی کنید که آیا DNSKEY از dig بر یک سرور مشابه استفاده می‌نماید.

نمونه خروجی:

برای وجود رکورد RRSIG  آن را بررسی کنید.

پیکربندی Master Server به پایان رسیده است.

 

پیکربندی DNSSEC Slave

برای این منظور نیاز است خط‌های زیر را به فایل کانفیگ اضافه نمایید.

و تنظیمات file را در zone { } تغییر دهید.

BIND را دوباره بارگذاری کنید.

بررسی کنید که آیا فایل جدیدی از .signed داخل ZONE وجود دارد یا خیر.

این بخش هم تمام شد و می‌توانید مانند بخش بالا با dig آن را بررسی نمایید.

 

پیکربندی رکوردهای DS با استفاده از register

وقتی که کامند dnssec-signzone را خارج از فایل های .signed zone اجرا می‌کنید. یک فایل با نام dsset-zagrio.com نیز ساخته می‌شود. که این فایل شامل رکوردهای DS می‌شود.

این‌ها در کنترل پنل رجیستر دامین وارد شده‌اند. تصاویر زیر این روند را برای سایت GoDaddy نشان می‌دهد.

وارد کنترل پنل رجیستر دامنه‌ی خود شوید. دامنه خود را انتخاب کنید. گزینه manage DS records را انتخاب کنید.

register control panel for domain

 

این ها نیز بکاپ ما در dsset-example.com می‌باشد.

DS record 1:

Key tag: 62910
Algorithm: 7
Digest Type: 1
Digest: 1D6AC75083F3CEC31861993E325E0EEC7E97D1DD

backup

 

DS record 2:

Key tag: 62910
Algorithm: 7
Digest Type: 2
Digest: 198303E265A856DE8FE6330EDB5AA76F3537C10783151AEF3577859FFFC3F59D

 

backup 2

 

رکورد دوم dsset-example.com دارای اسپیس داخل digest می‌باشد. ولی زمانی که آن را import کنید باید آن را حذف نمایید.

saving change

 

چند دقیقه طول می‌کشد تا تغییرات ذخیره شوند. بعد از تایید می‌توانید با سرویس‌های آنلاینی مانند سرویس‌های زیر DNSSEC خود را بررسی کنید.

http://dnssec-debugger.verisignlabs.com/

http://dnsviz.net/

سایت اول بسیار ساده است. اما سایت دوم به صورت ویژوآل و تصویری به شما نشان می‌دهد. در زیر تصویری از سایت اول قرار گرفته است.

http://dnssec-debugger.verisignlabs.com/

خط اولی که با قرمز نشان داده شده Key tag مقدار DS رکوردها را نشان می‌دهد. خط دوم مقدار key id که مربوط به ZSK می‌باش را نشان می‌دهد.