Re[2]: Фильтрация DNS запросов от браузера
От: Аноним  
Дата: 31.05.11 05:07
Оценка:
Всем спасибо за советы

Здравствуйте, okman, Вы писали:

А если очень хочется проверять именно по полю "Host: ", и, если это "неугодный" домен, возвращать "страницу-заглушку" с сообщением restricted, единственное решение — писать NDIS-драйвер протокола?
Пока после длительного обдумывания и экспериментов остановился (в freebsd) на перехвате ip-пакета с GET-запросом, и последующей реинжекцией этого пакета далее по назначению, если сайт разрешен, или "проглатыванием" TCP-пакета и инжекцией пакета с ложным ACK и PSH прямо браузеру с текстом "взрослый сайт".
Но в BSD это элементарно делается с помощью ipfw и divert-правила (он позволяет перенаправить любой "сырой" ip-пакет в специальный порт предварительно binded сокета сторонним приложением. Дальше я могу выполнить "sendto()" над этим сокетом для реинжекции сырых пакетов — прямо в браузер, или "в Интернет") — хотя и в ядре это делается очень просто с помощью IP-level NKE filter.
А для Windows так и не придумал ничего проще чем копаться в NDIS-фильтрах

O>Относительно несложное решение (для Windows) заключается в написании TDI-фильтра,

O>перехватывающего исходящие соединения на 80 порт (TDI_CONNECT) и проверки IP пункта
O>назначения по базе "черных" адресов. Неугодные адреса элементарно перекидываются на
O>127.0.0.1:спецпорт, где работает простенький HTTP-сервер, возвращающий страницу-заглушку.
O>Поскольку на одном IP может находиться несколько сайтов, логично к этой проверке добавить
O>мониторинг заголовка Host в исходящих запросах — это, кстати, можно делать уже за пределами
O>режима ядра.

O>С LSP связываться не советовал бы.

O>Во-первых, приличный объем стартового кода (порядка нескольких тысяч строк для простого прототипа).
O>Во-вторых, слабая документация и почти полное отсутствие вменяемых исходников, которые можно
O>просто взять и скомпилировать.
O>В-третьих, упоминания об этой технологии в MSDN весьма скудные и, как правило, снабжены тавро "deprecated".
O>Более того, я неоднократно слышал упреки в том, что LSP реализована кривовато и может "откидывать
O>коленца" на ровном месте. Лучше обратиться к более актуальным и перспективным вещам — WFP, например.
Re: Фильтрация DNS запросов от браузера
От: Cyberax Марс  
Дата: 31.05.11 05:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>И нужна точка старта, с которой я бы мог начать копаться в документации

А>Мне нужно распознать, что приложение, которое ломиться в сеть — браузер, и не позволить этому браузеру перейти по ссылке, если ее доменное имя находится в черном списке. Собственно, на фильтрации DNS запросов я и застрял.
А>Подскажите, как лучше такое сделать?
Будь проще — сделай прокси-сервер.

Если хочется сложного, то есть готовый драйвер для прозрачного проксирования.
Sapienti sat!
Re[2]: Фильтрация DNS запросов от браузера
От: okman Беларусь https://searchinform.ru/
Дата: 31.05.11 07:43
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, Аноним, Вы писали:


А>>И нужна точка старта, с которой я бы мог начать копаться в документации

А>>Мне нужно распознать, что приложение, которое ломиться в сеть — браузер, и не позволить этому браузеру перейти по ссылке, если ее доменное имя находится в черном списке. Собственно, на фильтрации DNS запросов я и застрял.
А>>Подскажите, как лучше такое сделать?
C>Будь проще — сделай прокси-сервер.

C>Если хочется сложного, то есть готовый драйвер для прозрачного проксирования.


Что за драйвер ? Мне тоже интересно.
Если не затруднит, поподробнее...
Re[3]: Фильтрация DNS запросов от браузера
От: okman Беларусь https://searchinform.ru/
Дата: 31.05.11 08:42
Оценка: 2 (1)
Здравствуйте, Аноним, Вы писали:

А>А если очень хочется проверять именно по полю "Host: ", и, если это "неугодный" домен, возвращать "страницу-заглушку" с сообщением restricted, единственное решение — писать NDIS-драйвер протокола?


Да почему ? Нет же.
Если Вам удастся организовать прозрачный прокси-сервер (редирект на него будет выполнять тот же TDI-фильтр),
то всю фильтрацию можно организовать в режиме пользователя.
Тут задача в том, чтобы передать прокси-серверу реальный пункт назначения, ибо после подмены в TDI-фильтре
он теряется безвозвратно. Например, можно подумать о том, чтобы отправлять прокси-серверу некую
дополнительную информацию в первом запросе каждого исходящего соединения, которая и будет хранить адрес/порт.
Re[2]: Фильтрация DNS запросов от браузера
От: Аноним  
Дата: 31.05.11 10:24
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Будь проще — сделай прокси-сервер.


C>Если хочется сложного, то есть готовый драйвер для прозрачного проксирования.


Можно ссылку или название?
Спасибо
Re[3]: Фильтрация DNS запросов от браузера
От: Cyberax Марс  
Дата: 31.05.11 14:20
Оценка: 8 (1)
Здравствуйте, okman, Вы писали:

C>>Если хочется сложного, то есть готовый драйвер для прозрачного проксирования.

O>Что за драйвер ? Мне тоже интересно.
O>Если не затруднит, поподробнее...
Что-то типа: http://markus.revti.com/2009/01/squid-transparent-proxy-server-on-windows-server-2003/
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.