LINUX.ORG.RU
ФорумAdmin

Прокси, который...

 , , ,


4

5

Надоело на каждой домашней машине (тесть, жена, дети, у каждого своя машина/ось/учётка, зоопарк винд, линуксов и разных браузеров разных версий в них) проверять и настраивать вот эти все ublock, matrix и прочие. Чисто физически надоело.

Сюда, в нагрузочку, ещё можно добавить мобильные по wi-fi, в том числе и если это в гости зашел человек и ему дали доступ к сети.

Хочу поднять прокси, через который будут ходить все HTTP(S) запросы. И, чтобы прокся анализировала:

1) к каким хостам идут запросы.
2) куки
3) URL path
4) query params
5) POST data

и на основании полученных данных принимала решение:

а) дропнуть запрос
б) ответить 301/302/401/403/404
в) удалить/добавить/заменить куки
г) пропустить как есть

Да — я говорю о классическом MITM, но для собственного блага.

1) Я НЕ хочу чтобы меня трекали счётчики.
2) Я хочу для конкретных сайтов (догадайтесь каких) всегда быть анонимным с любого устройства в моей сети (а-ля приватный режим браузера).
3) Я хочу блокировать все запросы к рекламным сетям для всех машин.
4) Я хочу блокировать какие-то запросы, если они идут с конкретной машины.
5) Я хочу НЕ блокировать какие-то запросы, если они идут с другой конкретной машины.
6) Я хочу НЕ применять правила для какой-то машины или применять их выборочно.
7) Я НЕ хочу чтобы какие-то корподобрые браузеры и виджеты самостоятельно что-то куда-то засылали.
8) Я хочу иметь белые, серые и прочие списки хостов и/или возможность настраивать их по маске, например, регуляркой.
N...) Что ещё я забыл хотеть?
N...+1) Я хочу настраивать эти правила в одном месте.

Подскажите опенсорс+фри ПО максимально покрывающее мои хотелки. Или комплекс такого ПО, с помощью которого я смогу получить желаемое.

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

И вот ещё. Если с HTTP трафиком всё просто и понятно, то с HTTPS нужен же свой корневой серт. Этот серт надо добавить во все браузеры. Тогда, траф я смогу расшифровать на проксе и проанализировав всё что мне нужно, принять решение насчёт запроса, а во внешний мир отправлять (при необходимости модифицированый) запрос уже с правильными публичными сертами и на реальные хосты. Будет ли это работать?

sudo cast ValdikSS — кажется, ты сможешь пролить свет на многие мои вопросы.

Системы блокировки рекламы вроде µBlock не только блокируют запросы, но ещё и модифицируют CSS, могут блокировать по относительным правилам (вроде «заблокировать загрузку любых сторонних скриптов на вот этом сайте») и ещё делать кучу вещей. Чтобы получить такую же функциональность, придется не только просто блокировать запросы, но и рендерить саму страницу.

Пожалуй, самая продвинутая система блокировки рекламы на стороне маршрутизатора — https://pi-hole.net/, но она только блокирует домены через DNS.

ValdikSS ★★★★★ ()
Ответ на: комментарий от ValdikSS

Да, но мой вопрос не только о рекламе и трекинге. Вот, хотелось бы конфижить всё в одном месте. Это в идеале. А так, можно и в двух местах, если до второй чекалки запрос доедет.

deep-purple ★★★★★ ()
Ответ на: комментарий от Bass

https://mitmproxy.org/ подкупает тем, что можно наплагинить прям динамически, хоть в БД храни. Но окисляет мне морду тем, что на питоне.

deep-purple ★★★★★ ()
Ответ на: комментарий от ValdikSS

Так то с «пихоли» можно навероное как-то списки к себе забирать, хоть по крону.

deep-purple ★★★★★ ()
Ответ на: комментарий от Bass

Но нихрена не понятно. Полный список %TOKEN не нагугливается.

Может ли сквид передать во внешний скрипт все заголовки? Пост данные?

Может ли сквид принять вместе со статусом от внешнего скрипта модифицированые заголовки? Модифицированые пост данные? Кастомный ответ клиенту?

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

Пока не могу ответить.

Я не специалист в Squid.

По ссылкам – это то, что я сам собирался попробовать в ближайшем будущем. Кроме того, Squid – это как бы решение, специально предназначенное для DPI (см. https://yvoinov.blogspot.com/search?q=squid. Автор блога – чувак, пилящий «форк» сквида где-то в степях Казахстана).

Bass ★★★★★ ()

на каждой домашней машине (тесть, жена, дети, у каждого своя машина/ось/учётка, зоопарк винд, линуксов и разных браузеров разных версий в них)

Думаешь, проще там будет добавить этот сертификат?

По теме вопроса - squid может анализировать HTTP/HTTPS прозрачно и без терминирования HTTPS. Конечно, тогда куки и тело запроса недоступно, но имя домена - вполне (для HTTPS берется из TLS SNI хедера, для HTTP из Host: )

Может, для твоего случая банально поднять свой DNS и раздавать его клиентам и там резать плохие домены? есть же всякие списки готовые на разные тему (прон, ад, варез) для unbound/bind/tinydns.

Bers666 ★★★★★ ()
Ответ на: комментарий от Bers666

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

а что насчет трекинговых кук? вот беда...

свой днс? решит только часть проблем.

deep-purple ★★★★★ ()
Ответ на: комментарий от ValdikSS

Скорее наиболее user-friendly, т.к. имеет веб-морду со статистикой и пр. Но требовательна к ОЗУ и для большинства роутер не подходит. :-(

xdimquax ★★★★ ()
Ответ на: комментарий от Bass

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

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

но я еще не выбрал - так, нужно понять может ли сквид передать скрипту все что мне надо и может ли принять от него не только статус, но и модифицированые заголовки и тело или статус и кастомный ответ

deep-purple ★★★★★ ()
Последнее исправление: deep-purple (всего исправлений: 1 )
Ответ на: комментарий от sekreti-gollivuda

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

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

deep-purple ★★★★★ ()

Проиграл с предложения ставить гостям корневой сертификат и отключать пиннинг.

t184256 ★★★★★ ()
Ответ на: комментарий от sekreti-gollivuda

посмотрел сорцы, местами хорошо, очень даже, а в дпугой половине мест переписать хочется, пичальбида, нет на это времени.

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

На фоне твоей шапки что угодно остым на ум покажется.

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

t184256 ★★★★★ ()
Ответ на: комментарий от t184256

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

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

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

И не путай здоровый смех с подпаливанием стула.

t184256 ★★★★★ ()
Ответ на: комментарий от deep-purple

Желаемое тобой очевидно возможно, и старательно затруднено. Во имя очень достойных целей.

Поставь адблок, не выдумывай.

t184256 ★★★★★ ()
Ответ на: комментарий от deep-purple

Ну удачи, че. Расскажешь потом, во сколько раз проще настройка вышла =)

t184256 ★★★★★ ()
Ответ на: комментарий от deep-purple

нет на это времени.

самое экономное по времени - накидать ACL в Squid и релоадить его при их изменении. Даже сертификат на надо левый ставить а-ля Казахстан.

Какую тебе динамику? API что-ли?

В чем проблема релоадить нечто при изменении конфига? Хуки, inotify, крон скрипты, вот это все.

Bers666 ★★★★★ ()
Ответ на: комментарий от Bers666

самое экономное накидать очень простой ацл - вызов внешнего скрипта для всех кроме локалхоста.

скрипт и есть динамика.

deep-purple ★★★★★ ()

dhcp:

option wpad code 252 = text;
option wpad "http://192.168.1.1/wpad.dat";

wpad.dat

function FindProxyForURL(url, host)
{
return "PROXY 192.168.28.1:3128;";
}

Браузер: получить настройки прокси автоматически (если не хакер то оно так уже стоит).

sin_a ★★★★★ ()
Ответ на: комментарий от deep-purple

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

sin_a ★★★★★ ()
Ответ на: комментарий от deep-purple

Может быть я ошибаюсь, но любое соединение должно приземлиться на прокси чтобы идти дальше.

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

sin_a ★★★★★ ()
Ответ на: комментарий от deep-purple

в смысле вызов скрипта? на каждый запрос что ли? Которых 100500/наносек?
В чем разница накидать ACL в Squid или в твоем скрипте?

Bers666 ★★★★★ ()
Ответ на: комментарий от Bers666

Каких наносек? У меня ж не контора в тыщу машин.

Разница в том, что в скрипте у меня полностью развязаны руки и применяться правила могут вообще без рестарта-релоада — простым редактированием файла правил, которым пользуется скрипт.

deep-purple ★★★★★ ()

тоже хочу не прибитый к браузерам адблок

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.