Защита от подмены dns
Архитектура системы доменных имен (DNS) за редким исключением остается неизменной с 1983 года. Каждый раз, когда вы хотите открыть сайт, браузер отправляет запрос с указанием домена на DNS-сервер, который в ответ отправляет необходимый IP-адрес. И запрос, и ответ на него передаются в открытом виде, без какого-либо шифрования. Это значит, что ваш провайдер, администратор сети или злоумышленник c MITM могут не только хранить историю всех запрошенных вами сайтов, но и подменять ответы на эти запросы. Звучит неприятно, не правда ли?
Предлагаю вспомнить несколько реальных историй перехвата и подмены DNS-запросов.
DNS hijacking
Перехват DNS-запросов (DNS hijacking) это не какая-то редкая страшилка, а вполне распространенная практика. Например, среди провайдеров. Обычно это работает следующим образом. Если пользователь пытается перейти на несуществующий сайт, то провайдер перенаправляет его на свою страницу с рекламой. А может и не на свою.
Вы, конечно же, можете отказаться от использования DNS-сервера провайдера и прописать в настройках роутера сторонние решения (например, Google Public DNS или Яндекс.DNS). Но при отсутствии шифрования это никак не решит проблему. Провайдер вполне может вмешаться и здесь, подменив ответ на свой.
Масштабы трояна DNSChanger впечатляют, но бразильцы его переплюнули. 4,5 млн DSL-модемов было взломано в одной только Бразилии в 2011-2012 годах. Для этого было достаточно разослать спам со ссылкой на вредоносную страницу, которая взламывала модем и прописывала новый адрес DNS-сервера. Причем в этот раз мошенники не стали мелочиться с рекламой. На своих подставных DNS-серверах они подменяли адреса для всех крупнейших банков Бразилии.
С домашними и офисными WiFi-роутерами дело обстоит так же печально, как и с бразильскими модемами. Пользователи нередко оставляют заводские логин и пароль на админку, да и за выходом свежих прошивок с исправленными уязвимостями не следит почти никто (кроме читателей Хабра, конечно же). В прошлом году исследователи из Sentrant в своем докладе рассказали о новых случаях взлома роутеров. Мошенники перехватывали обращения к Google Analytics и благодаря этому встраивали на сайты рекламу.
Думаю, с примерами перехвата можно закончить. Вывод тут простой: DNS перехватывают много, на разных этапах и с разной целью.
Во-вторых, вы больше не привязаны к серверу провайдера или настройкам своего роутера. DNSCrypt обращается за адресами напрямую на указанный вами сервер.
До сих пор для применения DNSCrypt пользователям было необходимо установить на компьютер отдельную утилиту. Это не сложно, но без широкого распространения знаний об угрозе и способах ее решения вряд ли стоит рассчитывать на массовое применение технологии.
Поддержка DNSCrypt в Яндекс.Браузере
При этом все запросы в зашифрованном виде будут отправляться на быстрый DNS-сервер Яндекса, который также получил поддержку протокола DNSCrypt. Ограничивать пользователей только одним сервером мы не хотим, поэтому уже в ближайшее время добавим в этом месте возможность выбрать альтернативный DNS-сервер (например, тот же OpenDNS).
И еще кое-что. Подменить IP-адрес на фишинговый можно не только через перехват запроса, но и через самый обычный системный host-файл. Поэтому мы сейчас экспериментируем с запретом использовать системный резолвер в случае недоступности DNS-сервера. Мы понимаем, что включение этой опции по умолчанию может навредить пользователям корпоративных и локальных ресурсов, поэтому пока только наблюдаем и собираем отзывы.
Чем бы ни занималась компания, безопасность DNS должна являться неотъемлемой частью ее плана по обеспечению безопасности. Службы обработки имен, преобразовывающие имена сетевых узлов в IP-адреса, используются буквально всеми приложениями и службами в сети.
Что такое DNSSEC?
DNSSEC — модули безопасности службы доменных имен — используются для проверки записей DNS без необходимости знать общую информацию по каждому конкретному DNS-запросу.
DNSSEC использует ключи цифровой подписи (PKI) для подтверждения того, получены ли результаты запроса доменного имени из допустимого источника.
Внедрение DNSSEC является не только лучшей отраслевой практикой, но также эффективно помогает избежать большинство атак на DNS.
Принцип работы DNSSEC
- Записи DNS подписываются парой закрытого и закрытого ключей
- Ответы на запросы DNSSEC содержат запрошенную запись, а также подпись и открытый ключ
- Затем открытый ключ используется для сравнения подлинности записи и подписи
Атаки на DNS
- Подмена DNS или «отравление» кэша
- Перехват DNS
Атаки с использованием DNS
- Fast-Flux
- Одиночные сети Flux
- Двойные сети Flux
Другие меры защиты
Когда решена проблема с конфиденциальностью DNS, самое время подумать о других потенциальных угрозах. Ни для кого не секрет, что Интернет буквально кишит тысячами трекеров, которые следят за каждым вашим кликом, а затем используют эту информацию, чтобы нацелить вас на рекламу и создать цифровой отпечаток. Как с этим бороться? AdGuard DNS — это не только DNS-преобразователь, но и фильтр трафика. Всякий раз, когда ваше устройство отправляет «плохой» запрос для нужд рекламных блоков и трекеров, то вместо правильного IP-адреса DNS-сервер AdGuard ничего не вернет. Просто, но эффективно.
AdGuard DNS блокирует запросы к рекламным и отслеживающим доменам
Наконец, AdGuard фактически предоставляет два варианта службы DNS – «По умолчанию» и «Семейный». Единственная разница между ними заключается в том, что в режиме «Семейный» дополнительно блокируется доступ к любому контенту, не предназначенному для детей, и принудительно используется параметр Safe Search в браузерах, которые поддерживают данную функцию.
Почему DNS уязвима для атак?
Технология DNS была создана на заре развития интернета, задолго до того, как кто-либо вообще начал думать о сетевой безопасности. DNS работает без аутентификации и шифрования, вслепую обрабатывая запросы любого пользователя.
В связи с этим существует множество способов обмануть пользователя и подделать информацию о том, где на самом деле осуществляется преобразование имен в IP-адреса.
DoT — DNS поверх TLS
Transport Layer Security (безопасность на транспортном уровне, TLS) — это криптографический протокол для защиты передаваемой информации по сетевому соединению. Как только между клиентом и сервером установлено безопасное соединение TLS, передаваемые данные шифруются и никакие посредники не смогут их увидеть.
Источник: University of California Irvine
Стандартные DNS-запросы передаются через UDP. Запросы и ответы можно отслеживать с помощью таких инструментов, как Wireshark. DoT шифрует эти запросы, но они по-прежнему идентифицируются как довольно отчетливый трафик UDP в сети.
- DNS-фильтрация — это распространенный способ фильтрации веб-трафика для защиты пользователей от фишинговых атак, сайтов, распространяющих вредоносные программы, или другой потенциально опасной интернет-активности в корпоративной сети. Протокол DoH обходит эти фильтры, потенциально подвергая пользователей и сеть более высокому риску.
- В текущей модели преобразования имен каждое устройство в сети в той или иной степени получает DNS-запросы из одного и того же места (из указанного DNS-сервера). DoH и, в частности, его реализация от Firefox показывают, что в будущем это может измениться. Каждое приложение на компьютере может получать данные из разных источников DNS, что значительно усложняет поиск и устранение проблем, обеспечение безопасности и моделирование рисков.
Что такое DNS?
Схематическое изображение работы DNS
На самом деле система DNS является более сложной, но этой информации достаточно, чтобы получить базовое понимание. Обычно ваш интернет-провайдер (или оператор используемой сети) сам решает, какой DNS-преобразователь следует использовать.
Содержание
Атаки на DNS
- подмена DNS или «отравление» кэша: использование уязвимости системы для управления кэшем DNS с целью перенаправления пользователей в другое место
- DNS-туннелирование: в основном используется для обхода средств защиты от удаленных подключений
- перехват DNS: перенаправление обычного трафика DNS на другой целевой DNS-сервер путем изменения регистратора домена
- атака NXDOMAIN: проведение DDoS-атаки на авторитетный сервер DNS путем отправки неправомерных доменных запросов для получения принудительного ответа
- фантомный домен: заставляет DNS-преобразователь (DNS resolver) ждать ответа от несуществующих доменов, что приводит к снижению производительности
- атака на случайный субдомен: взломанные хосты и ботнеты проводят DDoS-атаку на действующий домен, но сосредотачивают огонь на ложных субдоменах, чтобы принудить DNS-сервер выполнять поиск записей и захватить управление над службой
- блокировка домена: представляет собой отправку множества спам-откликов для блокировки ресурсов DNS-сервера
- ботнет-атака с абонентского оборудования: совокупность компьютеров, модемов, роутеров и других устройств, концентрирующих вычислительную мощность на определенном веб-сайте для его перегрузки запросами трафика
Установка программы YogaDNS
Поддерживаемые операционные системы
- Microsoft Windows 7
- Microsoft Windows 8
- Microsoft Windows 8.1
- Microsoft Windows 10
- Microsoft Windows Server 2012
- Microsoft Windows Server 2016
- Microsoft Windows Server 2019
Поддерживаемые протоколы
Установка
- Запустить файл инсталляции программы YogaDNS
- В окне приветствия нажать кнопку Next
- Принять лицензионное соглашение, установив радиокнопку I accept the agreement и нажать кнопку Next
- Указать директорию для установки программы
Рис.1 Установка программы YogaDNS
В следующем диалоговом окне можно выставить следующие значения для программы:
- Start YogaDNS automatically on Windows startup – автоматический запуск программы YogaDNS при старте ОС MS Windows
- Check for product updates on YogaDNS startup – проверка обновлений при запуске программы YogaDNS
- Create a desktop shortcut – создать ярлык на рабочем столе
Рис.2 Установка программы YogaDNS
В следующем диалоговом окне нажать кнопку Install и по окончании установки программы нажать кнопку Finish.
Рис.3 Установка программы YogaDNS
При первом запуске программы YogaDNS в окне мастера первого запуска можно выбрать определенный сценарий. Данное окно можно запустить в любое время, выбрав в главном меню Configuration > First Start Wizard
Рис.4 Открытие мастера первого запуска
Мастер упрощает процесс настройки программы при добавлении определенных DNS серверов, указанных в окне First Start Wizard, в этом случае настройки (выбор протокола, указание IP адреса, порта и др.) происходят в автоматическом режиме. Достаточно в окне мастера первого запуска выбрать DNS сервер и в дальнейшем правило по умолчанию будет задействовано для выбранного DNS сервера.
Также в окне мастера доступна опция Import servers from the web, test and select, которая позволяет импортировать DNS сервера. Импорт DNS серверов рассмотрен ниже.
Можно начать с пустой конфигурации, оставив радиокнопку по умолчанию Start with an empty configuration. All queries will be unaltered и нажать Next. В любом случае, если Вы начнете с пустой конфигурации, необходимо будет вручную добавлять определенный сервер DNS.
Рис.5 Мастер первого запуска
Если в программе YogaDNS не прописаны DNS-сервера, все DNS-запросы игнорируются.
Рис.6 Журнал YogaDNS
После того, как была выбрана пустая конфигурация, в появившемся окне будет предложено добавить DNS – сервера и настроить правила.
Рис.7 Мастер первого запуска
Для добавления определенного DNS – сервера необходимо в главном меню выбрать Configuration > DNS Servers. Также данное окно можно открыть, кликнув ПКМ по иконке программы YogaDNS в системном трее и выбрав DNS Servers.
Рис.8 Добавление DNS сервера
В открывшемся окне DNS Servers необходимо нажать кнопку Add, чтобы добавить нужный (-е) DNS – сервер (-ы).
Рис.9 Добавление DNS сервера
- User friendly name – произвольное имя, которое необходимо задать для дальнейшего обращения к данному серверу с последующей настройкой правил и просмотра детализированной информации в журнале.
- IP address and optional port – IP – адрес и порт (при необходимости) используемого DNS – сервера.
- Protocol – в раскрывающемся списке в зависимости от DNS сервера можно выбрать используемый протокол.
Для проверки корректности настроек и отображения времени отклика (RTT - roundtrip time) нажать кнопку Check. RTT определяет задержку, с которой приходит ответ на запросы от удаленного сервера. Если приходится выбирать один из нескольких серверов, выбор падает на сервер с наименьшим показателем RTT.
Рис.10 Добавление DNS сервера
После проверки нажать кнопку ОК.
Подводим итоги
Как же настроить AdGuard DNS? Укажите DNS-сервера для вашего подключения или прямо на маршрутизаторе, используя нашу инструкцию.
DNS сервера
94.140.14.14 и 94.140.15.15 для серверов «По умолчанию»
94.140.14.140 и 94.140.14.141 для серверов «Нефильтрующие»
94.140.14.15 и 94.140.15.16 для серверов «Семейный»
DNS-over-TLS
Помните, что AdGuard DNS – проект с открытым исходным кодом, как и все бесплатные продукты AdGuard. Компания считает чрезвычайно важным, чтобы услуги и продукты, которым вы доверяете защиту конфиденциальности данных, были максимально прозрачными и заслуживающими доверия. Чтобы просмотреть исходный код, узнать все о AdGuard DNS или даже оставить предложение, посетите репозиторий в GitHub.
Команда разработчиков надеется, что пользователям понравится AdGuard DNS. Они убеждены, что проект будет только расти. В будущем будет добавлено больше расположений серверов и новые дополнительные функции.
YogaDNS — это DNS клиент, который перехватывает DNS-запросы на системном уровне и позволяет обрабатывать их через определенные пользователем DNS-серверы с использованием заданных протоколов и гибких правил.
Безопасность DNS и DNSSEC
DNSSEC — это средство для проверки целостности DNS-запросов. Оно не влияет на конфиденциальность DNS. Иными словами, DNSSEC может дать вам уверенность в том, что ответ на ваш DNS-запрос не подделан, но любой злоумышленник может увидеть эти результаты в том виде, в каком они были переданы вам.
DNSCrypt
DNSCrypt стал первой попыткой обезопасить DNS-трафик от злоумышленников. Это специальный протокол, который зашифровывает связь между вашим устройством и DNS-сервером, защищая его от несанкционированного доступа и атак типа «человек посередине» (MITM-атаки). AdGuard DNS уже давно поддерживает эту технологию.
С AdGuard DNS ваш трафик защищен
Безопасность DNS: вопросы и компоненты
- Усиление безопасности серверов и процедур управления: повышайте уровень защищенности серверов и создайте стандартный шаблон ввода в эксплуатацию
- Совершенствование протокола: внедрите DNSSEC, DoT или DoH
- Аналитика и отчетность: добавьте журнал событий DNS в SIEM-систему для дополнительного контекста при расследовании инцидентов
- Киберразведка и обнаружение угроз: подпишитесь на активный канал получения аналитических данных об угрозах
- Автоматизация: создайте максимально возможное количество сценариев, чтобы автоматизировать процессы
В понятие безопасности DNS входят две важные составляющие:
- Обеспечение общей целостности и доступности служб DNS, преобразовывающих имена сетевых узлов в IP-адреса
- Мониторинг активности DNS для определения возможных проблем безопасности где-либо в вашей сети
Импорт DNS сервера на примере Comss.one с использованием протокола DNSCrypt
Для упрощения процесса первоначальных настроек DNS серверов в программе реализована возможность импортировать настройки DNS серверов.
В главном меню программы выбрать Configuration > DNS Servers
В окне DNS Servers выбрать Get from the web…
Рис.17 Импорт DNS серверов
В открывшемся окне Import Settings нажать кнопку Load для выбора DNS сервера
Рис.18 Импорт DNS серверов
В окне Import servers from the web можно выбрать DNS сервер (-ы), установив флажок в соответствующем чекбоксе и нажать кнопку Import Marked.
В данном примере выбран DNS сервер Comss.one DNS с использованием протокола DNSCrypt.
Оповещения мониторинга DNS
Возможность эффективно отслеживать трафик DNS в вашей сети на предмет подозрительных аномалий имеет решающее значение для раннего обнаружения взлома. Использование такого инструмента, как Varonis Edge даст вам возможность быть в курсе всех важных показателей и создавать профили для каждой учетной записи в вашей сети. Вы можете настроить генерацию оповещений в результате комбинации действий, происходящих за определенный период времени.
Мониторинг изменений DNS, местоположений учетной записи, а также фактов первого использования и получения доступа к конфиденциальным данным, а также активности в нерабочее время — это лишь несколько показателей, которые можно сопоставить для составления более обширной картины обнаружения.
Шифрование трафика между вашим устройством и DNS-сервисом помешает посторонним лицам отслеживать трафик или подменить адрес
Смерть сетевого нейтралитета и ослабление правил для интернет-провайдеров по обработке сетевого трафика вызвали немало опасений по поводу конфиденциальности. У провайдеров (и других посторонних лиц, которые наблюдают за проходящим трафиком) уже давно есть инструмент, позволяющий легко отслеживать поведение людей в интернете: это их серверы доменных имен (DNS). Даже если они до сих пор не монетизировали эти данные (или не подменяли трафик), то наверняка скоро начнут.
«Открытые» DNS-сервисы позволяют обходить сервисы провайдеров ради конфиденциальности и безопасности, а кое в каких странах — уклоняться от фильтрации контента, слежки и цензуры. 1 апреля (не шутка) компания Cloudflare запустила свой новый, бесплатный и высокопроизводительный DNS-сервис, предназначенный для повышения конфиденциальности пользователей в интернете. Он также обещает полностью скрыть DNS-трафик от посторонних глаз, используя шифрование.
Названный по своему IP-адресу, сервис 1.1.1.1 — это результат партнёрства с исследовательской группой APNIC, Азиатско-Тихоокеанским сетевым информационным центром, одним из пяти региональных интернет-регистраторов. Хотя он также доступен как «открытый» обычный DNS-резолвер (и очень быстрый), но Cloudflare ещё поддерживает два протокола шифрования DNS.
Хотя и разработанный с некоторыми уникальными «плюшками» от Cloudflare, но 1.1.1.1 — никак не первый DNS-сервис с шифрованием. Успешно работают Quad9, OpenDNS от Cisco, сервис 8.8.8.8 от Google и множество более мелких сервисов с поддержкой различных схем полного шифрования DNS-запросов. Но шифрование не обязательно означает, что ваш трафик невидим: некоторые службы DNS с шифрованием всё равно записывают ваши запросы в лог для различных целей.
Cloudflare пообещал не журналировать DNS-трафик и нанял стороннюю фирму для аудита. Джефф Хастон из APNIC сообщил, что APNIC собирается использовать данные в исследовательских целях: диапазоны 1.0.0.0/24 и 1.1.1.0/24 изначально были сконфигурированы как адреса для «чёрного» трафика. Но APNIC не получит доступ к зашифрованному трафику DNS.
Для пользователей подключить DNS-шифрование не так просто, как изменить адрес в настройках сети. В настоящее время ни одна ОС напрямую не поддерживает шифрование DNS без дополнительного программного обеспечения. И не все сервисы одинаковы с точки зрения софта и производительности.
Как работает DNS
Есть много причин для лучшей защиты DNS-трафика. Хотя веб-трафик и другие коммуникации могут быть защищены криптографическими протоколами, такими как Transport Layer Security (TLS), но почти весь трафик DNS передаётся незашифрованным. Это означает, что ваш провайдер (или кто-то другой между вами и интернетом) может регистрировать посещаемые сайты даже при работе через сторонний DNS — и использовать эти данных в своих интересах, включая фильтрацию контента и сбор данных в рекламных целях.
Как выглядит типичный обмен данными между устройством и DNS-резолвером
«У нас есть проблема “последней мили” в DNS, — говорил Крикет Лю, главный архитектор DNS в компании Infoblox, которая занимается информационной безопасностью. — Большинство наших механизмов безопасности решают вопросы коммуникаций между серверами. Но есть проблема с суррогатами резолверов на различных операционных системах. В реальности мы не можем их защитить». Проблема особенно заметна в странах, где власти более враждебно относятся к интернету.
Наиболее очевидный способ уклонения от слежки — использование VPN. Но хотя VPN скрывают содержимое вашего трафика, для подключения к VPN может потребоваться запрос DNS. И в ходе VPN-сеанса запросы DNS тоже могут иногда направляться веб-браузерами или другим софтом за пределы VPN-тоннеля, создавая «утечки DNS», которые раскрывают посещённые сайты.
Однако эта опция защиты недоступна массовому пользователю. Ни один из этих протоколов нативно не поддерживается ни одним DNS-резолвером, который идёт в комплекте с ОС. Все они требуют установки (и, вероятно, компиляции) клиентского приложения, которое действует как локальный «сервер» DNS, ретранслируя запросы, сделанные браузерами и другими приложениями вверх по течению к безопасному провайдеру DNS по вашему выбору. И хотя две из трёх данных технологий предлагаются на роль стандартов, ни один из проверенных нами вариантов пока не представлен в окончательном виде.
Поэтому если хотите погрузиться в шифрование DNS, то лучше взять для DNS-сервера в домашней сети Raspberry Pi или другое отдельное устройство. Потому что вы наверняка обнаружите, что настройка одного из перечисленных клиентов — это уже достаточно хакерства, чтобы не захотеть повторять процесс заново. Проще запросить настройки DHCP по локальной сети — и указать всем компьютерам на одну успешную установку DNS-сервера. Я много раз повторял себе это во время тестирования, наблюдая падение одного за другим клиентов под Windows и погружение в спячку клиентов под MacOS.
Сообщество DNSCrypt пыталось сделать доступный инструмент для тех, кто не обладает навыками работы в командной строке, выпустив программы DNSCloak (слева) под iOS и Simple DNSCrypt (справа) под Windows
Для полноты картины в исторической перспективе начнём обзор с самой первой технологии шифрования DNS — DNSCrypt. Впервые представленный в 2008 году на BSD Unix, инструмент DNSCrypt изначально предназначался для защиты не от прослушки, а от DNS-спуфинга. Тем не менее, его можно использовать как часть системы обеспечения конфиденциальности — особенно в сочетании с DNS-сервером без логов. Как отметил разработчик DNSCrypt Фрэнк Денис, гораздо больше серверов поддерживают DNSCrypt, чем любой другой вид шифрования DNS.
«DNSCrypt — это немного больше, чем просто протокол, — говорит Фрэнк Денис. — Сейчас сообщество и активные проекты характеризуют его гораздо лучше, чем мой изначальный протокол, разработанный в выходные». Сообщество DNSCrypt создало простые в использовании клиенты, такие как Simple DNSCrypt для Windows и клиент для Apple iOS под названием DNS Cloak, что делает шифрование DNS доступнее для нетехнических людей. Другие активисты подняли независимую сеть приватных DNS-серверов на основе протокола, помогающего пользователям уклониться от использования корпоративных DNS-систем.
«DNSCrypt — это не подключение к серверам конкретной компании, — сказал Денис. — Мы призываем всех поднимать собственные сервера. Сделать это очень дёшево и легко. Теперь, когда у нас есть безопасные резолверы, я пытаюсь решить задачу фильтрации контента с учётом конфиденциальности».
Для тех, кто хочет запустить DNS-сервер с поддержкой DNSCrypt для всей своей сети, лучшим клиентом будет DNSCrypt Proxy 2. Старая версия DNSCrypt Proxy по-прежнему доступна как пакет для большинства основных дистрибутивов Linux, но лучше загрузить бинарник новой версии непосредственно с официального репозитория на GitHub. Есть версии для Windows, MacOS, BSD и Android.
Опыт сообщества DNSCrypt по защите конфиденциальности воплощён в DNSCrypt Proxy. Программа легко настраивается, поддерживает ограничения по времени доступа, шаблоны для доменов и чёрный список IP-адресов, журнал запросов и другие функции довольно мощного локального DNS-сервера. Но для начала работы достаточно самой базовой конфигурации. Есть пример файла конфигурации в формате TOML (Tom's Obvious Minimal Language, созданный соучредителем GitHub Томом Престоном-Вернером). Можете просто переименовать его перед запуском DNSCrypt Proxy — и он станет рабочим файлом конфигурации.
По умолчанию прокси-сервер использует открытый DNS-резолвер Quad9 для поиска и получения с GitHub курируемого списка открытых DNS-сервисов. Затем подключается к серверу с самым быстрым откликом. При необходимости можно изменить конфигурацию и выбрать конкретный сервис. Информация о серверах в списке кодируется как «штамп сервера». Он содержит IP-адрес поставщика, открытый ключ, информацию, поддерживает ли сервер DNSSEC, хранит ли провайдер логи и блокирует ли какие-нибудь домены. (Если не хотите зависеть от удалённого файла при установке, то можно запустить «калькулятор штампов» на JavaScript — и сгенерировать собственный локальный статичный список серверов в этом формате).
Для своего тестирования DNSCrypt я использовал OpenDNS от Cisco в качестве удалённого DNS-сервиса. При первых запросах производительность DNSCrypt оказалась немного хуже, чем у обычного DNS, но затем DNSCrypt Proxy кэширует результаты. Самые медленные запросы обрабатывались в районе 200 мс, в то время как средние — примерно за 30 мс. (У вас результаты могут отличаться в зависимости от провайдера, рекурсии при поиске домена и других факторов). В целом, я не заметил замедления скорости при просмотре веб-страниц.
С другой стороны, DNSCrypt для шифрования не полагается на доверенные центры сертификации — клиент должен доверять открытому ключу подписи, выданному провайдером. Этот ключ подписи используется для проверки сертификатов, которые извлекаются с помощью обычных (нешифрованных) DNS-запросов и используются для обмена ключами с использованием алгоритма обмена ключами X25519. В некоторых (более старых) реализациях DNSCrypt есть условие для сертификата на стороне клиента, который может использоваться в качестве схемы управления доступом. Это позволяет им журналировать ваш трафик независимо от того, с какой IP-адреса вы пришли, и связывать его с вашим аккаунтом. Такая схема не используется в DNSCrypt 2.
С точки зрения разработчика немного сложно работать с DNSCrypt. «DNSCrypt не особенно хорошо документирован, и не так много его реализаций», — говорит Крикет Лю из Infoblox. На самом деле мы смогли найти только единственный клиент в активной разработке — это DNSCrypt Proxy, а OpenDNS прекратил поддерживать его разработку.
Интересный выбор криптографии в DNSCrypt может напугать некоторых разработчиков. Протокол использует Curve25519 (RFC 8032), X25519 (RFC 8031) и Chacha20Poly1305 (RFC 7539). Одна реализация алгоритма X24419 в криптографических библиотеках Pyca Python помечена как «криптографически опасная», потому что с ней очень легко ошибиться в настройках. Но основной используемый криптографический алгоритм Curve25519, является «одной из самых простых эллиптических кривых для безопасного использования», — сказал Денис.
Разработчик говорит, что DNSCrypt никогда не считался стандартом IETF, потому что был создан добровольцами без корпоративной «крыши». Представление его в качестве стандарта «потребовало бы времени, а также защиты на заседаниях IETF», — сказал он. «Я не могу себе этого позволить, как и другие разработчики, которые работают над ним в свободное время. Практически все ратифицированные спецификации, связанные с DNS, фактически написаны людьми из одних и тех же нескольких компаний, из года в год. Если ваш бизнес не связан с DNS, то действительно тяжело получить право голоса».
TLS стал приоритетом для CloudFlare, когда понадобилось усилить шифрование веб-трафика для защиты от слежки
У DNS по TLS (Transport Layer Security) несколько преимуществ перед DNSCrypt. Во-первых, это предлагаемый стандарт IETF. Также он довольно просто работает по своей сути — принимает запросы стандартного формата DNS и инкапсулирует их в зашифрованный TCP-трафик. Кроме шифрования на основе TLS, это по существу то же самое, что и отправка DNS по TCP/IP вместо UDP.
Существует несколько рабочих клиентов для DNS по TLS. Самый лучший вариант, который я нашел, называется Stubby, он разработан в рамках проекта DNS Privacy Project. Stubby распространяется в составе пакета Linux, но есть также версия для MacOS (устанавливается с помощью Homebrew) и версия для Windows, хотя работа над последней ещё не завершена.
Хотя мне удалось стабильно запускать Stubby на Debian после сражения с некоторыми зависимостями, этот клиент регулярно падал в Windows 10 и имеет тенденцию зависать на MacOS. Если вы ищете хорошее руководство по установке Stubby на Linux, то лучшая найденная мной документация — это пост Фрэнка Сантосо на Reddit. Он также написал shell скрипт для установки на Raspberry Pi.
Положительный момент в том, что Stubby допускает конфигурации с использованием нескольких служб на основе DNS по TLS. Файл конфигурации на YAML позволяет настроить несколько служб IPv4 и IPv6 и включает в себя настройки для SURFNet, Quad9 и других сервисов. Однако реализация YAML, используемая Stubby, чувствительна к пробелам, поэтому будьте осторожны при добавлении новой службы (например, Cloudflare). Сначала я использовал табы — и всё поломал.
Клиенты DNS по TLS при подключении к серверу DNS осуществляют аутентификацию с помощью простой инфраструктуры открытых ключей (Simple Public Key Infrastructure, SPKI). SPKI использует локальный криптографический хэш сертификата провайдера, обычно на алгоритме SHA256. В Stubby этот хэш хранится как часть описания сервера в файле конфигурации YAML, как показано ниже:
После установления TCP-соединения клиента с сервером через порт 853 сервер представляет свой сертификат, а клиент сверяет его с хэшем. Если всё в порядке, то клиент и сервер производят рукопожатие TLS, обмениваются ключами и запускают зашифрованный сеанс связи. С этого момента данные в зашифрованной сессии следуют тем же правилам, что и в DNS по TCP.
После успешного запуска Stubby я изменил сетевые настройки сети DNS, чтобы направлять запросы на 127.0.0.1 (localhost). Сниффер Wireshark хорошо показывает этот момент переключения, когда трафик DNS становится невидимым.
Переключаемся с обычного трафика DNS на шифрование TLS
Хотя DNS по TLS может работать как DNS по TCP, но шифрование TLS немного сказывается на производительности. Запросы dig к Cloudflare через Stubby у меня выполнялись в среднем около 50 миллисекунд (у вас результат может отличаться), в то время как простые DNS-запросы к Cloudflare получают ответ менее чем за 20 мс.
Здесь тоже имеется проблема с управлением сертификатами. Если провайдер удалит сертификат и начнёт использовать новый, то в настоящее время нет чистого способа обновления данных SPKI на клиентах, кроме вырезания старого и вставки нового сертификата в файл конфигурации. Прежде чем с этим разберутся, было бы полезно использовать какую-то схему управления ключами. И поскольку сервис работает на редком порту 853, то с высокой вероятностью DNS по TLS могут заблокировать на файрволе.
Google и Cloudflare, похоже, одинаково видят будущее зашифрованного DNS
Как Cloudflare, мы считаем, что туннели иллюстрируют операцию «Арго» лучше, чем Бен Аффлек
Дабы убедиться, что проблема именно в протоколе DoH, а не в программистах Cloudflare, я испытал два других инструмента. Во-первых, прокси-сервер от Google под названием Dingo. Его написал Павел Форемски, интернет-исследователь из Института теоретической и прикладной информатики Академии наук Польши. Dingo работает только с реализацией DoH от Google, но его можно настроить на ближайшую службу Google DNS. Это хорошо, потому что без такой оптимизации Dingo сожрал всю производительность DNS. Запросы dig в среднем выполнялись более 100 миллисекунд.
Это сократило время отклика примерно на 20%, то есть примерно до того показателя, как у Argo.
А оптимальную производительность DoH неожиданно показал DNSCrypt Proxy 2. После недавнего добавления DoH Cloudflare в курируемый список публичных DNS-сервисов DNSCrypt Proxy почти всегда по умолчанию подключается к Cloudflare из-за низкой задержки этого сервера. Чтобы убедиться, я даже вручную сконфигурировал его под резолвер Cloudflare для DoH, прежде чем запустить батарею dig-запросов.
Все запросы обрабатывались менее чем за 45 миллисекунд — это быстрее, чем собственный клиент Cloudflare, причём с большим отрывом. С сервисом DoH от Google производительность оказалась похуже: запросы обрабатывались в среднем около 80 миллисекунд. Это показатель без оптимизации на ближайший DNS-сервер от Google.
Я не Бэтмен, но моя модель угроз всё равно немного сложнее, чем у большинства людей
Я профессиональный параноик. Моя модель угроз отличается от вашей, и я предпочел бы сохранить в безопасности как можно больше своих действий в онлайне. Но учитывая количество нынешних угроз приватности и безопасности из-за манипуляций с трафиком DNS, у многих людей есть веские основания использовать какую-либо форму шифрования DNS. Я с удовольствием обнаружил, что некоторые реализации всех трёх протоколов не оказывают сильно негативного влияния на скорость передачи трафика.
Другая проблема в том, что, хотя прекрасные ребята из сообщества DNSCrypt проделали большую работу, но такая приватность по-прежнему слишком сложна для обычных людей. Хотя некоторые из этих DNS-клиентов для шифрования оказалось относительно легко настроить, но ни один из них нельзя назвать гарантированно простым для нормальных пользователей. Чтобы эти услуги стали действительно полезными, их следует плотнее интегрировать в железо и софт, который покупают люди — домашние маршрутизаторы, операционные системы для персональных компьютеров и мобильных устройств.
Интернет-провайдеры наверняка постараются активнее монетизировать обычный DNS-трафик, и никуда не исчезнут государственные агентства и преступники, которые стремятся использовать его во вред пользователю. Но маловероятно, что крупные разработчики ОС стремятся надёжно защитить DNS доступным для большинства людей способом, потому что они часто заинтересованы в монетизации, как и интернет-провайдеры. Кроме того, эти разработчики могут столкнуться с сопротивлением изменениям со стороны некоторых правительств, которые хотят сохранить возможности мониторинга DNS.
Так что в ближайшее время эти протоколы останутся инструментом для тех немногих людей, кто реально заботится о конфиденциальности своих данных и готов для этого немного потрудиться. Надеюсь, сообщество вокруг DNSCrypt продолжит свою активность и продвинет ситуацию вперёд.
Команда AdGuard инвестирует много времени и усилий в разработку решений защиты конфиденциальности пользователей, и многие пользователи ценят продукты AdGuard именно по этой причине. Самым большим вызовом для разработчиков AdGuard является не только обеспечение эффективной защиты, но и предоставление ее любому пользователю, независимо от используемого устройства.
Как раз для этого был создан AdGuard DNS – DNS-служба с акцентом на защиту конфиденциальности, которая блокирует трекеры, рекламные блоки где угодно, будь то стационарные компьютеры, мобильные устройства или смарт-ТВ и устройства «Интернета вещей». Официальный запуск AdGuard DNS состоялся в прошлом году, 18 декабря 2018 года, спустя два года после начала разработки службы.
Тернистая дорога к безопасности
Выбор альтернативного DNS-резольвера является первым шагом для повышения конфиденциальности, но этого может быть недостаточно. Если никто не может иметь доступ к вашему DNS-трафику сейчас, это не значит, что никто не мог ранее. Протокол DNS совсем не новый, и тогда, когда он был разработан, стандарты конфиденциальности практически отсутствовали. В результате сегодня существует высокий риск того, что ваши DNS-запросы могут быть подслушаны или даже изменены злоумышленниками. Чтобы противостоять им, команда AdGuard приняла несколько действенных мер.
Что такое безопасность DNS?
Проблема конфиденциальности DNS
Заметили ли вы проблему на схеме выше? Действительно, случайное лицо, которое предоставляет вам доступ в Интернет, знает каждый домен, который вы посетили и когда происходил сеанс посещения. Одно из исследований на практике продемонстрировало, что модель поведения, полученная путем анализа исключительно данных DNS, позволила правильно идентифицировать 86% пользователей.
DNS-трафик уязвим для злоумышленников
К счастью, существуют эффективное решение данной проблемы. Почти все устройства, которые позволяют вам выходить в Интернет, также дают возможность выбрать собственный преобразователь DNS. Какой выбрать? На рынке доступно много различных вариантов, но не все из них ставят в приоритет конфиденциальность. AdGuard предлагает сервис, который не только сохранит ваши действия в Интернете в тайне, но и предоставит дополнительные возможности защиты от сетевых угроз.
Давайте подробнее рассмотрим AdGuard DNS и выясним, почему это один из самых безопасных для вас вариантов на сегодняшний день.
Настройка правил обработки DNS запросов
После добавления первого сервера DNS, в окне Rules можно увидеть, что для добавленного DNS сервера правило назначено по умолчанию.
Правила являются неотъемлемой частью YogaDNS. Правила позволяют указать DNS-сервер, который будет использоваться для запроса разрешения на основе имени хоста. Можно также заблокировать, обойти запрос или принудительно выполнить его через выбранный сетевой интерфейс.
Возможно настроить определенные правила для разных DNS серверов. В приведенном примере описана задача при использовании двух DNS серверов от COMSS и Google с назначением разных правил для разрешения определенных имен хостов через выбранные DNS-серверы.
Открыть в главном меню Configuration > Rules
Чтобы добавить новое правило, необходимо нажать кнопку Add
Рис.11 Настройка правил
Предположим, необходимо сайт YogaDNS открывать с использованием Google Public DNS, а остальные сайты открывать с использованием Comss.one DNS.
В открывшемся окне Rule необходимо:
- В поле Name прописать произвольное название для правила.
- В поле Hostname указать сайт или сайты, которые необходимо открывать с использованием выбранного DNS. Можно использовать точку с запятой или новую строку в качестве разделителя.
- В раскрывающемся списке Action выбрать действие Process.
- В раскрывающемся списке DNS Server выбрать DNS сервер (в данном примере выбран заранее добавленный DNS сервер Google DoH).
- Нажать ОК.
Рис.12 Настройка правил
Рис.13 Настройка правил
Рис.14 Проверка результата в журнале YogaDNS
После необходимых настроек главное окно программы YogaDNS можно закрыть, процесс работы не прекратится, пока программа не будет закрыта через контекстное меню иконки Yoga DNS, расположенной в системной трее и выбора команды exit, либо другими мерами.
Рис.15 Завершение работы программы YogaDNS
Для того, чтобы программа YogaDNS запускалась автоматически при старте ОС Windows (вход пользователя), необходимо в главном меню программы выбрать File > Autostart
Рис.16 Настройка автоматического запуска программы
DNS-over-TLS
DNS-over-TLS или DoT – протокол шифрования DNS-запросов и передачи по TLS-протоколу. DoT более надежен, чем DNSCrypt. Все больше и больше DNS сервисов поддерживают его, и AdGuard с гордостью вступает в их ряды.
Стоит упомянуть, что начиная с Android 9, устройства Android имеют встроенную поддержку DNS-over-TLS. Вы можете настроить свой смартфон или планшет на использование этого протокола в несколько нажатий без необходимости установки какого-либо дополнительного программного обеспечения.
AdGuard DNS недавно получил поддержку DoH, которая выводит сервис на передний план защиты конфиденциальности. К сожалению, этот протокол все еще относительно новый, и способов применения его на вашем устройстве немного. Тем не менее, новая версия AdGuard для Android уже поддерживает эту опцию.
Читайте также: