Все, что вы хотели знать про DNS

Messages
40
Reputation
9
Reaction score
31
Points
18


Последние годы на кроберских форумах с завидным постоянством задается вопрос "А как скрыть ДНС?" или его вариация "Где найти старый аутпост 4.0?". Признаться, эта жвачка изрядно достала, и данная статья - попытка расставить точки над i. Надеюсь, будет полезной, постараюсь все "разжевать". Хотя и не питаю надежды, что количество вопросов заметно уменьшится... Но по крайней мере можно будет позволить себе удовольствие со спокойной совестью "ткнуть носом" обленившегося новичка в качественную статью. :)

Раз уж прозвучала такая заявка на качество, начну с того, что из себя представляет DNS и нахрена он нужен. А так как статья расчитана на новичков, буду объяснять совсем на пальцах.


Теория DNS

Domain Name System — система доменных имён. Если совсем коротко и по существу - позволяет определить IP адрес компьютера в сети по его доменному имени.

Допустим, среднестатистический кробер Вася, учащийся в 8-м классе, узнал про такую пиздатую и совершенно необходимую вещь, как VPN. "Кру-у-ута-а-а-а...", - сказал себе Вася и, прервав просмотр накарженной порнухи, полез на сайт самого надежного и "пальцастого" VPN-сервиса. Ввел в адресной строке браузера:

vpn.mvd.ru

И нажал "Enter". Что произошло? Нет, то что Вася крупно лоханулся к нашему делу отношения не имеет. Нас интересует другое. С одной стороны, понятно что этот сайт размещен на каком-то сервере (компьютере) в Интернете. С другой - каждому известно, что компьютеры в Интернете находят друг друга по IP адресам. То есть по загадочным сериям цифр с точками вроде "95.173.128.124". Спрашивается: какого хрена наш бедный Вася должен запоминать IP каждого сайта? Ведь уже через месяц такой тренировки мозга он поумнеет и перестанет веселить достопочтенную публику своим фееричным идиотизмом. Чтобы этого не случилось, и была придумана DNS.

Теперь разберемся в том, "как оно работает". Понять причину палива после этого будет очень просто.

Если совсем упрощенно, в Интернете есть DNS-сервера. Они хранят записи о том какой IP какому доменному имени соответствует. Например:

Code:
...
bing.com - 65.55.175.254
ip-ping.ru - 62.152.63.130
mail.ru - 94.100.191.204
mvd.ru - 95.173.128.124
rambler.ru - 81.19.70.3
yandex.ru - 93.158.134.11
nslookup.su - 62.152.63.130
...

Обратите внимание: ip-ping.ru и nslookup.su имеют один и тот же IP адрес 62.152.63.130. Это вполне нормально, т.к. на одном веб-сервере (не путать с DNS-сервером!) может размещаться куча сайтов. В этом случае доменное имя еще и помогает веб-серверу разобраться, какой именно сайт от него требуют.

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

Когда компьютеру нужно узнать какому IP адресу соответствует доменное имя mail.ru, он "спрашивает" это у своего DNS-сервера. То есть делает DNS-запрос. Для начала запомните, что DNS-запросы бывают рекурсивные и нерекурсивные. В чем разница, покажу на примере.

Итак, между компьютером кардера Васи (ККВ) и DNS-сервером Васиного Интернет-провайдера (DNS-прова) происходит следующий диалог:

* Вариант I - серия рекурсивных DNS-запросов *

ККВ => DNS'у прова:
- Привет, тут Вася лезет на сайт vpn.mvd.ru, какой IP у этого сайта?
- Не ебу, это сайт не из моего сегмента сети, в моих списках его нет. Щас узнаю у своих корешей.​

DNS-прова => корневому DNS-серверу:
- Эй, корневой DNS-сервер, какой IP у сайта vpn.mvd.ru?
- Ну ты спросил. Я же за весь Инет отвечаю. Подробностей таких не знаю. Щас переспрошу у DNS-сервера, который отвечает за зону .ru.​

DNS-корневой => DNS-ru:
- Слышь, ответственный за зону .ru. Че за сайт vpn.mvd.ru? Какой IP у него?
- Хз-хз, не знаю такого. Но IP адрес mvd.ru у меня есть, сейчас переспрошу у него.​

DNS-ru => DNS-серверу домена mvd.ru:
- Эй, ментовский DNS-сервер. Мне нужен IP сайта vpn.mvd.ru.
- Да, это домен из моего сегмента. IP адрес: 95.173.128.124​

DNS-ru => корневому:
- Короче, узнал. IP этого сайта 95.173.128.124. Передай по трассе дальше.​

Корневой => DNS'у Васиного провайдера:
- Пацаны пробили, сайт vpn.mvd.ru находится на IP 95.173.128.124. Все, кайфуй.​

DNS провайдера => ККВ:
- Лезь на 95.173.128.124, там этот сайт.​

Все, Васин компьютер теперь в курсе, с каким веб-сервером нужно связаться, чтобы получить заветный сайт. В данном варианте прошла цепочка DNS-запросов: ККВ -> DNS-прова -> DNS-корневой -> DNS-ru -> DNS-mvd.ru. Всего 4 запроса. Каждый сервер получал запрос, сам переспрашивал у других DNS'ов, получал ответ и пересылал его обратно по цепочке. Такие DNS-запросы называются рекурсивными.


Теперь рассмотрим другой вариант.

* Вариант II - серия нерекурсивных DNS-запросов *

ККВ => DNS'у прова:
- Привет, тут Вася лезет на сайт vpn.mvd.ru, какой IP у этого сайта?
- А хуй его знает. Это домен не из моего сегмента. Вот есть корневой DNS-сервер, его IP 198.41.0.4, у него переспрашивай.
- Ну переспроси у него сам, потом мне скажешь. (попытка сделать рекурсивный запрос)
- Пошел на хуй. Тебе надо, ты и переспрашивай.​

ККВ => корневому DNS-серверу:
- Привет. Мне нужен IP адрес сайта vpn.mvd.ru
- Я такой мелюзгой не занимаюсь. Вот есть DNS-сервер зоны .ru (его IP такой-то), спроси у него.​

ККВ => DNS-ru:
- Привет. Мне нужен IP адрес сайта vpn.mvd.ru
- Этого домена я не знаю. Но знаю mvd.ru, его IP 95.173.128.124. Спрашивай там.​

ККВ => DNS-mvd.ru
- Привет. Мне нужен IP адрес сайта vpn.mvd.ru
- Да, это домен из моего сегмента. IP адрес: 95.173.128.124​

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


В предыдущих вариантах были примеры чисто рекурсивных и чисто нерекурсивных запросов. Но на практике обычно эти варианты комбинируются: компьютер пользователя делает рекурсивный запрос к DNS-серверу своего провайдера, а тот для него начинает "обзванивать инстанции".

* Вариант III - комбинация рекурсивных и нерекурсивных запросов *

ККВ => DNS'у прова:
- Привет, тут Вася лезет на сайт vpn.mvd.ru, какой IP у этого сайта?
- Не знаю, домен не из моего сегмента, сейчас узнаю и сообщу тебе.​

DNS-прова => корневому DNS-серверу:
- Мне нужен IP сайта vpn.mvd.ru.
- Не знаю такого, спроси у DNS-сервера зоны .ru​

DNS-прова => DNS-ru:
- Мне нужен IP сайта vpn.mvd.ru.
- Не знаю такого. Но IP домена mvd.ru у меня есть. Спроси у их DNS'а.​

DNS-прова => DNS-mvd.ru:
- Мне нужен IP сайта vpn.mvd.ru.
- IP адрес сайта vpn.mvd.ru: 95.173.128.124.​

DNS-прова => ККВ:
- Все узнал. Этот сайт на IP 95.173.128.124.​

Подобная схема чаще всего встречается на практике.


На другой день Вася рассказывает своему однокласснику кардеру Пете, какую классную штуку он нашел. И тот (а я чо - лох?! я тоже хочу дрочить через VPN, так оно безопаснее!) лезет на наш многострадальный сайт "лучшего VPN-сервиса для русских кардеров". Т.к. мегакардеры живут рядом, провайдер у них один (и DNS-прова один и тот же).

* Вариант IV - кэширование DNS *

ККП => DNS'у прова:
- Привет. Пете нужен сайт vpn.mvd.ru, какой у него IP?
- Как же, как же. Вчера у меня этот домен уже спрашивали, IP вряд ли поменялся: 95.173.128.124.​

Как видим, DNS-сервер провайдера обычно запоминает IP адреса доменов на некоторое время. Петя засветился только на DNS'е провайдера. А остальные DNS-сервера про то, что Петя интересовался этим сайтом, не в курсе.


Паливо ДНСа

В механизме работы DNS мы немного разобрались. Конечно, на деле все горазно сложнее, но для нас это не важно. Для нас гораздо важнее, как этот механизм используется, чтобы нас попалить. Так что же нужно злым админам с mvd.ru, чтобы схватить Васю и Петю за жопу?

а) Свой DNS-сервер, который они контролируют. Он будет фиксировать DNS-запросы и стучать админам;
б) Избежать DNS-кэширования, чтобы все запросы проходили на их DNS-сервер;
в) Как-то отличать DNS-запросы Васи от запросов Пети (и еще тысяч других).​

С пунктом а) все ясно - ставят DNS на своем серваке и регистрируют его в более старших DNS-серверах (зоны .ru или корневых - не важно).

С пунктами б) и в) тоже все просто. Нужно как-то заставить компьютеры посетителей делать уникальные DNS-запросы на сервер mvd.ru. Они не будут повторяться, поэтому их кэширование не имеет значения. И у каждого посетителя они будут разные, поэтому проверить какой запрос сделан каким пользователем тоже очень просто. Нужно только запомнить, какой домен подсовывался Васе, а какой - Пете.

Как же заставить Васю сделать запрос ya-vasya.mvd.ru, а Петю ya-petya.mvd.ru? Ведь они оба будут вводить в браузер vpn.mvd.ru. Элементарно. Достаточно подделать ссылку на любую картинку или CSS-файл (или любой другой файл), которые будут грузиться вместе со страничкой. В HTML-коде страницы, которую покажут Васе, будет строчка:

Code:
<link href="[COLOR="#48d1cc"]http://ya-vasya.mvd.ru/styles22.css[/COLOR]" rel="stylesheet" type="text/css">

А на странице, которую покажут Пете:

Code:
<link href="[COLOR="#48d1cc"]http://ya-petya.mvd.ru/styles22.css[/COLOR]" rel="stylesheet" type="text/css">

И браузер послушно загрузит эти файлы, чтобы отобразить страницы в том виде, в каком они задуманы веб-мастерами. Надеюсь, уточнять что при этом компьютер Васи сделает DNS-запрос ya-vasya.mvd.ru, а Пети - ya-petya.mvd.ru, не нужно. Ну и отмечу, что на деле будут не фразы типа "ya-vasya", "ya-petya", а какой-нибудь буквенно-числовой идентификатор посетителя (что-нибудь вроде f8117b00ca8d11f54.mvd.ru).

Если DNS-запрос к провайдеру будет рекурсивным, то на DNS-mvd.ru полезет DNS-прова, и спалят его. Если нерекурсивным, то компьютер пользователя будет сам спрашивать у DNS-mvd.ru IP домена и попалится сам. Все зависит от настройки DNS-сервера провайдера. При этом не важно, используют ли Вася и Петя прокси или нет. В первом случае запрос будет делать провайдер, а у него никаких прокси нет и в помине. Во втором - DNS-запросы обычно идут в обход прокси. Глобальные проксификаторы операционной системы (Proxifier, WideCap) в обычном режиме тоже не помогут: они перехватывают TCP сессии, а DNS-запросы делаются по UDP протоколу.


Паливо VPN'а

Почему при использовании VPN обычно палится DNS VPN'а, а не провайдера? Если не вдаваться в детали, то потому что VPN-соединение считается своего рода "подключением к Интернету по умолчанию". Если ВПН настроен нормально, то его шлюз является основным, внешний трафик идет на него и определение IP сайтов происходит через DNS-сервер VPN-сервиса. Это уже лучше, но еще не изумительно.


Прячем свой DNS за соксом

Гораздо лучше, если вместо DNS VPN'а будет палиться ДНС натянутого поверх него сокса. Почему? Потому что соксы нам для того и нужны, чтобы их палить ;)

Соксы изначально были задуманы для того, чтобы обеспечить взаимодействие сетей, связь между которыми затруднительна. Сокс - своего рода промежуточный сервер, у которого есть доступ к обеим сетям, которые нужно связать. Поэтому в протоколе SOCKS предусмотрели возможность разрешения доменных имен. Для справки: разрешить доменное имя - значит получить его IP адрес.

Значит компьютер Васи сперва через сокс делает DNS-запрос. Определяет IP хоста vpn.mvd.ru. А потом через сокс же работает с этим IP. Так? Нет, не так. Васин компьютер просто кладет на то, какой IP у этого сайта. Он требует от сокса: "Обеспечь мне связь с хостом vpn.mvd.ru!". Остальное - забота сокса. Он сам будет делать DNS-запрос, чтобы определить IP. Логично спросить: а нахрена я рассказываю про эти тонкости? Да просто чтобы стало понятно: компьютер с правильно настроенным соксификатором при работе через сокс DNS-запросов не делает! Это ему просто не нужно. Зато это очень нужно злым админам нехороших сайтов, чтобы нас попалить.


Настраиваем соксификатор

Теперь про то, как настроить соксификатор. Расскажу об этом на примере программы Proxifier - она наиболее удобная из всех, какими я пользовался. В ней предусмотрено два режима работы с DNS: локальный и удаленный. В локальном режиме компьютер сперва сам определяет IP при помощи DNS-сервера своего провайдера. А уже потом подключается к этому IP через сокс. В этом случае палится либо IP компа, либо DNS провайдера, либо DNS ВПНа. А при удаленном разрешении имен все происходит, как описано выше. Соксу передается доменное имя хоста, к которому нужно подключиться. И он сам пытается определить его IP через свой DNS. Именно такой режим нам и нужен.

Открываем окно Proxifier'а, идем в меню Options -> Name Resolution. Видим галочку Choose the mode automatically и быстренько ее снимаем. Выбирать режим автоматически нам ни к чему - выбор будет явно не в нашу пользу. Далее видим переключатель Locally / Try Locally then Remotely / Remotely. Соответственно: Локально / Попробовать сперва локально, если не получилось - удаленно / Удаленно. Нас интересует последний вариант. Ставим переключатель в положение Remotely и радуемся жизни.

Вот вроде бы и все, проблема решена. И тут у некоторых возникнет вопрос: а нахрена читать дальше? Для них напомню, что Вася тоже радуется жизни... хотя и юзает ментовский ВПН. Камрады, не будьте васями, читайте дальше! ;)


Отсыпьте-ка мне сверхдлинных запросов...

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

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

И тут самое время вспомнить, что многие кроберы с упорством, достойным лучшего применения, атакуют форумы с вопросами: "А где взять четвертый Outpost?..". Более молодые с не меньшим упорством переспрашивают: "А зачем именно четвертый?". Вопрос вполне закономерный, так как эта версия уже давным давно устарела и не обеспечивает наилучшей защиты. На что следует поучительный ответ: "В нем есть блокировка сверхдлинных запросов".

Напомню, что обычный DNS-запрос (вроде "скажи мне IP хоста porno.ru") ничем не опасен. Таких запросов сервер ежедневно получает миллионы. И обслуживают такие запросы не DNS-сервера отдельных сайтов, которые можно контролировать, а "главнюки" зоны .ru. Чтобы отличить запрос онаниста Васи от запроса онаниста Пети, нужно чтобы они:

а) попали на шпионящий DNS-сервер
б) отличались друг от друга​

То есть имели вид вроде: fb81a4c57d1a781ff.Domain-Zone-of-Our-Spying-DNS-Server.porno.ru. Вот тогда пользователя с ID fb81a4c57d1a781ff можно хватать за яйца. Именно такие запросы называются сверхдлинными. И именно их блокирует Outpost 4.0. НО! Если мне не изменяет память, сверхдлинным считается запрос на разрешение имени домена четвертого уровня и выше. То есть доменное имя css.server.ru не является сверхдлинным, а f7c1b14.css.server.ru - уже сверхдлинное. Так что спешу порадовать любителей четвертого Аутпоста: запрос типа fb81a4c57d1a781ff.google.com заблокирован не будет. А ведь у такого гиганта как Гугл наверняка есть свои низкоуровневые DNS-сервера. И вполне могут шпионить, если настроены для этого. Так что условия а) и б) выполняются. Вы рады? Я тоже рад за вас! :)

Почему же старина Аутпост кинул нам такую подлянку? Потому что эта блокировка задумывалась как защита от пересылки данных трояном при помощи DNS-запроса. (login-vasya-password-zhopa.hackers.dns.server.com). В более поздних версиях разработчики признали такую защиту неэффективной и отказались от блокировки сверхдлинных запросов. Прикрывать нас от злых админов в погонах разрабы никогда не собирались.

Так что же делать? Для начала в клиническом ужасе кричим "Ааааааааа!.." и начинаем рвать на жопе волосы. А потом вспоминаем, что "компьютер с правильно настроенным соксификатором при работе через сокс DNS-запросов не делает!". И читаем дальше.


Мочим ДНСов

Раз DNS-запросы не нужны, но могут быть опасны, логичнее всего отказаться от них. То есть заблокировать их все. И сверхдлинные, и сверхкороткие, и даже сверхсредние... И в этом нам поможет наш старый добрый Аутпост, который, надеюсь, вы все используете. Ибо сказано было: "И да настанет Судный День у каждой машины, и да пребудет великая боль с ее хозяином в час отречения от истиннаго владыки - Великого Аутпоста" (© "Откровение от Порочного Бориса", писание первое, глава первая - "Начало").

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

Допустим, 95.31.1.83 - это IP DNS-сервера нашего провайдера. Тогда DNS-запрос для Аутпоста будет выглядеть:

Исходящий UDP на 95.31.1.83:53
Исходящий TCP на 95.31.1.83:53​

(DNS и DOMAIN - это названия 53-го порта для UDP и TCP протоколов соответственно). Их-то нам и надо укокошить. Беда в том, что наш Аутпост про такую сверхзадачу не в курсе. Пока не в курсе :) Все, что нужно - сделать правила блокировки такого трафика. А делать такие правила удобнее в новых версиях, так как они в этом смысле более гибкие.

Объяснять буду самый простой способ. Он не самый удобный, но его проще и быстрее всего объяснить. Кто хочет лучшего - разберется.

Открываем окно Аутпоста (например, 2009). Настройки -> Брандмауэр -> Сетевые правила -> Системные правила. Должно появится окошко со вкладкой Глобальные правила. В других версиях интерфейс может быть другой, но окно настройки глобальных правил в нем есть. Ищите.

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

Тыкаем кнопку "Добавить".

Первое окошко - событие, в нем выбираем "Где направление" и "Где удаленный порт".

В третьем окошке "Расшифровка правила" появится: "Где протокол TCP и направление Не определено и удаленный порт Не определен, разрешать". Кликаем по TCP, выбираем "UDP". Если в первом окошке какие-то галочки соскочили, ставим по новой.

Аналогично в направлении указываем "Исходящее".

Потом тыкаем по Не определен в пункте "Удаленный порт". В появившемся окне ищем порт DNS (53) и дважды кликаем. Жмем "Ок".

89306c6d486e8fe9e9e99cee3e16cadb.png

Теперь щелкаем по Разрешать, чтобы оно сменилось на "Блокировать".

Так выглядит правило "Блокировать исходящие UDP на 53-й порт". Или, говоря по-человечески "Блокировать исходящие DNS-запросы" :)

Еще одна маленькая, но приятная деталь. В окошке 2 "Параметры правила" поставьте галочку Оповещать. Зачем? Чтобы вы не материли бедного Бориса каждый раз, когда забудете включить Proxifier, добавить в него сокс или сокс умрет и у вас тупо не будут открываться сайты. Каждый раз при срабатывании правила внизу будет появляться всплывающее окошечко с сообщением. И будет понятно, что Интернет не работает из-за блокировки DNS-запросов. Окошки эти появляются обычно в самый неподходящий момент, когда вы что-то куда-то вводите. Так что материть меня и Аутпоста вы все равно будете, но уже за сбитый с поля ввода фокус. Но мне оно так приятнее... :)

Верно настроенное правило выглядит так:

3e6462a8a5fb96da7d95f68108ccd752.png

Жмем Ок. В окне с глобальными правилами выделяем строчку с нашим правилом. И топим кнопку "Вверх", пока оно не поднимется на самую верхушку списка. Для тех, кто в танке: галочка напротив правила должна стоять.

Точно так же делаем второе правило, но в нем вместо протокола UDP оставляем TCP. Все остальное так же, только 53-й порт будет называться "DOMAIN". Ставим его вторым в списке.

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


Не ругайте Борьку!

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

На это отвечу: "Негоже сетовать на судьбу и Господа, коли очаг страстей и рукоблудия созидает Человек в своем Незнании истинных Законов, дарованных нам Великим Аутпостом!" (© "Откровение от Порочного Бориса", писание первое, глава первая - "Начало"). (Вася, Петя, привет!) :)

В четвертом Аутпосте нет разделения глобальных правил на применяющиеся до и после правил для приложений. Его глобальные правила применяются всегда после правил для приложений. Посмотрите правила, например, для Internet Explorer или svchost.exe. Вы найдете среди них правила, разрешающие этим программам делать DNS-запросы. Эти правила срабатывают до созданных вами. Можно конечно перебрать все сетевые приложения (браузеры, аськи, качалки, обязательно - svchost и прочие) и снять галочки с правил для DNS'а. Только не забудьте выключить опцию автосоздания и обновления правил для известных приложений. Иначе все ваши настройки рано или поздно собъются. Также можно сделать низкоуровневые правила с высоким приоритетом, запрещающие исходящие UDP и TCP на 53-й порт. Но я все же советую освоиться с более новыми версиями - четвертый Аутпост вам больше не нужен.

Теперь, как зайти на сайт сокс-сервиса.

Способ раз:

Убрать галочки с правил блокировки DNS. Получить соксы. Поставить галочки обратно.

Способ два:

Кому лень постоянно лезть так глубоко в настройки, сохранить два варианта конфигурации: с поставленными галочками и снятыми галочками. Через Настройки -> Общие -> Конфигурация быстро грузить нужный конфиг.

Способ три:

Найти в Интернете сайт, определяющий IP сайтов по их доменному имени. Ввести адрес вашего сервиса (MySocksService.com) и узнать на каком IP он находится (например: 123.123.123.123). После этого попробовать зайти на сайт по IP: http://123.123.123.123:80 или https://123.123.123.123:443. Если получилось - отлично. Добавляем в закладки. Линки на сайтах часто указываются относительные, при клике по ссылкам перебрасывать на URL с доменным именем вас не должно.

Способ четыре, самый удобный:

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

Способ пять, тоже ничего:

Можно разрешить делать DNS-запросы только через VPN. В этом случае DNS вашего провайдера нигде не всплывет, но DNS ВПН'а может попалиться. Зато после подключения к ВПН сайты будут открываться и без соксов. Сначала нужно узнать IP DNS-сервера вашего VPN. Для этого подключаемся к VPN'у, запускаем программу cmd и в командной строке вводим ipconfig /all. Будет выведен список всех сетевых интерфейсов с их настройками. Ищем интерфейс VPN-подключения. В случае с OpenVPN это будет что-то типа Подключение к локальной сети #, где # - цифра. И смотрим какой DNS-сервер там указан. После этого создаем еще одно глобальное правило: Где протокол UDP и направление Исходящее и удаленный адрес (сюда ставим IP DNS'а VPN'а) и удаленный порт DNS, разрешать. Это правило ставим в самый верх списка. Теперь DNS будет работать только через VPN. Если DNS-сервер VPN'а поменяется, правило придется поправить.


JAVA, Flash и прочие пакости

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

Утечка данных сводится в основном к двум вариантам. Отправка запроса в обход прокси (это лечится использованием Proxifier'а). И анализ настроек системы. Во втором случае помогает использование виртуальной машины, сеть которой работает в режиме NAT. Если DNS и попалится, то это будет внутренний IP хостовой машины: что-нибудь типа 192.168.0.1 - как будто инет вы получаете через локальную сетку.


Альтернативная блокировка DNS

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

Открываем меню сетевых подключений (в Win XP: Панель управления -> Сетевые подключения). Через контекстное меню открываем свойства того подключения, через которое выходим в Интернет. Выбираем вкладку "Сеть" или "Общие" - в зависимости от типа подключения. В списке компонентов выделяем Протокол Интернета TCP/IP, жмем "Свойства". Вместо "Получить адрес DNS-сервера автоматически" выбираем "Использовать следующие адреса DNS-серверов" и прописываем IP 127.0.1.3 и 127.0.1.4.

Разумеется, на этих IP никаких DNS-серверов нет, поэтому все DNS-запросы будут уходить вникуда.

Если хотите, чтобы блокировался и DNS ВПНа, то сделайте то же самое в настройках VPN подключения.

А можно для достоверности указать в качестве DNS-сервера VPN'а какие-нибудь публичные DNS-серверы. При проверке через Flash или Java это будет выглядеть менее подозрительно, чем loopback-адрес (127.*.*.*).

Простота способа заключается в том, что не нужно разбираться с настройками всяких там Аутпостов. Серьезные недостатки: каждый раз нужно перебивать IP и переподключаться. Никаких оповещений о блокировке DNS-запроса не будет. Целенаправленные DNS-запросы к конкретным серверам блокироваться также не будут.



Вот и все. Надеюсь, мои советы кому-то помогут.

При копировании статьи или ее фрагментов указание копирайтов обязательно: © Boris The Blade.


Новогодний Бонус :)

В качестве бонуса подкину идею о том, что при помощи настроек фаервола можно предотвратить выход в сеть без соксов. Например, если вы забыли включить Проксифаер, он вылетел или какая-то хитроумная программа пытается выйти в сеть "в обход" него. Делается это через правила для приложений. Достаточно всем приложениям, которыми вы пользуетесь, разрешить исходящие TCP подключения только к вашему компьютеру. Доступ во внешнюю сеть оставить только Proxifier'у. И перевести Аутпост в режим блокировки.

Знайте, братья - Аутпост вещь незаменимая. Истинно говорю вам: "Вселенский бес окутал черной сетью всякого, кто потворствуя Гордыне и Невежеству поклоняется грязному Идолу, и имя ему - Брандмауэр Windows!" (© "Откровение от Порочного Бориса", писание первое, глава первая - "Начало").

Если общественность подтвердит востребованность моих статей плюсами и отзывами, могу наваять сочинение и на такую тему :) Конечно, при наличии времени.


Ну и напоследок хочу поздравить всех с наступающим Новым Годом. Считайте эту статью своеобразным новогодним презентом нашему комьюнити. Желаю всем в следующем году заработать побольше бабок и уберечь свои горячо любимые задницы от цепких лап правосудия ;)



P.S. Не хотел задеть ни чьих религиозных чувств, так что без обид... На носу Новогодний Отпуск, денег - хоть жопой жуй => настроение в плюсе ;)

P.P.S. Если будут проблемы с настройкой, пишите сюда. Постараюсь помочь... пока трезвый. И не забывайте заглядывать в Журнал событий -> Брандмауэр. Когда что-то не работает, там обычно появляется много интересных записей.

P.P.P.S. Ну если еще у кого-то останутся вопросы про настройку DNS, то я уже просто не знаю...


Приложение

Провериться на предмет палива DNS можно здесь (иногда нужно несколько раз обновить страницу):

http://whoer.net
http://private.dnsstuff.com/tools/aboutyou.ch
http://www.servicevpn.net/who.html


Обратите внимание на лог Proxifier'a, когда будете заходить на эти страницы. Обращение к доменам 4-5 уровней будет очень заметно:

Code:
[HH:MM] Error : the proxy server X.X.X.X:YYYY cannot establish connection to 2108de08-cc03-4500-bf07-517f5d33630a.css.servicevpn.net:80
[HH:MM] SomeBrowser.exe - Could not connect to 2108de08-cc03-4500-bf07-517f5d33630a.css.servicevpn.net:80 through the proxy server.
[HH:MM] SomeBrowser.exe - www.dnsstuff.com:80 open
...
[HH:MM] SomeBrowser.exe - Could not connect to ibid183880237.plumd.dnsstuff.com:80 through the proxy server.
[HH:MM] Error : the proxy server X.X.X.X:YYYY cannot establish connection to 2108de08-cc03-4500-bf07-517f5d33630a.css.servicevpn.net:80
[HH:MM] SomeBrowser.exe - Could not connect to 2108de08-cc03-4500-bf07-517f5d33630a.css.servicevpn.net:80 through the proxy server.
[HH:MM] SomeBrowser.exe - www.dnsstuff.com:80 close, 482 bytes sent, 46450 bytes (45.3 KB) received
[HH:MM] SomeBrowser.exe - meineipadresse.de:80 close, 416 bytes sent, 1660 bytes (1.62 KB) received

P.P.P.P.S. Хорошо подумав, решил все же не тратить время на выкладывание статьи на других форумах, т.к. на них 90% одних и тех же людей. Все, кому было надо, уже прочитал, а мартышкин труд меня не привлекает.

 
Last edited:

qwertyy

VIP member
Messages
516
Reputation
96
Reaction score
186
Points
43
блеать, как же не хватало этой статьи. Как включить в англ винде что бы она показывала русские буквы, а не вопросы? И все же какую версию аутпоста ставить?, впн+сокс с включенным ремотли палит длинные днс запросы? стандартный софт из win xp может отправлять длинные днс запросы?
 
Last edited:

Tinytoon

VIP member
Messages
481
Reputation
58
Reaction score
81
Points
28
Вот дек воистину подарок к НГ!!!

Мало кто на самом деле из тех, кто занимается нашим ремеслом, знает все это! А те, кто знает, редко найдет время, чтоб поделится с Васей и Петей этими знаниями!
ТСу мега спасибо!
И советую тем, кто отвалился на середине статьи и ради интереса решил почитать коменты к ней – ЧИТАЙТЕ ЕЁ ДО КОНЦА, И ПОКА НЕ СХАВАЕТЕ ИЗЗА СТОЛА НЕ ВЫХОДИТЕ!

PS статье нет цены!
 
Messages
40
Reputation
9
Reaction score
31
Points
18
Спасибо, рад что понравилось. Не зря убивал время )

qwertyy

Как включить в англ винде что бы она показывала русские буквы, а не вопросы?
Вопрос не в тему вообще-то. Нужно включить поддержку русского языка. Будет ли это паливом - хз... Погугли, у меня не было необходимости в это вникать.

И все же какую версию аутпоста ставить?
Какая тебе удобнее. Желательно поновее. Здесь рассказывал на примере Outpost Firewall 2009. Но акцент я делал на то, что специально искать версию 4.0 и мучаться с ее установкой под новыми виндами нет особого смысла. По сравнению с новыми версиями она довольно убогая. Самый последний билд самой новой версии ставить не стоит: они иногда выходят сыроватые. Помню один у меня жестоко тупил, пока для него не вышло обновление.

впн+сокс с включенным ремотли палит длинные днс запросы?
В теории не должен. На деле люди иногда пишут, что палится. Подробнее читай во втором абзаце раздела "Отсыпьте-ка мне сверхдлинных запросов...". Если блокировать DNS-запросы палива точно не будет. Т.к. не будет самих запросов.

стандартный софт из win xp может отправлять длинные днс запросы?
Длина не имеет значения. Обычно запросы и делаются стандартной службой DNS-клиент (SVCHOST). Если она не работает, DNS-запрос может сделать само приложение (браузер, аська и т.п.).
 

777

Professional
Messages
110
Reputation
15
Reaction score
24
Points
18
Спасибо ТСу за статью! мега респект ++
 

qwertyy

VIP member
Messages
516
Reputation
96
Reaction score
186
Points
43
Boris The Blade, но все же есть вероятность что меня спалили? Юзаю фаерфокс флеш и яву даже не устанавливал. всегда сидел под впном и соксами аутпост поставил но не настроил, меня всегда пугали фаерволы с кучей замороченных настроек. кстати спасибо за татью поставил бы тебе кучу плюсов, но могу только 1(
 
Messages
40
Reputation
9
Reaction score
31
Points
18
qwertyy, такая вероятность есть всегда )

В конце статьи есть ссылки, где можно проверить палится DNS или нет. Проверься, исходя из этого уже можно будет делать какие-то выводы. Фаервол в данном случае будет чем-то вроде страховки.
 
  • Like
Reactions: jane75z18

    jane75z18

    Points: 1
    Мега Материал.Пиши по больше таких статей.Спасибо читать было весело.

alextrust

DEER
Messages
268
Reputation
14
Reaction score
16
Points
18
не подскажите ключик к Outpost Firewall Pro 2010 v7.0.4
а то мне одни трояны попадпются)
 

AllForMe

Carder
Messages
37
Reputation
3
Reaction score
6
Points
8
Видна основательность в подходе написания статьи, спасибо что осветил всю тему палева днс, пиши еще, будет интересно почитать, сразу статья вспомнилась года так 06-07 от ф1 про настройку 04 аутпоста =) я его даже качал помню =)
 

makj

Member
Messages
6
Reputation
0
Reaction score
0
Points
1
Вроде все работает в случае когда Proxifier (или другое соксифицирующее ПО) установлен в гостевой машине. В случае когда проксифаер установлен на хостовой машине, чтобы соксифицировать весь траффик исходящий от виртуальной машины (процесс vmnat.exe) схема не работает. Как настроить так чтобы работала, еще не разобрался. Если есть кто знает решение, напишите плиз.
 

xanter

VIP member
Messages
834
Reputation
78
Reaction score
109
Points
43
работает при первом варианте , зачем тебе усложнять задачу чтото мутить чтобы варю с хоста скосифицировать.
 

makj

Member
Messages
6
Reputation
0
Reaction score
0
Points
1
Дело в том, что соксифицируя весь траффик гостевой машины, сокращаю риск запалить свой реальный IP. Бывали случаи что работая с Proxifier в гостевой машине, некоторое ПО не соксифицировалось через проксифиер. Проблему решало использование Proxifier на хостовой машине.

p.s. Странно. Установил Proxifier на гостевой машине, сделал как описано в статье. Попробовал на данном чекере:
http://private.dnsstuff.com/tools/aboutyou.ch

Бывает что показает все равно реальные DNS. Бывает что не показывает. Перезагружаю страницу несколько раз через CTRL + F5 (т.е. с очисткой кэша). Настройки остаются те же.

---------- Сообщение добавлено в 12:27 PM ---------- Предыдущее сообщение размещено в 12:21 PM ----------

Boris The Blade, если будет время, напиши, пожалуйста, статейку про того, как правильно разрешить исходящие TCP подключения только к вашему компьютеру, доступ во внешнюю сеть оставить только Proxifier'у.

Попробовал сделать для браузера (все исходящиие TCP поставил на адрес 127.0.0.1) и перевел фаер в режил блокирования, но на практике в браузере все равно открываются сайты. Проксифаер отключен.
 

kamal

Professional
Messages
115
Reputation
13
Reaction score
32
Points
28
не подскажите ключик к Outpost Firewall Pro 2010 v7.0.4
а то мне одни трояны попадпются)

смотри пм
 

neononn

Professional
Messages
115
Reputation
4
Reaction score
4
Points
18
Boris The Blade- может я в танке, но я никак не могу догнать все ещё пробовал несколько раз, когда стоят 2 галки блокировать исходящие UDP и разрешать исходящие TCP Whoer.net DNS скрыват. А когда убираем галку с "блокировать исходящие UDP" то тот же Whoer.net показывает мой DNS. А остальные 2 ссылки так же скрывают, как такое возможно. И как убрать с боку красное всплывающее окно типа там заблокированно. Заранее спасиб.
 
Messages
40
Reputation
9
Reaction score
31
Points
18
Вроде все работает в случае когда Proxifier (или другое соксифицирующее ПО) установлен в гостевой машине. В случае когда проксифаер установлен на хостовой машине, чтобы соксифицировать весь траффик исходящий от виртуальной машины (процесс vmnat.exe) схема не работает. Как настроить так чтобы работала, еще не разобрался. Если есть кто знает решение, напишите плиз.
Проксифицировать гостевую систему через проксифаер на хосте проблематично. Хотя и заманчиво - на гостевой ОСи не будет никакого компрометирующего ПО. Давно уже хотел так сделать, настраивал много машин и систем, но четкого результата так и не добился. На одной машине соксифицируется, на другой - нет. Где-то TCP трафик вообще идет не от имени vmnat, а хрен пойми как. Ставь проксифаер на обе системы.

p.s. Странно. Установил Proxifier на гостевой машине, сделал как описано в статье. Попробовал на данном чекере:
http://private.dnsstuff.com/tools/aboutyou.ch

Бывает что показает все равно реальные DNS. Бывает что не показывает. Перезагружаю страницу несколько раз через CTRL + F5 (т.е. с очисткой кэша). Настройки остаются те же.

За годы работы на разных чекерах ни разу не всплывал IP моего прова или ВПНа. Только соксы. Настроено все, как здесь написано. Скорее всего, ты где-то ошибся в настройках.

1) Какая версия Аутпоста? Не четверка? В статье про это написано.
2) Flash, Java отключены?
3) Если ДНС пропалился, то значит был сделан запрос. Заходим в фаер, смотрим отчеты брандмауэра. Ищем исходящий UDP или TCP на 53 порт. Смотрим столбец "Причина". Там будет указано правило, из-за которого запрос был разрешен. Усиленно кубатурим, как так вышло, что созданное нами правило блокировки ДНС не сработало.

Boris The Blade, если будет время, напиши, пожалуйста, статейку про того, как правильно разрешить исходящие TCP подключения только к вашему компьютеру, доступ во внешнюю сеть оставить только Proxifier'у.

Попробовал сделать для браузера (все исходящиие TCP поставил на адрес 127.0.0.1) и перевел фаер в режил блокирования, но на практике в браузере все равно открываются сайты. Проксифаер отключен.
Во-первых, вместо адреса локальной петли (127.0.0.1) ставим макро-адрес MY_COMPUTER. Во-вторых, внимательно смотрим правила для каждого приложения, выходящего в интернет. Снимаем все галки. Добавляем свое правило "Разрешить исходящие TCP, где удаленный адрес Мой Компьютер". Смотрим правила для проксифаера и убеждаемся, что в списке есть "Разрешать исходящие TCP". Аутпоста в режим блокировки. Убедись, что стандартные правила для приложений не корректируются автоматически аутпостом (в конце статьи про это есть).

Посмотри еще глобальные правила.

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

Может быть, у тебя стоит NOD или еще какой антивирь или софт, прокси (вроде Proxomitron), который перехватывает трафик. Поэтому от браузера исходящие TCP однозначно идут на локальный адрес к этой программе. А правила аутпоста для этой программы исходящие соединения разрешают.

Сорри, но писать подробную статью мне сейчас очень некогда. Тема гемморойная, много тонкостей. Чтобы написать статью, которая все объяснит, а не породит еще кучу вопросов, убью неделю.

---------- Сообщение добавлено в 08:59 PM ---------- Предыдущее сообщение размещено в 08:45 PM ----------

Boris The Blade- может я в танке, но я никак не могу догнать
Перечитай статью очень внимательно. И вылазь из танка :)

все ещё пробовал несколько раз, когда стоят 2 галки блокировать исходящие UDP и разрешать исходящие TCP Whoer.net DNS скрыват.
Блокировать надо исходящие TCP на 53 порт и исходящие UDP на 53 порт.

А когда убираем галку с "блокировать исходящие UDP" то тот же Whoer.net показывает мой DNS.
Все правильно, ты ведь отключаешь блокировку DNSа

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

И как убрать с боку красное всплывающее окно типа там заблокированно. Заранее спасиб.
Удивляешь. Специально ведь для тебя распинался. В статье, в разделе про создание правила целый абзац этому посвящен. Убери опцию "Оповещать" из правил блокировки запросов.
 
Last edited:

neononn

Professional
Messages
115
Reputation
4
Reaction score
4
Points
18
Спасибо тебе Boris The Blade, вроде как вылез из танка. Просто с аутпостом только недавно знаком, сразу полез искатть статьи как и что и с не получалось.
 

amdba

Member
Messages
5
Reputation
0
Reaction score
0
Points
1
вопрос к ТС:
"в протоколе SOCKS предусмотрели возможность разрешения доменных имен"

Речь идёт только о Socks 5 ?

Спрашиваю, потому что читаю на другом сайте следующее:
"Socks-клиент может передавать не только IP-адрес хоста, с которым необходимо устанавливать соединение, но и доменное имя хоста. Socks5-сервер сам получит IP по имени. Таким образом, в локальных сетях, работающих через Socks5, можно обойтись без локального DNS-сервера. Socks4 требовал его наличия."

Т.е., насколько я понял, если использовать socks4, доменные имена резольвиться не будут.
Так?
 
Last edited:

lastexile

VIP moderator
Messages
2,033
Reputation
235
Reaction score
296
Points
83
даблпост, статья несколькими темами ниже
 

FLoAteR

Carder
Messages
62
Reputation
4
Reaction score
5
Points
8
Извеняюсь перед автором и за свою невнимательность.
Просто после того как не нашел подобную статью на c.su, разместил ее там, и как-то на автомате здесь.

- Удалите эту тему если возможно.
 
Last edited:
Top