4 мая 2018 г.

Защита от перехвата DNS трафика - устанавливаем DNSCrypt

Пишу редко, но метко.

В свете последних событий в РФ очень актуальным стал вопрос приватности переписки и доступа к необходимым ресурсам, я про ситуацию с Телеграм и массовыми блокировками других ресурсов из-за этого.

По причине блокировок, например, мне пришлось очень быстро развернуть свой VPN и свой прокси-сервер. Банально стали отваливаться рабочие сервисы, а это прямой удар по кошельку.

Обеспечение приватности и доступа к необходимым сайтам и сервисам сейчас делается достаточно легко, инструкций в сети море, но я найду в себе силы в мае (этого года, взоржал гляда на периодичность своих публикаций в уютном бложике) написать как я все это для себя реализовал.

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

Здесь отступление для чайников (бложик мой ведь так и называется "для чайников"):

Когда пользователь вводит адрес сайта, происходит следующее:
  1. Браузер отправляет запрос с указанием домена на специальный DNS-сервер.
  2. DNS-сервер в ответ отправляет необходимый физический IP-адрес.
Запрос к DNS-серверу и его ответ передаются без шифрования. 
 
Схема примитивная и работает отлично - большинство пользователей DNS серверы провайдера не меняет, а даже если поменяет, то в любом случае провайдер легко заворачивает такие запросы на себя прослушивая трафик. Проверяется это очень легко, например, в консоли под Windows через NSLOOKUP и далее адресом заблокированного сайта. Повторюсь, это работает, если ваш провайдер умеет слушать DNS трафик (это не шибко сложно).

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

Как эта проблема решается, да элементарно - ставим дружно все Simple DNSCrypt 
 - пользователи Linux вы знаете что делать, в данном случае отправляю разбираться самостоятельно), пользователи Windows (этот пост для массовой аудитории в том числе моих друзей-знакомых) - там очень простая установка, тем более программа русифицирована.

Из рекомендаций моих - в настройках отключить IPv6 - если вы им не пользуетесь и в сущности и всё.

Вот скрины моих настроек в помощь.



Ещё раз. Что получаем в итоге. Провайдер не сможет перехватить DNS запросы между вами и DNS сервером.

Кстати говоря, Яндекс. Браузер поддерживает технологию DNSCrypt тоже, но тут уж ваше дело доверять Яндексу или нет))). Да и я не пользуюсь, например, этим браузером.

Универсальный и более приятный для приватности способ - это пользоваться именно тем что я выложил выше.

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

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

В следующих сериях))) (как руки дойдут). Как быстро и просто запилить свой собственный SOCKS5 сервер (это удобно реально) и как очень быстро настроить свой VPN сервер. (никакого космоса я не открою, просто опишу как я это сделал сам).