Рейтинг:1

Прозрачный туннель HTTPS с использованием squid с фильтрацией SNI

флаг cn

Мои требования:

  1. Прокси должен быть прозрачным.
  2. Я должен иметь возможность фильтровать сайты по доменному имени.
  3. Я делаю нет хотите расшифровать трафик. Я ищу решение на основе SNI sniffing - без установки сертификатов на клиентах.

Существует множество ответов, но они либо неверны (утверждается, что для этого нужно расшифровать трафик), либо неполны.

Рейтинг:2
флаг cn

Способ сделать это — использовать функцию просмотра ssl, представленную в Squid 3.5. Видеть здесь для подробного объяснения. Обратите внимание, что вам нужно будет скомпилировать либо --with-gnutls или же --with-openssl (проверять кальмар -v). Некоторые дистрибутивы оставляют их.

Вкратце соответствующая конфигурация squid выглядит так.

acl denylist_ssl ssl::server_name google.com # НЕ dstdomain
acl step1 at_step SslBump1
ssl_bump заглянуть шаг 1
ssl_bump splice !denylist_ssl # разрешить все, что не входит в список запрещенных
ssl_bump завершить все # заблокировать все остальное
https_port 3129 перехват ssl-bump cert=/etc/squid/dummy.pem

(Кроме того: я не уверен, почему нам нужно заглянуть только на шаг 1, а не на шаг 2, учитывая, что шаг 2 включает только получение сертификата сервера. В документации это вообще не проясняется. Использование ssl_bump просмотреть все как они рекомендуют, это полностью перестает работать).

А затем выполните обычный танец перенаправления с порта 443 на 3129 с помощью iptables (или, если хотите, напрямую попросите squid прослушивать порт 443).

-A ПРЕДВАРИТЕЛЬНАЯ МАРШРУТИЗАЦИЯ -p tcp -m tcp --dport 443 -j ПЕРЕНАПРАВЛЕНИЕ --to-ports 3129

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

Что-то вроде этого работает.

openssl req -new -newkey rsa:4096 -sha256 -days 365 -nodes -x509 -keyout dummy.pem -out dummy.pem

Источники:

[1] https://unix.stackexchange.com/questions/613359/setting-up-squid-transparent-proxy-with-ssl-bumping-on-debian-10

[2] https://web.archive.org/web/20210128152111/https://www.cammckenzie.com/blog/index.php/2018/07/19/squid-https-interception-and-filtering-without-client- сертификаты/

[3] https://wiki.squid-cache.org/Features/SslPeekAndSplice

Ginnungagap avatar
флаг gu
«Некоторые дистрибутивы» на самом деле ближе к «большинству дистрибутивов», все дистрибутивы на основе Debian не учитывают их, как и IIRC, RHEL и производные. Это оставляет в основном нишевые дистрибутивы для их предоставления, Alpine, возможно, является самым популярным дистрибутивом, предоставляющим его, учитывая его использование в контейнерах.
xrisk avatar
флаг cn
@Ginnungagap Я использую CentOS 7.9, и мой кальмар поставляется с openssl.
Ginnungagap avatar
флаг gu
А, значит я не правильно вспомнил, спасибо за информацию :)
Rafael avatar
флаг cn
Также может помочь https://docs.diladele.com/tutorials/transparent_proxy_debian/index.html

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.