4601 ,

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

Понятно, что подмена перехваченных пакетов не составит особого труда даже при использовании вами VPN -сервисов.

Закрыть дыру можно только путем шифрования DNS -трафика, но для этого вам понадобится специальное программное обеспечение, поскольку ни одна из операционных систем не поддерживает шифрование DNS из коробки. Наиболее простым инструментом для шифрования DNS -трафика является - небольшая бесплатная утилита, выгодно отличающаяся тем, что не нуждается в дополнительных настройках, а значит может использоваться новичками. Есть консольный инструмент - DNSCrypt Proxy , но с ним нужно возиться - выполнять серию команд в PowerShell , изменять адрес DNS вручную и так далее. У кого есть время и желание, пожалуйста, можете ознакомиться с ним на страничке github.com/jedisct1/dnscrypt-proxy .

Мы же предлагаем использовать более простую и удобную десктопную версию DNS -шифровальщика. Скачайте с сайта разработчика simplednscrypt.org соответствующую вашей разрядности ОС версию программы и установите.

Укомплектована легким интуитивно понятным интерфейсом да к тому же на русском языке, так что вы без труда разберетесь что к чему. Основные настройки выполняются в разделе «Меню» . Чтобы начать пользоваться программой, сразу после установки нажмите кнопку «Применить» , а затем выберите внизу вашу сетевую карту, она должна быть отмечена галочкой, как показано на скриншоте. Переключатель «Служба DNSCrypt» должен быть активным.

Проверить, всё ли работает нетрудно. Выполните в окошке Run команду ncpa.cpl , откройте свойства вашего подключения, выберите в списке IP версии 4 (TCPIPv4) и откроете его свойства. Радиокнопка «Использовать следующие адреса DNS-серверов» должна быть активной, а в поле должен быть указан предпочитаемый DNS -сервер. У нас это 127.0.0.1 , у вас адрес может быть другим.

По умолчанию программа автоматически выбирает самый быстрый сервер, но вы можете изменить предпочтения, выбрав его самостоятельно в разделе .

Параметры раздела можно не менять, если вы не используете протокол IPv4 . В общих настройках можно включить дополнительные вкладки «Черный список доменов» , «Журнал блокировки доменов» , но это опять, если вы собираетесь работать с предлагаемыми в них функциями, в частности, составлять «черные» списки доменов.

С помощью nstx возможно создать IP-туннель внутри DNS. Одноименный протокол позволяющий достичь этого называется « » и расшифровывающийся как «NameServer Transfer Protocol ».

Итак, предположим, провайдер выдаёт и разрешает использовать вам свой сервер DNS. Представим обычный DNS запрос: мы запрашиваем информацию на сервере имен провайдера, сервер провайдера передаёт запрос другому серверу имен, который отвечает за нужную нам зону. А последний DNS-сервер, в цепочке, отправляет полученный ответ по тому же маршруту обратно.

А теперь представьте, что можно оформить IP-пакеты в DNS-запросы сервера имен и «сформировать» входящий трафик в нужные нам пакеты. И вот у нас уже есть все, что бы построить полноценный «IP over DNS» — свой собственный скрытый туннель для проброса трафика через почти любые сторонние файрволы!

Теперь остается только настроить фальшивый сервер имен и клиент, но на практике сделать это не всегда так просто.

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

Впервые, я попробовал сделать это в 2008 году. Две недели неспешно я разбирался с этим пакетом, правил исходных текст под себя, перечитывал руководства, и в результате — я получил работающий туннель успешно проложенный через сверхзащищенный файрволл нашей корпоративной сети. Тогда для меня это было просто невероятно!

Вообще, немного желания, времени, и вы самостоятельно можете запустить фальшивый сервер имен клиента для создания тоннеля «IP-over-DNS».

Играйтесь, пробуйте. Ищите способы защиты от этого. Заранее предупреждаю, что здесь очень много технических нюансов

Вы думаете что ваша анонимность надежно защищена. Но к сожалению это не так. Существует один очень важный канал утечки вашей приватной информации – служба DNS. Но к счастью на это тоже придумано решения. Сегодня я раскажу как зашифровать свой DNS трафик с помощью утилиты DNSCrypt.

При использовании HTTPS или SSL твой HTTP трафик зашифрован, то есть защищен. Когда ты используешь VPN, шифруется уже весь твой трафик (конечно, все зависит от настроек VPN, но, как правило, так оно и есть). Но иногда, даже когда используется VPN, твои DNS-запросы не зашифрованы, они передаются как есть, что открывает огромное пространство для «творчества», включая MITM-атаки, перенаправление трафика и многое другое.

Тут на помощь приходит опенсорсная утилита DNSCrypt, разработанная хорошо известными тебе создателями OpenDNS, - программа, позволяющая шифровать DNS-запросы. После ее установки на компьютер твои соединения также будут защищены и ты сможешь более безопасно бороздить просторы интернета. Конечно, DNSCrypt - это не панацея от всех проблем, а только одно из средств обеспечения безопасности. Для шифрования всего трафика все еще нужно использовать VPN-соединение, но в паре с DNSCrypt будет безопаснее. Если тебя такое краткое объяснение устроило, можешь сразу переходить к разделу, где я буду описывать установку и использование программы.

Попробуем разобраться глубже. Этот раздел предназначен для настоящих параноиков. Если ты ценишь свое время, тогда можешь сразу перей ти к установке программы.
Итак, как говорится, лучше один раз увидеть, чем сто раз услышать. Посмотри на рисунок.


Допустим, клиент (ноутбук на рисунке) пытается обратиться к google.com Первым делом он должен
разрешить символьное имя узла в IP-адрес. Если же конфигурация сети такова, что используется DNS-сервер провайдера (незашифрованное соединение, красная линия на рисунке), то разрешение символьного имени в IP-адрес происходит по незашифрованному соединению.

Да, какие данные ты будешь передавать на dkws.org.ua, никто не узнает. Но есть несколько очень неприятных моментов. Во-первых, провайдер, просмотрев логи DNS, сможет узнать, какие сайты ты посещал. Тебе это нужно? Вовторых, вероятна возможность атак DNS спуфинг и DNS снупинг. Подробно описывать их не буду, об этом уже написано множество статей. В двух словах ситуация может быть следующей: некто между тобой и провайдером может перехватить DNS-запрос (а так как запросы не шифруются, то перехватить запрос и прочитать его содержимое не составит никакого труда) и отправить тебе «поддельный» ответ. В результате вместо того, чтобы посетить google.com, ты перейдешь на сайт злоумышленника, как две капли воды похожий на тот, который тебе нужен, введешь свой пароль от форума, ну а дальше развитие событий, думаю, ясно.

Описанная ситуация называется DNS leaking («утечка DNS»). DNS leaking происходит, когда твоя система даже после соединения с VPN сервером или Tor продолжает запрашивать DNS серверы провайдера для разрешения доменных имен. Каждый раз, когда ты посещаешь новый сайт, соединяешься с новым сервером или запускаешь какое-то сетевое приложение, твоя система обращается к DNS провайдера, чтобы разрешить имя в IP. В итоге твой провайдер или любой желающий, находящийся на «последней миле», то есть между тобой и провайдером, может получить все имена узлов, к которым ты обращаешься. Приведенный выше вариант с подменой IP-адреса совсем жестокий, но в любом случае есть возможность отслеживать посещенные тобой узлы и использовать эту информацию в собственных целях.

Если ты «боишься» своего провайдера или просто не хочешь, чтобы он видел, какие сайты ты посещаешь, можешь (разумеется, кроме использования VPN и других средств защиты) дополнительно настроить свой компьютер на использование DNS серверов проекта OpenDNS (www.opendns.com). На данный момент это следующие серверы:

208.67.222.222
208.67.220.220

При этом тебе не нужно никакое другое дополнительное программное обеспечение. Просто настрой свою систему на использование этих DNS-серверов.

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

Вот мы и подошли к DNSCrypt. Эта программулина позволяет зашифровать твое DNS соединение. Теперь твой провайдер (и все, кто между тобой и им) точно не узнает, какие сайты ты посещаешь! Еще раз повторюсь. Эта программа не замена Tor или VPN. По-прежнему остальные передаваемые тобой данные передаются без шифрования, если ты не используешь ни VPN, ни Tor. Программа шифрует только DNS трафик.


В КАЧЕСТВЕ ЗАКЛЮЧЕНИЯ

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

Можно использовать, конечно, и Tor, но Tor работает относительно медленно, и это, как ни крути, не VPN - весь трафик «торифицировать» не получится. В любом случае (какой бы вариант ты ни выбрал) теперь твои DNS-соединения защищены. Осталось только определиться со средством шифрования трафика (если ты это еще не сделал).

Программа сканирует DNS-ответы серверов (этого достаточно, внутри ответов есть запросы), и если доменное имя матчится с регулярным выражением, печатает адрес из А-записи (то, что получилось в результате разрешения).

Пользуясь этой утилитой можно собрать почти всю статистику - какое доменное имя разрезолвилось в IP адрес, и когда это произошло. Подготовленный пользователь, конечно, может спрятать эту информацию (записывая узел в hosts-файл, или пользуясь другим каналом для DNS-запросов, например), но для основной массы узлов мы получим удовлетворительную картину.

Как это работает:

$ sudo ./sidmat eth0 "." iu
Мы видим доменные имена и во что они разрешаются (eth0 - интерфейс, на котором проходит DNS-трафик).

$ sudo ./sidmat eth0 "." iu | while IFS= read -r line; do printf "%s\t%s\n" "$(date "+%Y-%m-%d %H:%M:%S")" "$line"; done
Фиксируем время. Осталось перенаправить результат в файл, и можно пользоваться таблицей соответствия. Утилита может захватывать DNS-ответы с помощью pcap (в Линукс/BSD) или с помощью механизма nflog в Линуксе.

Эту же технику можно использовать и для управления трафиком. Фильтровать по доменам, получать адреса доменов с ключевым словами в именах и т.п.

Нужно иметь в виду, что управление может получиться не очень аккуратным. Если за время, когда до пользователя дойдет DNS-ответ и он начнет передавать трафик на этот узел, мы не успеем добавить адрес в ipset/iptables/таблицу маршрутизации/еще куда-то, то трафик пойдет «обычным» путем.

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

Несколько примеров:

Как получить список IP-адресов, в которые резолвится vk.com и его поддомены? (Без опции "u" будут печататься только уникальные IP-адреса)

$ sudo ./sidmat eth0 "^vk.com$|\.vk.com$" d
С опциями «d» или «i» видно какой именно домен разрешается в IP-адрес, «d» печатает имя домена в stderr.

Как заблокировать адреса в которые разрешается vk.com, его поддомены и все домены со словом odnoklassniki? (домены типа avk.com не попадут под правило, odnoklassnikii.com - попадут).

$ sudo sh -c "/sidmat eth0 "^vk\.com$|\.vk\.com$|odnoklassniki" | /usr/bin/xargs -I {} /sbin/iptables -A INPUT -s {} -j DROP"
Кроме небольших регулярных выражений можно использовать списки в файле (опция «f», второй аргумент интерпретируется как имя файла, его содержимое - как одно большое регулярное выражение). Списки могут быть достаточно большими, мы смотрели на производительность на списке доменов РКН (трафик на запретные домены перенаправлялся в VPN), обычный ПК-маршрутизатор совершенно спокойно с этим справился.

Вы можете помочь и перевести немного средств на развитие сайта