Раніше в статті, присвяченій DNS-серверам, ми розглянули схему їхньої взаємодії між собою під час дозволу доменного імені. При цьому не були враховані деякі питання безпеки, які вносять свої корективи в роботу серверів завдяки використанню засобів захисту від атак, одним із яких є механізм DNSSEC. Розглянемо особливості його застосування та вплив на роботу системи DNS.
Уразливі місця в роботі DNS-протоколу
Під час дозволу доменного імені DNS-клієнти (резолвери) постійно звертаються до серверів для отримання авторитетної інформації про домен у вигляді його власної IP-адреси. Для прискорення роботи системи такі запити кешуються, і надалі ця інформація використовується серверами для формування відповідей іншим DNS-клієнтам.
У разі, якщо в кеш якимось чином потрапляє недостовірна IP-адреса, то вона швидко поширюється мережею, що призводить до масового перенаправлення клієнтів з адреси домену, що запитується, на адресу, збережену в кеші. Саме цю вразливість найчастіше використовують зловмисники. Такий тип атаки отримав назву отруєння кешу DNS (DNS cache poisoning).
"Отруїти" кеш можна, наприклад, таким чином.
Об'єкт злому з ім'ям Server1 формує запит до об'єкта-зловмисника з ім'ям Server2. При цьому А-запис може виглядати наступним чином:
subdomain.attacker.mynewsite. IN A
Server2 надсилає таку відповідь:
Answer: (no response) Authority section: attacker.mynewsite. 3600 IN NS ns.target.mynewsite.
Additional section:
ns.target.mynewsite. IN A a.b.c.d
Де a.b.c.d – IP-адреса Server2.
У результаті Server1 зберігає у своєму кеші зазначену в додатковій секції IP-адресу Server2. Це дасть змогу надалі розповсюджувачу недостовірної інформації відповідати на запити для всього домену target.mynewsite, тобто перенаправляти DNS-клієнтів туди, куди треба зловмиснику, наприклад, на заражений вірусами-здирниками сайт.
Таким чином, якщо сервери не перевірятимуть відповіді інших серверів на коректність, завжди буде висока небезпека отруєння кешу і, відповідно, видачі помилкових адрес у системі DNS.
Протистояти атакам можна за допомогою вжиття таких заходів на боці DNS-сервера:
- Ігнорування записів, які безпосередньо не належать до DNS-запиту;
- Використання випадкових UDP-портів для виконання запитів у системі DNS;
- Застосування механізму DNSSEC.
Ігнорування записів, як і будь-який прояв зменшення рівня довіри до одержуваної інформації, безсумнівно, зменшить імовірність зараження кеша, однак повністю його не виключить.
Метод захисту з використанням UDP-портів міг би бути результативним, якби мережеві пристрої, що виконують трансляцію портів (PAT), не втрачали випадковість, створену сервером. Це зводить нанівець роботу серверного обладнання, не даючи можливості забезпечити випадковий вибір порту.
Механізм DNSSEC (Domain Name System Security Extensions) використовує цифровий підпис для забезпечення цілісності даних. Використання методу може бути ефективним лише за умови наявності спеціального програмного забезпечення на стороні DNS-сервера і клієнта. Нижче розглянемо використання механізму більш детально.
Основи DNSSEC
Розширення дає змогу вибудувати ланцюг "довірчих" відносин між серверами й у такий спосіб убезпечити їх від отримання неправдивих відомостей. Цей ланцюг йде від кореневої зони, тому процес впровадження DNSSEC починається з підпису кореневих зон доменів, а потім поширюється на кореневі сервери доменних областей. Це довготривалий процес, який почався ще кілька років тому і досі повністю не завершений.
У специфікаціях RFC 4033, RFC 4034 и RFC 4035 детально описано структуру протоколу DNSSEC, що дає змогу впроваджувати його повсюдно для всіх доменних областей мережі, більша частина яких уже використовує його на практиці.
Суть використання механізму полягає в наступному. Кожному із збережених на сервері DNS-записів доменної області, що зберігаються на сервері, ставиться у відповідність так званий цифровий підпис. Відповідь сервера може вважатися довірчою тільки в разі проходження всіх перевірок і, відповідно, повної верифікації зазначеного запису. Для цих цілей використовується механізм ключів.
Головний ключ KSK (Key Signing key) необхідний для підпису ключа кореневої зони, що має назву ZSK (Zone Signing Key). ZSK-ключі є тимчасовими і оновлюються чотири рази на рік. Їх створює один із підрозділів міжнародної корпорації ICANN.
У вершині довірчого ланцюга знаходиться кореневий домен і ключ ZSK кореневої зони.
Обробка DNS-запитів у разі ввімкненого DNSSEC
Наведемо спрощену схему взаємодії DNS-серверів у разі підключення розширення безпеки:
- Користувач вводить адресу сайту information.com;
- Перевіряється наявність відповіді в кеші локального сервера і в разі її відсутності DNS-клієнт (резолвер) запитує дані у сервера провайдера;
- У разі відсутності даних за запитуваним доменом запит перенаправляється на кореневий сервер, що містить ознаку підключення розширення DNSSEC;
- Кореневий сервер повертає адресу сервера, який відповідає за доменну область .com (m.b.v.net), а також NS і DS записи та їхній підпис;
- DNS-клієнт проводить перевірку ZSK, підпису DS-записів кореневої зони і в разі успіху підпис DNSKEY-запису рівня нижче зони .com;
- У разі успішності всіх виконаних на попередньому кроці перевірок, резолвер перенаправляє свій запит за адресою m.b.v.net;
- m.b.v.net видає відповідь, що відповідальним за зону information.com є сервер z.com та повертає підписані за допомогою KSK-ключа KSK-зони .com набір ZSK-ключів для зони .com, а також підписаний за допомогою ZSK зони .com DS-запис KSKзони information.com;
- DNS-клієнт порівнює отриманий від кореневого сервера хеш із тим, який він сам вирахував з KSK зони .com і який було отримано від m.b.v.net, та в разі успіху перевіряє підписи ключів із зони .com і починає довіряти ZSK цієї зони. Також перевіряється KSK зони information.com;
- У разі успішності виконання перевірок попереднього етапу резолвер отримує DS-запис KSK зони information.com та адресу сервера z.com, де зберігається інформація про зону information.com;
- Клієнт звертається на сервер z.com за IP-адресою сайту information.com і при цьому виставляє ознаку підключення DNSSEC;
- Коли сервер z.com дізнається, що зона information.com перебуває на ньому ж, він відправляє клієнту відповідь із підписаними за допомогою KSK зони information.com набір ZSK-ключів зони information.com та підписану ZSK IP-адресу сайту information.com;
- Клієнт перевіряє KSKзони information.com, ZSK зони information.com, а також IP-адресу сайту information.com;
- У разі успішної перевірки резолвер повертає користувачеві відповідь з IP-адресою сайту information.com і підтвердженням, що відповідь успішно пройшла верифікацію.
Тут DS (Delegation of Signing) - запис, що містить хеш домену спадкоємця та його KSK-ключа; DNSKEY- запис, що містить публічну частину ключа та його ідентифікатори.
Наведений алгоритм є базовим і завжди виконується під час дозволу доменного імені в системі DNS.