A popular DNS security overview. Modern theory and practice
1. Безопасность DNS
Популярный обзор современной
теории и практик
1
D I P H O S T Филипп Кулин, III квартал 2018 года, UNLICENSECryptoInstallFest 5Эшер II
2. DNS это просто?
Три каверзных вопроса
Каков максимальный размер доменного имени?
● Точку на конце надо ставить?
● Что именно спрашивает ресолвер и что отвечают DNS-
сервера при рекурсивном обходе?
2
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
3. Устройство DNS
root
RU
gov.ru spb.ru
COM
vk.com test.com
metro.spb.ru gov.spb.ru
П
о
т
р
е
б
и
т
е
л
ь
Р
е
с
о
л
в
е
р
ы
технические связи
административные связи
3
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
4. Особенности классического DNS
● UDP транспорт. Нет соединения
● Нет идентификации серверов DNS
● Нет контроля данных
● Нет шифрования
4
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
5. Угрозы в системе DNS
root
RU
gov.ru spb.ru
metro.spb.ru gov.spb.ru
П
о
т
р
е
б
и
т
е
л
ь
Р
е
с
о
л
в
е
р
ы
технические связи
административные связи взлом сервера
несанкционированный доступ
отравление прослушка, подделка
spb.ru
ложный сервер
5
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
6. Заложенная в DNS безопасность
6
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
7. Основные проблемы
Подделка
● Отравление
● Перехват и подделка
● Взлом серверов и замена записей
● Поддельные серверы, BGP-injection
Прослушка
● Промышленный шпионаж
● Система блокировок сайтов
● Шпионаж
● Маркетинговые исследования
7
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
8. Защита от подделки DNS
● Расширение DNSSEC
● Не «взлетевший» DNSCurve
8
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
9. Расширение DNSSEC
Подпись записей зоны
Записи зоны подписаны с помощью системы электронной
подписи. Подписи и открытый ключ, соответствующий
закрытому, публикуются в зоне.
Цепочка доверия
Родительская зона подтверждает достоверность ключа,
которым подписана зона потомка. Подтверждения
выстраиваются в цепочку доверия.
Если мы доверяем данному ключу, то мы имеем
возможность проверить любую подписанную запись.
9
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
10. DNSSEC. Подпись зоны
DNSKEY
AAAA
NS
SOA
Key-signing key (KSK)
Ключом KSK
подписан сам ключ
KSK и ключ ZSK
DNSKEY
Zone-signing key (ZSK)
Ключом ZSK
подписаны все
записи зоны
10
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
11. DNSSEC. Цепочка доверия
DNSKEY (KSK)
example DS
.tld
DNSKEY (KSK)
sub.example DS
example.tld
DNSKEY (KSK)
sub.example.tld
11
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
12. DNSSEC. Особенности
● Требует аккуратности и непрерывного обслуживания
даже в статическом состоянии
● Сложное обслуживание
● Большой размер ответа
● Сложные реализации «отрицательного ответа»
● Возможность атаки с использованием предыдущих
значений записей, которые ещё не устарели
● Необходимость стартовых настроек клиента
● Крайне слабая глубина внедрения
● Источник ответа не важен
12
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
13. DNSSEC. Использование
Прозрачная проверка
Потребитель получает фильтрованные ответы
Явная проверка
Потребитель явно указывает ресолверу, что хочет
получить проверенный результат. Проверяет флаги ответа
Усиленная проверка
Потребитель проверяет подписи сам. Например, чтобы
гарантировать подлинность записей для работы с DANE
13
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
14. DNSSEC. Тренды
Алгоритм ECDSA
● скорость
● небольшой размер ответов по сравнению с RSA
Подпись «на лету»
● использование «белой лжи»
● использование «чёрной лжи»
Один ключ (Common Signing Key)
● уменьшает безопасность
● упрощает ротацию ключей
14
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
15. DNSSEC. Поддержка
Клиенты DNS
exim, systemd-resolved, утилиты dig, drill
Ресолверы
BIND, unbound, dnsmasq, PowerDNS recursor
Авторитативные сервера DNS
BIND, NSD, KNOT, PowerDNS, YADIFA, CoreDNS
Сервера DNS с подписью «на лету»
KNOT, CoreDNS, PowerDNS (частично)
15
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
16. DNSSEC. Типовые схемы клиента
Серверы
● Настроен локальный кэширующий DNS с проверкой
● Настроен удаленный кэширующий DNS с проверкой
● Используется systemd-resolved и какой-нибудь
удаленный кэширующий DNS
ПК
● Настроен локальный кэширующий DNS с проверкой
● Настроен кэширующий DNS с проверкой на роутере
● Проверку реализует браузер
16
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
17. DNSSEC. Полезные материалы
Полезные ссылки
http://dnsviz.net/ Визуализация DNS и DNSSEC
Мои презентации
https://www.slideshare.net/schors/dnssec-71055077 Руководство оператора DNS
https://www.slideshare.net/schors/dnssec-71055077 Руководство регистратора
RFC
RFC 4033 Введение в DNSSEC
RFC 4034 Ресурсные записи для DNSSEC
RFC 4035 Модификации протокола DNS для DNSSEC
RFC 6781 Эксплуатация DNSSEC
RFC 7583 Соображения по ротации ключей DNSSEC
17
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
18. DNSCurve
Основные задачи
● Аутентификация авторитативного DNS-сервера
● Защита обмена между ресолвером и авторитативным
сервером
Принцип действия
В записях NS домена задаётся публичный ключ DNS-
сервера, предваряемый магической строкой "uz5":
uz5qry75vfy162c239jgx7v2knkwb01g3d04qd4379s6mtcx2f0828.dnscurve.io.
Между ресолвером и DNS-сервером устанавливается
защищенное соединение по специальному протоколу с
использованием шифрования ED25519.
18
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
19. DNSCurve. Особенности
● Представляет исключительно академический интерес
● Не меняет саму спецификацию DNS
● Основан на вере в целостность системы
● Зависимость от источника ответа
● Не продумана ротация ключей и миграция
● Протокол «прибит» к определенному шифру
● Реализации исключительно ознакомительные
● Внедрение отсутствует
19
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
20. DNSCurve. Материалы
https://dnscurve.io/ Основной сайт
https://tools.ietf.org/html/draft-dempsky-dnscurve-01 DNSCurve Draft
https://mojzis.com/software/dq/ Реализация
20
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
21. Защита от прослушки DNS
● DNSCrypt
● DNS-over-TLS
● DNS-over-HTTPS Google API
● DNS-over-HTTP/2
● Минимизация QNAME при запросах
21
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
22. DNSCrypt
Основные задачи
● Аутентификация ресолвера
● Защита обмена между потребителем ресолвером
Принцип действия
Между потребителем и ресолвером устанавливается
защищенное соединение по специальному протоколу с
использованием шифрования ED25519.
Протокол обмена полностью идентичен DNSCurve
22
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
23. DNSCrypt. Ключи
Каждая сессия начинается запросом ключей и сертификатов
KEY1
Короткий ключ
CERT1
Короткий сертификат
KEY
Мастер-ключ
Ресолвер отвечает списком
ключей и сертификатов,
с ограниченным временем жизни
Все сертификаты утверждены
мастер-ключом ресолвера.
Он используется клиентами
для аутентификации ресолвера.
23
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
24. DNSCrypt. Особенности
● Нет ни RFC, ни Draft. Только спецификация на сайте
● Не меняет спецификацию DNS
● Протокол «прибит» к определенному шифру
● Не предусмотрена замена мастер-ключа
● Заметное распространение
● Достаточно простой и быстрый
● 443 порт
24
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
25. DNSCrypt. Поддержка
Клиенты
Яндекс.Браузер
Ресолверы (могут принять)
unbound, dnsdist
Ресолверы (могут спросить)
dnscrypt-proxy
Сервисы
Яндекс.DNS… Это оказалось сложным, большинство
публичных списков не актуальны
25
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
26. DNSCrypt. Материалы
https://dnscrypt.info/protocol/ Спецификация DNSCrypt
https://www.nlnetlabs.nl/projects/unbound Кэширующий DNS-сервер
https://dnsdist.org/ DNS load balanser
https://github.com/jedisct1/dnscrypt-proxy DNSCrypt-proxy 2
https://github.com/cofyc/dnscrypt-wrapper Серверная обёртка DNSCrypt
https://dns.yandex.ru/ Яндекс.DNS
26
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
27. DNS-over-TLS (DoT)
Основные задачи
● Аутентификация ресолвера
● Защита обмена между потребителем ресолвером
Принцип действия
Между потребителем и ресолвером устанавливается
защищенное TLS-соединение. Внутри соединения –
стандартный DNS протокол.
27
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
28. DNS-over-TLS. Особенности
● Требует установки TLS-соединения
● Не меняет спецификацию DNS
● Требует стартовых настроек клиента, если
вы не Cloudflare и не можете получить
сертификат x509 на IP-адрес
● 853 порт
28
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
29. DNS-over-TLS. Поддержка
Клиенты
systemd-resolved
Ресолверы (могут принять)
unbound, CoreDNS, dnsdist, KNOT Resolver
Ресолверы (могут спросить)
unbound, CoreDNS
Сервисы
Cloudflare DNS, Quad9
29
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
30. DNS-over-TLS. Материалы
RFC7858 Спецификация DNS-over-TLS
https://www.nlnetlabs.nl/projects/unbound Кэширующий DNS-сервер
https://dnsdist.org/ DNS load balanser
https://coredns.io/ CoreDNS сервер
30
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
31. DNS-over-HTTPS (Google API)
Google предоставляет JSON-API к DNS
Страница с описанием:
https://developers.google.com/speed/public-dns/docs/dns-over-https
Массово используется для веб-приложений
31
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
32. DNS-over-HTTPS (DoH)
Основные задачи
● Аутентификация ресолвера
● Защита обмена между потребителем ресолвером
Принцип действия
Формируется специальный HTTP-запрос к ресолверу, в
котором в один из параметров закодировано стандартное
сообщение DNS. В ответ ресолвер отдает
соответствующее сообщение DNS.
32
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
33. DNS-over-HTTPS. Особенности
● Работа через HTTPS
● Требует стартовых настроек клиента, если
вы не Cloudflare и не можете получить
сертификат x509 на IP-адрес
● Экспериментальный
33
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
34. DNS-over-HTTPS. Поддержка
Клиенты
FireFox, curl
Ресолверы (могут принять)
dnsdist-doh, facebook doh-proxy
Ресолверы (могут спросить)
dnscrypt-proxy
Сервисы
Cloudflare DNS, Google DNS
34
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
35. DNS-over-HTTPS. Материалы
https://tools.ietf.org/html/draft-ietf-doh-dns-over-https-14 DoH Draft
https://facebookexperimental.github.io/doh-proxy/ Facebook DoH proxy
https://github.com/ahupowerdns/pdns/tree/dnsdist-doh Dnsdist-doh
https://github.com/curl/curl/wiki/DNS-over-HTTPS Страница Curl о DoH
Страница FireFox о DNS-over-HTTPS:
https://blog.nightly.mozilla.org/2018/06/01/improving-dns-privacy-in-firefox/
35
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
36. Минимизация QNAME
Во время рекурсивного обхода ресолвер запрашивает у
каждого сервера искомый домен. В итоге каждый сервер
на пути обхода знает, кто и что конкретно искал.
RFC7816 предлагает экспериментальную методику
увеличения приватности при рекурсивном обходе.
36
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
37. Некоторые соображения
● Многие программы по умолчанию настраивают
"opportunistic" режим. Это опасно
● Методов стало больше одного, информация не всегда
обновляется и зачастую запутанна
● Just do it!
Полезные ссылки
https://dnsprivacy.org Проект DNSPrivacy
37
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
38. Вопросы
Если возникли вопросы, предложения или требуется
помощь, да и в любом случае — пишите мне:
phil@diphost.ru
38
D I P H O S T CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE
39. Это бесплатный документ, переданный в
общественное достояние.
Любой человек может свободно копировать,
изменять, публиковать, цитировать, использовать,
продавать или распространять этот документ на
любых носителях целиком или по частям для
любых коммерческих или некоммерческих целей во
всех смыслах.
Общественное достояние
D I P H O S T
39
CryptoInstallFest 5Эшер II Филипп Кулин, III квартал 2018 года, UNLICENSE