Раніше в статті, присвяченій DNS-серверам, ми розглядали схему їхньої взаємодії між собою під час розв’язання доменного імені. При цьому не було враховано деякі питання безпеки, які вносять свої корективи в роботу серверів завдяки використанню засобів захисту від атак, одним із яких є механізм DNSSEC. Розглянемо особливості його застосування та вплив на роботу системи DNS.
Уразливі місця в роботі DNS-протоколу
Під час розв’язання доменного імені DNS-клієнти (резолвери) постійно звертаються до серверів для отримання авторитетної інформації про домен у вигляді його IP-адреси. Для прискорення роботи системи такі запити кешуються, і надалі ця інформація використовується серверами для формування відповідей іншим DNS-клієнтам.
У разі, якщо до кешу будь-яким чином потрапляє недостовірна IP-адреса, вона швидко поширюється мережею, що призводить до масового перенаправлення клієнтів із адреси запитуваного домену на адресу, збережену в кеші. Саме цю уразливість найчастіше використовують зловмисники. Такий тип атаки отримав назву отруєння кешу DNS (DNS cache poisoning).
«Отруїти» кеш можна, наприклад, таким чином.
Об’єкт зламу з іменем Server1 формує запит до об’єкта-зловмисника з іменем Server2. При цьому A-запис може виглядати так:
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-ключем зони .com набір ZSK-ключів для зони .com, а також підписану ZSK-зони .com DS-запис KSK зони information.com;
- DNS-клієнт порівнює отриманий від кореневого сервера хеш із тим, який він сам обчислив із KSK зони .com, і в разі успіху перевіряє підписи ключів із зони .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.
