недоліки DNS

Системи розпізнавання імен DNS, що є однією з основ сучасної системи мережевих взаємодій, розроблялася більше 20 років тому, коли про питання захисту інформації майже не замислювалися. Одним з основних недоліків системи DNS є можливість підробки відповіді на DNS запит.

Проблема в тому, достовірність відповіді DNS-сервера ніяк не перевіряється, це означає, що в разі злому DNS сервера (і перенаправлення його на помилкові DNS сервера), підробки DNS записи, отруєнні кеша DNS (DNS cache poisoning), можна відправити користувача на довільний IP адреса, причому користувач буде знаходиться в повній впевненості, що він працює з легітимним сайтом або сервісом. Цими методиками широко використовують зловмисники, перенаправляючи користувачів на сайти, що містять шкідливі коди або збираючи їх особисті дані (паролі, номери кредиток і т.п.) за допомогою т.зв. pharming атак.

Навіщо потрібна технологія DNSSEC

Розширення безпеки DNS (DNSSEC) – технологія, призначена для підвищення безпеки служби DNS за рахунок використання криптографічних підписів, що дозволяють однозначно упевниться в автентичності інформації, отриманої від DNS сервера. Тобто всі запити і відповіді DNS сервера з підтримкою DNSSEC повинні володіти цифровим підписом, вірність якої може перевірити клієнт за допомогою відкритого ключа. Ці цифрові підписи створюються при підписуванні зони (застосування до неї DNSSEC).

Спрощено механізм перевірки DNSSEC працює так: клієнт відправляє запит на DNS сервер, сервер повертає DNS відповідь з цифровим підписом. Оскільки клієнт має відкритим ключем центру сертифікації, який підписав записи DNS, він може розшифрувати підпис (хеш-значення) і перевірити відповідь DNS. Для цього і клієнт і сервер DNS повинні бути налаштовані на використання одного якоря довіри (trust anchor). Якір довіри – попередньо налаштований відкритий ключ, пов’язаний з конкретною зоною DNS. Якщо DNS сервер підтримує кілька зон, то може використовуватися кілька якорів довіри.

Важливо відзначити, що основне призначення DNSSEC – захист від підробки та модифікації DNS-запитів і відповідей. Але самі передаються по мережі дані не шифруються (хоча конфіденційність DNS даних і може бути забезпечено за допомогою шифрування, але це опціонально і не є основною метою DNSSEC).

Основні компоненти DNSSEC визначені в наступних стандартах RFC:

DNSSEC в системах Windows

Підтримка технологія DNSSEC з’явилася ще в Windows Server 2008 R2 і Windows 7. Однак через складність і неочевидності налаштувань, широкого поширення вона не отримала. Свій подальший розвиток DNSSEC отримала в Windows Server 2012, в якому функціонал DNSSEC був істотно розширено, і передбачає можливість налаштування через графічний інтерфейс.

У цій статті ми опишемо базову установку і настройку DNSSEC на базі DNS сервера з ОС Windows Server 2012, створимо підписану зону і точки довіри.

Установка і настройка DNSSEC в Windows Server 2012

Створимо нову DNS зону dnssec.contoso.com і додамо в неї одну A запис сервера SRV12 з адресою 192.168.1.14.

Примітка. У Windows 8/2012 замість утиліти nslookup для отримання інформації з DNS сервера краще скористатися Powershell Командлети Resolve-DnsName.

Resolve-DnsName srv12.dnssec.contoso.com –Server SRV12-SUB-CA –DnssecOk

Resolve-DnsName - аналог додаткової оболонки nslookup

Оскільки зона не підписана, запит не поверне записи RRSIG.

Підпишемо цифровим сертифікатом внутрішню DNS зону dnssec.contoso.com. Для цього в консолі DNS клацніть правою кнопкою по зоні і виберіть пункт DNSSEC-> Підписати зону.

dnssec підпис зони

У який з’явився майстра Zone Signing Wizard залиште всі параметри за замовчуванням (Use default settings to sign the zone) -> Next -> Next -> Finish.

Майстер підписування зон

Після закінчення роботи майстра в підписаній зоні автоматично створяться такі нові ресурсні записи:

  • RRSIG (Resource Read Signature) – підпис ресурсної записи
  • DNSKEY (A Public Key) – зберігає публічну частину ключа і його ідентифікатори
  • DS (Delegation Signer) – містить хеш доменного імені спадкоємця і його ключа KSK
  • NSEC (Next Secure) і NSEC3 (Next Secure 3) – використовується для надійного захисту від spoofing атак

вміст безпечної dns зони dnssec

Після того, як зона підписана, відкритий ключ буде збережений у файлі% windir% system32 dns keyset-dnssec.

Імпортуємо в DNS відкритий ключ зони (той самий якір довіри), перейшовши в консолі DNS в розділ Trust Point, вибравши import -> DNSKEY, і вказавши шлях до файлу keyset-dnssec.

Примітка. Даний ключ необхідно поширити на всі DNS сервера, яким будуть брати участь в процесі безпечного кешування даних підписаної зони.

імпорт відкритого ключа зони

В результаті імпорту ключа в розділі Trust Points -> dnssec з’явиться два ключа типу DNSKEY (один ключ активний, інший – standby).

dnssec відкриті ключі

У Windows Server 2012 можливо автоматично реплицировать ключі якорів довіри (Trust Anchors) за всіма контролерам домену в лісі, що обслуговує дану зону DNS. Для цього у властивостях потрібної зони (dnssec) на вкладці Якір довіри включите опцію Увімкніть розподіл якорів довіри для цієї зони і збережіть зміни.

Реплікація прив'язок довіри між DNS-серверами Active Directory

Спробуємо ще раз опитати цю зону з клієнта.

nslookup dnssec

Як ми бачимо, у відповіді DNS сервера є інформації про RRSIG записи і цифрового підпису.

Налаштування клієнтів WIndows на використання DNSSEC

Щоб змусити клієнтів на ОС Windows примусово використовувати тільки «безпечні» (DNSSEC) запити, тобто приймати DNS дані тільки в тому випадку, якщо їх цифровий підпис вірна, необхідно за допомогою GPO задіє політику NRPT (Name Resolution Policy Table).

Для цього в розділі GPO Конфігурація комп’ютера -> Поліції -> Налаштування Windows -> Політика дозволу імен на вкладці DNSSEC включите опції:

  • Увімкніть DNSSEC у цьому правилі
  • Вимагати від клієнтів DNS перевіряти, чи дані імені та адреси перевірені сервером DNS

Включити обов'язкову перевірку dnssec на клієнтах Windows

Залишилося призначити політику на потрібну OU. Після застосування політики переконаємося, що клієнт налаштований на використання «безпечного» DNS:

Get-DnsClientNrptPolicy

Get-DnsClientNrptPolicy - перевірка NRPT політики

значення DNSSecValidationRequired = Істинно, Тобто на клієнті потрібна обов’язкова валідація відповідей DNS.

У тому випадку, якщо отриманий від DNS сервера відповідь не буде підписаний, або буде підписаний невірним сертифікатів, команда поверне помилку Незахищений пакет DNS.

DNSSEC для зовнішніх зон

Щоб DNS сервер вимагав обов’язкової перевірки DNSSEC для зовнішніх зон, потрібно в його властивостях на вкладці Розширений включити опцію Увімкніть перевірку DNSSEC для віддалених відповідей.

Enable-DNSSEC-validation-for-remote-responses - включити DNSSEC для зовнішніх зон

Імпортувати якоря довіри кореневих зон можна вручну (описано вище), або за допомогою команди:

dnscmd /RetrieveRootTrustAnchors
Порада. Для коректної роботи DNSSEC необхідно внести ряд змін в міжмережеві екрани:

  1. Відкрити в обидві сторони порт 53 порт протоколів TCP і UDP
  2. Оскільки розмір даних в пакеті DNSSec перевищують 512 байт, необхідно дозволити проходження DNS пакетів більше 512 байт по UDP і TCP

Leave a Reply

Your email address will not be published. Required fields are marked *