Перенаправить весь веб-трафик (включая https) через прокси-сервер

2153
ropstah

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

Privoxy предоставляет эту функциональность, но только через http.

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

Я нашел этот вопрос / ответ, который, кажется, решает httpsпроблему путем туннелирования трафика с использованием STunnel .

У меня есть проблемы с размещением некоторых концепций, которые вступают в игру. Можно ли настроить это (имея в виду «создание возможности использовать собственный фильтр Privoxy (а не просто блокировать, действительно изменяя содержимое) в трафике HTTPS) на одной машине под управлением Windows? Я имею в виду, что тогда он будет действовать как клиент STunnel». / сервер и прокси-сервер Privoxy?

Любое руководство будет с благодарностью!

1
Я использовал nginx в качестве веб-прокси раньше. Конфигурация проста, и я думаю о вопросе в stackoverflow, хотя я забыл, где. Установите сертификат SSL на nginx и отправьте все запросы на сервер, а также разместите его локально, где nginx может обратный прокси-сервер. Вы можете добавить клиентский ip или любой другой из запроса в заголовки и изменить содержимое на сервере. ytpillai 6 лет назад 1
@ytpillai - я не понимаю этого ... Допустим, я установил `nginx` в контейнере Docker на моей локальной машине. Должен ли я затем настроить локальный компьютер для использования открытой конечной точки / порта на компьютере Docker (указывая на nginx) в качестве прокси-сервера? Где «Privoxy» вступает в игру здесь? ropstah 6 лет назад 0

2 ответа на вопрос

2
ytpillai

Я думаю, что nginx это твой ответ. http://nginx.org/en/docs/windows.html

Там вы можете настроить свой SSL-сертификат и подключить к нему всех клиентов. Затем просто обратный прокси-запрос к локальному хосту (здесь нет необходимости в ssl, поскольку он просто локальный) и добавьте заголовки клиента в локальный запрос.

Клиенты могут туннелировать в nginx (который сам по себе является веб-сервером), и nginx обратится к прокси-доменам или ips по мере необходимости.

Затем вы можете использовать https://github.com/justcoding121/Titanium-Web-Proxy в качестве перехватчика трафика и отправлять на него весь трафик.

Просто добавил комментарий, я также могу установить `nginx` для Windows, я вижу. Но что тогда? Где «Privoxy» вступает в игру здесь? Что я должен установить в качестве прокси-сервера в конфигурации сети Windows? ropstah 6 лет назад 0
Не думайте, что вам нужен Privoxy, поскольку nginx сам по себе может выступать в качестве вашего обратного прокси. Похоже, что ваш лучший подход - внесение в белый список определенных протоколов и веб-сайтов, поэтому вы можете установить правила обратного прокси-сервера, разрешающие только определенные местоположения и протоколы, и запрещать все остальное (конфигурация по умолчанию, эквивалентная конфигурации по умолчанию, запрещает все). Не обязательно иметь отдельный прокси-сервер, если вы тоже не хотите фильтровать исходящий трафик. Затем вы можете настроить физический брандмауэр pfsense в качестве моста для вашей сети и сделать его прокси-сервером. ytpillai 6 лет назад 1
Nginx может прокси-запрос и ответ в указанном месте, и это, кажется, то, что вы просили. И да, просто прочитайте другой комментарий, только nginx должен быть выставлен. Имейте в виду, что наиболее безопасным решением всегда является физический брандмауэр, если вы также беспокоитесь о вредоносном трафике, поскольку он специально создан для этой цели. ytpillai 6 лет назад 1
Дело в том, что Privoxy предоставляет функциональные возможности для «сопоставления» определенных хостов / URL через шаблоны и применения фильтров (замены регулярных выражений в скрипте Perl) к ответам, которые он возвращает. Вы, кажется, гораздо более грамотны в работе с сетями, чем я, поэтому я собираюсь предположить, что Nginx может либо «преобразовывать» ответы от соединения https, либо перенаправлять их в Privoxy, чтобы выполнить преобразование. Надеемся, что конфигурация для каждого из этих «сервисов» будет говорить сама за себя (относительно конвейера запросов), потому что я действительно не знаю, почему это работает и почему Privoxy не поддерживает преобразования `https`. ropstah 6 лет назад 0
Просто чтобы убедиться, что происходит: `Nginx` перенаправляет входящие` https` запросы и возвращает их как `http` ответы? ropstah 6 лет назад 0
По сути, nginx действует как мост между клиентом и сервером. Клиент подключается к nginx через https, nginx клонирует тот же запрос и отправляет его на локальный сервер при обратном проксировании через http, затем получает ответ через http и отправляет клиенту через https. Я предлагаю его в качестве альтернативы Privoxy, потому что он поддерживает все функции, которые вы упомянули, что вам нужно. Например, для сопоставления хостов и URL-адресов nginx имеет синтаксис поиска в свойстве location правила. ytpillai 6 лет назад 0
Если вы хотите обслуживать только обычный файл index.HTML или php, введите корневую папку и имя файла точки входа. Это должно помочь https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms ytpillai 6 лет назад 0
Давайте [продолжим это обсуждение в чате] (http://chat.stackexchange.com/rooms/70404/discussion-between-ropstah-and-ytpillai). ropstah 6 лет назад 0
просто чтобы убедиться: я не хочу «обслуживать» какие-либо файлы или данные, просто прокси. Когда я отправляю запрос через браузер, например, на `https: // google.com`, он должен быть преобразован, прежде чем он будет отправлен обратно в браузер. ropstah 6 лет назад 0
Как уже говорилось в чате, `nginx` не обязательно является решением, но ваше руководство по` https: // github.com / justcoding121 / Titanium-Web-Proxy` помогает мне продвинуться немного дальше. Продолжение следует! ropstah 6 лет назад 0
0
cstanke

Privoxy может фильтровать SSL (https) по моде. Смотрите Privoxy FAQ по SSL .

Добро пожаловать в Супер пользователя! Хотя ссылка может дать ответ на вопрос, [было бы предпочтительнее] (// meta.stackoverflow.com/q/8259) включить сюда важную информацию для ответа и предоставить ссылку для справки. Спасибо! bertieb 6 лет назад 1