Что такое DNS и почему плохо, когда он протекает

dns-n4cubgy3u099lkg2qch6fj33oksiek9gp43xe1bvvw.jpg

Обычный интернет централизован, то есть в нем все завязано на некие ключевые узлы. Один из таких ключевых узлов - сервера DNS. DNS это аббревиатура от Domain Name System - система доменных имен. Сервера DNS хранят данные на интернет ресурсы - в первую очередь их IP адреса(0.0.0.0) и их доменные имена (www.zhopa.ru). Сделано это для твоего удобства - когда ты хочешь пойти на сайт www.zhopa.ru то тебе не нужно помнить его IP адрес - достаточно запомнить имя. Далее происходит следующее:

1. Ты забиваешь в строку браузера www.zhopa.ru.
2. Поскольку компьютеры разговаривают на языке цифр они такую херню не приветствуют и не понимают. Так что твоему компьютеру потребуется переводчик - который растолкует ему куда тебе приспичило пойти в интернете.
3. Твой компьютер напишет запрос переводчику - мол так и так, этот болван опять чего то понаписал в строке браузера и орет как окаянный, а я ниче не пойму чего он хочет. Вот смотри какая то www.zhopa.ru
4. Переводчик (DNS сервер) посмотрит с умным видом в свои каталоги и ответить - дак это он дрочить опять будет, это же сайт с порнухой - 0.0.0.0. И выдает вместо имени точный IP адрес.
5. Твой компьютер наконец то понял в какую сторону посылать твои похотливые запросы и ты попал на сайт с порнухой.

Вроде бы все счастливы, но есть нюанс...

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

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

Векторы атаки
1. Всяческие хакеры - этот вектор атак как правило пугает законопослушных граждан.
Один из самых простых методов атак рассчитан на совсем деревянных пользователей интернетов и заключается в элементарной замене имени на похожее - а ля abibas.com. Неумный пользователь не замечает подвоха (а надо признать что в некоторых шрифтах такие буквы как I (заглавная ай) и l (строчная эль) практически идентичны - чем умело пользуются швырки в телеге).
Более продвинутые способы основаны на уязвимости в самих протоколах передачи данных и позволяют вытворять злодеям немыслимые цифровые чудеса - от перехвата и перенаправления трафика конкретного лоха до атак на DNS сервера, после которых оные выдают нужные злодею айпишки вместо настоящих всем без исключения вопрошающим.
На заметку: VPN кстати был создан вот именно для этой ситуации - защиты законопослушных граждан от всяческих хакеров.

2. Цензура - этот вектор атак как правило пугает всяких закононепослушных граждан.
Как правило, крупные магистральные, и не очень провайдеры имеют в наличии свои собственные DNS сервера с блэкджеком и шлюхами. Делается это в первую очередь для повышения скорости работы, чтобы потом писать в рекламных буклетиках "наш интернет резкий как понос" - ведь запросы будут происходить мгновенно - ты так и так установил соединение с провайдером и если запросы будут идти ему же а не на какой нибудь сервер SAS во Франциях то все будет происходить куда шустрее.

Так вот в такой схеме главная беда в том, что провайдеру доступна история всех твоих интернет безобразий. Твой компьютер спрашивает у провайдера адреса сайтов www.zhopa.ru www.narkotiki.cc www.pornuhaspidarasami.anal и прочие интересности. При этом провайдер располагает достаточно обширной информацией, которая при желании позволяет без труда обнаружить и обезвредить юного интернет пакостника.

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

Таким образом чтобы прикрыть эти дыры в обороне нужно успешно решить следующие тактические задачи:
1. Перенаправить запросы доменных имен на сервера, которым наплевать куда, когда и как часто ты ходишь.
2. Зашифровать запросы доменных имен, чтобы их невозможно было перехватить в пути до серверов, которым наплевать куда, когда и как часто ты ходишь.
3. Поумнеть и перестать шарахаться по всяческим сомнительным ресурсам (самое сложное).

Реализация.
Самый простой и широко используемый способ перенаправления запросов - заворачивать их через тор. Не знаю как в Windows, но в линуксах DNS сервера выдаются сервисом network-manager который при соединении прописывает их в файл resolv.conf.
Первое что необходимо сделать - снять эти полномочия с "сетевого управляющего". Делается это созданием конфигурационного файла в каталоге

Bash:
/etc/NetworkManager/conf.d/
Я назвал файл anon.conf (нет не потому о чем ты там подумал) и вписал туда следующие параметры:

Bash:
[main]
dns=none

[device-anon]
wifi.scan-rand-mac-address=yes

[connection-anon]
wifi.cloned-mac-address=random
Первый из которых запрещает заниматься network-manager определением DNS серверов, второй спуфит MAC адрес вифи адаптеров в процессе сканирования и поиска точек доступа, а третий делает то же самое но уже при подключении к .м доступа. Последние два актуальны только при анонимной работе через чужие точки доступа. Для немножко анонимной работы через модем хватит просто параметра dns=none.

после чего необходимо перезапустить сервис:
Bash:
sudo service network-manager restart
Теперь необходимо кому то снятые полномочия передать - ведь кто то должен их выполнять в системе. И исполняющим обязанности сетевого управляющего мы назначим луковый маршрутизатор - Tor.

Для этого пройдем в его конфигурационный файл, в каталоге /etc/tor/ - torrc
И допишем сюда вот такие буквы и цифры (мопед не мой, я просто разместил объяву - doc/TransparentProxy – Tor Bug Tracker & Wiki

Bash:
VirtualAddrNetworkIPv4 10.192.0.0/10
AutomapHostsOnResolve 1
TransPort 9040 IsolateClientAddr IsolateClientProtocol IsolateDestAddr IsolateDestPort
DNSPort 5353
после чего так же перезагрузим сервис
sudo service tor restart
затем пропишем в /etc/resolv.conf новый адрес: nameserver 127.0.0.1

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

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

Проверяем что получилось.

Вот сайты которые неплохо проверяют DNS запросы:
1. DNS Leak Test: Find and Fix DNS Leaks | ExpressVPN - обратите внимание - всякие тесты нагоняющие жути есть только в барыжьих конторах. таким паскудством не балуется сайт тора или того же nordvpna.
2. DNS leak test - выбираем extended test и тогда сайт сделает шесть подходов по шесть раз - в общей сложности 36 (спасибо кэп!). Если у вас там будет вот так:
1c4b49045f76.jpg

Значит днс запросы идут с тор - выходов и все нормально. если же в списке будет только DOM.Ru Penza - то что то пошло не так...
 

Комментарии

Сверху