DNS SEC – قسمت دوم

NSEC3 Record

NSEC3 Record یک جایگزین برای NSEC است که از مسئله Zone Walking ممانعت ایجاد می کند. Zone Walking فرآیندی است که در آن مهاجم با تکرار NSEC Query ها می تواند تمام نام ها در Zone را بازیابی کرد.

Zone Signing

زمانی که یک Zone با استفاده از DNSSEC امضا می گردد، در واقع تمام(Resource Record (RR مربوطه به صورت تکی رمز می گردند. لذا امکان ویرایش، حذف و اضافه رکورد ها وجود خواهد داشت. DNS Server ها در ویندوز Server 2012 از هر دو رکورد NSEC3 و NSEC پشتیبانی می کنند و یک Zone تنها می تواند توسط یکی از آن دو رکورد Sign شود.

برای تنظیم DNSSEC ابتدا لازم است، Zone را آماده سازی کنید، تهیه نسخه backup، تعبیه یک روش rollover، ساخت کلید ها، Sign کردن Zone، تنظیم Trust Anchor ها و در نهایت تنظیم Client ها روند عمومی پیکربندی DNSSEC است.

Trust Anchor

همانطور که پیش تر گفته شد، جهت انجام Validation، یک DNS Server باید با یک یا بیشتر Trust Anchor دیگر تنظیم گردد. اگر DNS Server روی یک Domain Controller اجرا گردد، Trust Anchor ها در Application Partition قرار می گیرند و بین تمام Domain Controller ها Replicate می شوند. در Standalone DNS Server ها در فایل TrustAnchors.dns ذخیره می گردد. Trust Anchor ها در کنسول DNS در قسمت Trust Points نمایش داده می شوند و امکان ویرایش آن ها نیز وجود دارد.

Key Master

Key Master یک DNS Server است که وظیفه تولید و مدیریت کلید ها برای یک Zone را بر عهده دارد. هر کدام از DNS Server هایی که کپی Primary از Zone را دارند می توانند به عنوان Key Master انتخاب شوند. توجه داشته باشید که در Active Directory Integrated Zone این امکان وجود دارد که نسخه DNS به صورت فقط خواندنی یا نوشتنی-خواندنی باشد. یک Server می تواند نقش key Master را برای چند Zone مختلف داشته باشد. امکان انتقال نقش Key Master پس از Sign شدن Zone وجود دارد، با این وجود در اولین Sign کردن لازم است Key Master معین گردد. این ویژگی در Windows Server 2012 ایجاد شده است.

آماده سازی Zone

اولین قدم پیش از هر تغییری تهیه نسخه پشتیبان است. با استفاده از دستور زیر یک نسخه پشتیبان از Zone تهیه کنید. این دستور یک فایل در windir%\System32\DNS% ایجاد می کند:

dnscmd /ZoneExport <zone name> <zone file name>

تذکر: در Windows Server 2008 R2 لازم است Dynamic Update را غیر فعال کنید زیرا تنها از Static Update در DNSSEC پشتیبانی به عمل آمده است. در نهایت؛ نوع Zone را به Primary Zone تغییر دهید. با وجود آنکه DNSSEC با AD-integrated Zone سازگار است، در پروسه sign کردن zone لازم است که اطلاعات zone در فایل نگه داری شود. پس از عملیات sign می توانید zone را دوباره بدون مشکلی تبدیل به AD-integrated Zone کنید. در Windows Server 2012 نیاز به انجام این عملیات وجود ندارد.

تذکر: پیاده سازی DNS Client در سیستم عامل های مایکروسافت به صورت non-validating و security-aware به این معنا که DNS Client عملیات جهت Validate کردن پاسخ دریافت شده انجام نمی دهد با این وجود DNS Client برای Validation به Server وابسته است.

مکانیسم Key Rollover

کلید های DNSSEC دائمی نیستند و نیازمند مکانیسمی برای تولید کلید جدید در زمان های معین وجود دارد. Zone لازم است با کلید های جدید sign گردد و سپس با روش های توزیع کلید (Key distribution) به Trust Anchor کلید ها توزیع گردند. به فرایند تولید کلید های جدید و توزیع آن ها Key Rollover می گوییم. برای تسهیل این امر DNSSEC این امکان را فراهم می آورد تا از چند ZSK و KSK به صورت هم زمان روی یک Zone استفاده گردد. زمانی که DNS Server های دیگر چندین Public Key برای برای یک Zone بیابند از تمام برای عملیات Validation استفاده می کنند. این فرایند در Windows Server 2012 می تواند به صورت خودکار صورت گیرد و استفاده از آن اکیدا توصیه می گردد. برای سایر نسخ،برای Rollover، مکانیسم های زیر می تواند مورد استفاده قرار گیرد:

۱) pre-published rollover: با این مکانیسم، پیش از استفاده از یک کلید ثانوی، آن کلید معرفی می گردد. پس از معرفی آن، به دلیل ایجاد یک رکورد جدید (DNSKEY) برای کلید، لازم است Zone با استفاده از کلید قبلی مجدد Sign شود. زمانی که اطلاعات روی Remote Server ها منقضی شد، با استفاده از کلید جدید Zone مجددا Sign می گردد. Sign شدن مجدد یک Zone با استفاده از یک کلید جدید، سبب می شود به صورت خودکار حذف گردد. این روش برای ZSK مناسب است.

۲) Double Signature rollover: با این روش، یک کلید جدید و رکورد مربوطه آن ایجاد می گردد و سپس Zone به صورت هم زمان با هر دو کلید قدیمی و جدید sign می گردد. سپس زمانی که اطلاعات قدیمی Zone روی Remote Server منقضی شد و تغییرات لازم روی parent domain serverها یا Remote Serverها (همانند Trust Anchor) اعمال شد، Zone تنها با یک کلید جدید Sign می گردد. این روش برای KSK مناسب است.

DNSSEC Demonstration

در اینجا در یک سناریو، فرآیند راه اندازی سرویس DNSSEC مشروح می گردد. این راهنما یک راهنمای گام به گام برای پیاده سازی DNSSEC است. sec.contoso.com دامنه ای است که عملیات پیاده سازی روی آن صورت می گیرد.

Query برای یک Zone امضا نشده (Unsigned)

با استفاده از دستور زیر، برای یک Zone امضا نشده یک Query بدون الزام Validate شدن صادر می کنیم. این Query را از روی یک Client صادر می کنیم. سوییچ dnssecok به server اعلام می کند که کلاینت می تواند رکورد های جدید در DNSSEC را بفهمد. از آنجایی که Zone امضا نشده است، هیچ رکورد RRSIG در جواب وجود ندارد.

resolve-dnsname dc1.sec.contoso.com –server dns1 –dnssecok

IC564570

انجام Validation از آن بابت الزامی نیست که در NRPT هیچ سیاستی وجود ندارد.

Sign کردن یک Zone

در کنسول DNS Manager در قسمت Forward Lookup Zone رفته و روی Zone مطلوب کلیک راست می کنیم. سپس در منوی DNSSEC گزینه  Sign The Zone را می زنیم.

IC564571

سپس در Wizard باز شده، گزینه Use Recommended Setting to Sign the zone را انتخاب کرده و با زدن Next و سپس Finish، عملیات Sign کردن آغاز می گردد. پس از پایان عملیات، کنسول را Refresh کنید و رکورد های جدید ایجاد شده را می توانید مشاهده کنید.

IC569067

Trust Anchor Distribution

پوشه DNS در systermroot%\system32 % را Share کنید سپس در کنسول DNS Manager روی Trust Points کلیک راست کرده از منوی Import گزینه DNSKEY را انتخاب کنید و dc1\dns\keyset-sec.contoso.com\\را وارد کنید. با Refresh کردن کنسول، بررسی کنید ۲ Trust Anchor ایجاد شده اند.

با دستور زیر از هر کامپیوتری در شبکه باید بتوانید هر دو Trust Anchor را مشاهده کنید: (PowerShell)

resolve-dnsname –name sec.contoso.com.trustanchors –type dnskey –server dns1

با دستور زیر در DNS Server ای که تنظیم کرده اید باید بتوانید هر دو Trust Anchor را مشاده کنید:(PowerShell)

get-dnsservertrustanchor sec.contoso.com

در Forward Lookup Zone روی Zone کلیک راست کرده و از منوی DNSSEC گزینه ی Properties را بزنید. در Tab (زبانه) Trust Anchor گزینه ی Enable the distribution of trunst anchors for this Zone را فعال کنید. چنانچه در محیط Active Directory باشید، Trust Anchor برای این zone بین تمام سرور ها منتشر Distribute می گردد در غیر این صورت، تنها در Local Trust Anchor Store اضافه می گردد. این گزینه سبب می گردد تا تمام سرور ها در آن Zone بتوانند Validation را انجام دهند به شرطی که Trust Anchor برای آن سرور ها منتشر شده باشد. در این سناریو باید روی DC2 منتشر گردد.

dnssec1111111

Query برای یک Zone امضا شده (signed)

در اینجا Query فوق را تکرار می کنیم. لازم به ذکر است همچنان برای sec.contoso.com در NRPT هیچ سیاستی وجود ندارد لذا Validation الزامی نیست.

IC564565

الزام انجام Validation

Group Policy Management را باز کنید. می توانید یک Group Policy Object جدید برای کلاینت مورد نظر خود ایجاد کنید یا Default Domail Policy را ویرایش کنید. به شاخه Computer Configuration > Policies > Windows Settings > Name Resolution Policy رفته و سپس در Detail Pane در قسمت Create Rule با وارد کردن اطلاعات یک Rule جدید ایجاد می کنیم.

گزینه Suffix را انتخاب و نام دامین مورد نظر خود را در رو به روی آن وارد کنید. در اینجا: sec.contoso.com. در Tab (زبانه) DNSSEC گزینه Enable DNSSEC in this rule را انتخاب کرده وسپس گزینه Validation:Require DNS clients to check that name and address data has been validated by the DNS server را نیز فعال می کنیم.

dnssec2222222222222 

در NRPT که در پایین تر از Create Rule نمایش داده شده است Rule جدید را مشاهده می کنید.

IC564573

در پایان دکمه Apply را بزنید.

پس از update شدن Group Policy می توانید با دستور get-dnsclientnrptpolicy در PowerShell جدول NRPT را مشاهده کنید. برای انجام شدن Update می توانید از دستور gpupdate /force استفاده کنید. مشاده می کنید DnsSecValidationRequired دارای مقدار True است.

IC564574

اکنون اگر باری دیگر Query را تکرار کنیم، باید به همان نتیجه پیشین برسیم با این تمایز که عملیات Validation نیز از سوی Server انجام شده است.

حذف امضاء Zone

در اینجا Zone را Unsigned می کنیم تا باری دیگر با تنظیم پارامتر های بیشتر و بدون استفاده از تنظیمات توصیه شده تنظیم نماییم. برای این منظور روی Zone کلیک راست کرده و در منوی DNSSEC گزینه Unsign The Zone را انتخاب می کنیم. با پیش گرفتن Wizard باز شده، عملیات آغاز می گردد. پس از پایان یافتن، کنسول DNS Manager را Refresh کنید و مشاهده می کنید رکورد مربوط به DNSSEC حذف شده اند

Sign کردن یک Zone با پارامتر های Custom

در اینجا مشابه قبل درکنسول DNS Manager روی Zone مورد نظر کلیک راست کرده و در منوی DNSSEC گزینه Sign the zone را زیده سپس در مرحله Signing Options گزینه ی Customize Zone Signing Parameters را می زنیم.

در صفحه Key Master لازم است سروری که به عنوان Key Master در Zone عمل کند را معین کنیم.

IC564576

در صفحه KSK یک کلید با طول ۲۰۴۸ به صورت خودکار ایجاد شده است. آن را حذف می کنیم و کلید جدیدی را ایجاد می کنیم. برای این منظور دکمه Add را زده و در کادر محاوره ای (Dialog Box) باز شده، تنظیمات دلخواه KSK را انجام می دهیم.

IC564577

در مرحله ZSK نیز می توان کلید دلخواهی تولید کرد. در مرحله NSEC می توان استفاده از NSEC3 یا NSEC و تنظیمات مربوطه به آن ها را معین کرد. با ادامه Wizard می توانید Zone را مجددا Sign کنید.س

روی خط فرمان

در اینجا با استفاده از ابزار DnsCmd قصد داریم یک Zone را Sign کنیم.

تولید زوج کلید

هدف از تولید دو زوج کلید آن است که یکی از آن ها که به عنوان Trust Anchor استفاده می گردد (KSK) نیاز به دارای عمر بیشتری گردد و کمتر نیاز به آپدیت داشته باشد. وجود KSK سبب می شود که کلیدی که برای رمزکردن Zone به کار گرفته می شود (ZSK) با کمترین زحمت برای مدیران صورت گیرد.  توجه داشته باشید استفاده از KSK الزامی نیست اما اکیدا توصیه شده است. زمانی که تنها یک زوج کلید برای Sign کردن Zone و Trust Anchor به کار گرفته شود، آن کلید ZSK می باشد.

برای تولید زوج کلید های ZSK و KSK عملیات زیر را انجام دهید. این کلید ها به صورت Self-Signed Certificate در Certificate Store در MS-DNSSEC ایجاد می گردند.

۱) Command Prompt را با سطح دسترسی مناسب باز کنید.

۲) دستور زیر را برای تولید KSK وارد کنید:

DnsCmd /OfflineSign /GenKey /Alg rsasha1 /Flags KSK /Length <length> /Zone <zone
name> /SSCert /FriendlyName KSK-<zone name>

۳) برای تولید ZSK دستور زیر را وارد کنید:

DnsCmd /OfflineSign /GenKey /Alg rsasha1 /Length <length> /Zone <zone name> /
SSCert /FriendlyName ZSK-<zone name>

تولید کلید که در پارامتر Length معین می گردد می تواند بین ۵۱۲ تا ۴۰۹۶ در افزایش های ۶۴ بیتی باشد. در حال حاضر RSA/SHA-1,NSec3RSA/SHA-1 و ECDSAP256SHA256 و برخی موارد دیگر، مورد پشتیبانی است. همچنین از پارمتر های ValidFrom  و ValidTo برای تعیین زمان شروع و پایان اعتبار Certificate می توان استفاده کرد. فرمت ورودی باید YYYYMMDDHHMMSS باشد.

پس از تولید کلید ها توجه داشته باشید Certificate ای که دارای برچسب ۲۵۷ است مربوط به KSK و ۲۵۶ مربوط به ZSK است.

Sign کردن Zone

توجه داشته باشید اگر یک Active Directory Integrated-Zone را می خواهید Sign کنید، لازم است ابتدا آن را در یک فایل Export کنید. به windir%\System32\DNS% بروید و دستور زیر را وارد کنید:

DnsCmd /OfflineSign /SignZone /input <input zone file> /output <output zone file>
/zone <zone name> /signkey /ValidTo <validtodate> /ValidFrom <validfromdate> /cert
/friendlyname ksk-<zone name> /signkey /cert /friendlyname zsk-<zone name>

2 دیدگاه در DNS SEC – قسمت دوم

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *