Полезные знания Как настроить безопасный DNS и зачем это нужно

  • Автор темы BOOX
  • Дата начала

BOOX

Стаж на ФС с 2012 года
Команда форума
Служба безопасности
Private Club
Регистрация
23/1/18
Сообщения
24.428
Репутация
10.725
Реакции
58.759
RUB
50
Настройка интернет-подключения на компьютере или смартфоне в большинстве случаев автоматизирована, и разбираться в ней не надо.


Но есть одна деталь, которая стоит внимания, — выбор DNS и его режима работы. Если уделить этому немного времени, можно защититься от кибератак, шпионажа со стороны провайдера, нежелательного для детей контента и даже рекламы. Что же такое, например, Private DNS из настроек в Android и как им воспользоваться?

DNS и его недостатки​

Расшифровка DNS — Domain Name Service, сервис (служба) доменных имен. Он нужен, чтобы переводить удобные для нашего восприятия адреса в Интернете (доменные имена, например, kaspersky.ru) в цифровые IP-адреса, которыми оперируют компьютеры в Сети (185.85.15.34). Практически каждый запрос в Интернете начинается с того, что компьютер обращается к серверу DNS за переводом введенного имени сайта в его IP-адрес.

Почти всегда для этого используется DNS-сервер вашего интернет-провайдера, причем запрос к нему не зашифрован и не подписан. Из-за этой незащищенности возникает много побочных эффектов.

  • Провайдер всегда знает, какие сайты вы посещаете, и может использовать это для показа вам таргетированной рекламы.

  • Провайдеру легко подменить IP-адрес в своем ответе, показав совсем не тот сайт, который вы хотели увидеть. Вы наверняка сталкивались с этим, подключаясь к бесплатному Wi-Fi в отеле, кафе или аэропорту, — первым делом вместо любого запрошенного вами сайта вылезает страница с авторизацией или рекламой.

  • Ту же технологию , способные контролировать сеть Wi-Fi, к которой вы подключились. Они подсовывают жертвам фальшивые сайты, на которых распространяются вредоносные программы или воруется информация о банковских картах.
Правда, подмена адресов в DNS-ответах может использоваться и во благо — например, в сервисах родительского контроля, выдающих сайт-заглушку при попытке посетить «нежелательные» сайты. Однако эта технология недостаточно точна и блокирует сайты целиком — например, весь youtube.com, а не конкретные «плохие» страницы.

Пользоваться DNS-сервером своего провайдера вовсе не обязательно. Существуют общедоступные DNS-серверы с хорошей репутацией, например от Cloudflare (1.1.1.1) или Google (8.8.8.8), их можно указать в настройках Интернета и избавиться от части проблем, описанных выше.

Есть и DNS-серверы с дополнительными функциями — например, блокирующие доступ к рекламным серверам: они убирают рекламу не только в браузере, но и в других приложениях. Для этого достаточно в настройках Wi-Fi компьютера или смартфона указать адрес соответствующего «фильтрующего» DNS-сервера.

К сожалению, простая замена адреса DNS на 1.1.1.1 или 8.8.8.8 не решает проблем конфиденциальности: провайдер или злоумышленник, контролирующий сеть, может «подсматривать» в DNS-запросы, вмешиваться в них или блокировать доступ к сторонним DNS.

Private DNS и Secure DNS​

Крупные корпорации или энтузиасты могут запустить собственный DNS-сервер и применять на нем любые правила обработки запросов. Собственно, Private DNS в строгом смысле — это не сервер повышенной конфиденциальности, а просто частный, непубличный сервер. На практике Private DNS нередко запускают на базе защищенных DNS-протоколов. Настройка Private DNS в Android 9 и выше должна бы называться Secure DNS, чтобы точнее передавать ее суть.

Безопасный DNS (Secure DNS) — это несколько конкурирующих протоколов, отличающихся от обычного DNS наличием шифрования. Это DNS over HTTPS (DoH), DNS over TLS (DoT) и DNSCrypt. Они отличаются протоколами связи и портами, через которые проходят DNS-запросы. О том, какой из них лучше, а какой хуже, до сих пор идут споры.

Правда, порой провайдеры блокируют доступ к сторонним DNS, и в этом случае наивысшие шансы обойти блокировку имеет протокол DoH, поскольку его сложнее отфильтровать.

Но вникать в тонкости Secure DNS не обязательно, главное, чтобы ваш смартфон, компьютер или браузер поддерживал хотя бы один из указанных протоколов и был DNS-сервер, который можно использовать с этими протоколами.

Дефицита бесплатных безопасных серверов нет — крупные операторы интернет-инфраструктуры (Cloudflare, Google и другие) поддерживают общедоступные DNS (1.1.1.1, 8.8.8.8), к которым можно подключиться как по незащищенному DNS, так и по DoH/DoT. Поэтому ваша задача сводится к тому, чтобы включить этот безопасный доступ.

А если уже есть VPN?​

Безопасный DNS и VPN — взаимодополняющие технологии. Даже если вы включили VPN, запросы имен сайтов могут идти по незашифрованному DNS-каналу, тогда все вышеописанные риски остаются. Некоторые коммерческие VPN-сервисы включают в стандартный профиль подключения свой зашифрованный DNS или предлагают одновременное включение своего VPN и стороннего безопасного DNS через приложение.

Это не общепринятая практика, поэтому стоит перечитать информацию своего VPN-провайдера или задать вопрос техподдержке. Если безопасный DNS не предлагается, его можно включить дополнительно к VPN по инструкции ниже.

Включаем безопасный DNS​

Проще всего включить безопасный DNS в Android (версия 9 и выше): достаточно зайти в приложение «Настройки», выбрать дополнительные настройки соединения (More connections или Advanced) и найти там подраздел Private DNS. В нем надо указать желаемый сервер — и настройка закончена. Маленький загадочный нюанс: Android не принимает в данном разделе числовые адреса, поэтому потребуется уточнить у провайдера доменное имя нужного DNS-сервера (например, 1dot1dot1dot1.cloudflare-dns.com).


Настройка безопасного DNS в Android

В яблочных устройствах поддержка DoH/DoT внедрена с версий iOS 14 и macOS 11. Но штатной настройки для включения этих протоколов нет, поэтому вам понадобится одна из множества сторонних утилит из App Store, способная активировать предпочитаемый вами безопасный сервер. Найти их можно по запросу «Secure DNS». Опытные пользователи также могут вручную или создать их самостоятельно.

В Windows 10 поддержка DoH есть начиная с версии 19628, включить ее можно по с сайта Microsoft.


Настройка безопасного DNS в Windows 10

Браузеры Chrome и Firefox способны делать DNS-запросы по зашифрованному каналу вне зависимости от поддержки на уровне ОС.


Настройка безопасного DNS в Google Chrome

В ряде стран эта опция включена по умолчанию, но лучше проверить через настройки браузера.


Настройка безопасного DNS в Firefox

Немаловажный нюанс для : чтобы убедиться, что ваша защита правильно настроена, сначала активируйте защищенный DNS в настройках роутера, ОС или браузера. Затем проверьте, что у вас включена нужная настройка Kaspersky: Настройки → Настройки сети → Обработка трафика (Settings → Network Setting → Traffic Processing).



 
Очень важная мелочь, которой не стоит пренебрегать. Но советую работать связкой браузер + VPN, вариантов много.
 
Последнее редактирование модератором:
Если речь о linux, я обычно ставлю связку dnscrypt+dnsmasq.

Вкратце:
1. ставим пакеты dnsmasq и dnscrypt-proxy (названия могут варьироваться в зависимости от дистрибутива, но обычно такие). dnsmasq это такой комбайн, там и dns-резолвер с тонкими настройками, и dhcp-сервер (если надо), в общем он мне очень нравится, потому что при необходимости можно тонко настроить его работу, вплоть до того, какие домены или зоны какими серверами резолвить, какие интерфейсы слушать и для чего, и тд.

2. Дефолтный /etc/dnsmasq.conf очень хорошо прокомментирован, поэтому всё это расписывать здесь не вижу смысла, мои настройки которые я включаю:

Код:
no-resolv
interface=lo
listen-address=127.0.0.1
no-dhcp-interface=lo
server=127.0.0.1#5353

Тут мы слушаем 53-й порт (стандартный для dns), отключаем DHCP и проксируем все DNS запросы на 127.0.0.1:5353.

3. Далее /etc/dnscrypt-proxy/dnscrypt-proxy.toml. Тоже отлично комментирован, от дефолтов мой конфиг наверное отличается только этим:
Код:
listen_addresses = ['127.0.0.1:5353']

Также там есть опции block_ipv6 и ipv6_servers. Касательно ipv6 хотел бы сделать ремарку: если вы точно понимаете, что это такое и как это работает - ок. Если нет - лучше отключить вообще через sysctl и сперва разобраться. А то я встречал людей, у которых ipv4 вроде как полностью проксируется через vpn и даже файрвол настроен (чтобы не было утечки трафика при разрыве соединения), а про то что бывает ipv6 они просто забыли и трафик идёт напрямую через провайдера.

4. Самое главное, /etc/resolv.conf. Этот файл собственно и отвечает за то, какой dns-резолвер будет использоваться системой. В современных дистрибутивах его перезаписывают все кому не лень: dhcp-клиенты типа dhcpcd (допустим когда используется что-то простое, например netifrc в gentoo, без монстров вроде networkmanager), networkmanager, systemd-resolved и тд. Убеждаемся что это не симлинк, если симлинк - удаляем. Потом пишем в него:

Код:
nameserver 127.0.0.1

и ставим защиту от перезаписи:

Код:
chattr +i /etc/resolv.conf

5. Ставим оба сервиса (dnscrypt-proxy и dnsmasq) в автозапуск, команды могут варьрироваться опять же от дистрибутива, а точнее от используемой init system (если systemd, то это systemctl enable, если openrc, то rc-update add $service default, если runit то это просто симлинк сервиса из /etc/sv в /var/service и тд). В общем если вы пользуетесь linux то наверное знаете что делаете и не мне вас учить.

Ну и всё, теперь все запросы должны проксироваться через dnscrypt.

P.S. У такой конфигурации есть минус (а может и не минус, смотря как посмотреть). Если вы подключатесь к какой-то публичной wifi-сети, предположим в кафе или аэропорту, там у них скорее всего будет captive portal с авторизацией по телефону, и он будет работать только если используется dns-сервер, полученный через dhcp. Иначе авторизоваться у вас не получится. Для этой "проблемы" тоже есть решение, довольно изящное, если кому интересно - напишите, я дополню. А вообще, как по мне, проще раздать со своего телефона и не заморачиваться с публичными wifi, где ты и свой mac-адрес светишь (если конечно не меняешь его) и чего только не светишь.
 
Сверху Снизу