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

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

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

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

0
задан 6 August 2021 в 05:26
1 ответ

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

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

acl denylist_ssl ssl::server_name google.com # NOT dstdomain
acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump splice !denylist_ssl # allow everything not in the denylist
ssl_bump terminate all # block everything else
https_port 3129 intercept ssl-bump cert=/etc/squid/dummy.pem

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

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

-A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --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-certificates/

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

2
ответ дан 6 August 2021 в 05:26

Теги

Похожие вопросы