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

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

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

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

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

решение1

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

Короче говоря, соответствующая конфигурация Squid выглядит так.

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

Связанный контент