SNI 필터링과 함께 오징어를 사용하여 HTTPS를 투명하게 터널링합니다.

SNI 필터링과 함께 오징어를 사용하여 HTTPS를 투명하게 터널링합니다.

내 요구 사항은 다음과 같습니다

  1. 프록시는 투명해야 합니다.
  2. 도메인 이름으로 웹사이트를 필터링할 수 있어야 합니다.
  3. 그래요~ 아니다트래픽을 해독하고 싶습니다. 저는 SNI 스니핑 기반 솔루션을 찾고 있습니다. 클라이언트에 인증서를 설치할 필요가 없습니다.

수많은 답변이 떠돌고 있지만 그 답변은 올바르지 않거나(이를 수행하려면 트래픽을 해독해야 한다고 주장함) 불완전합니다.

답변1

이를 수행하는 방법은 Squid 3.5에 도입된 SSL peek 기능을 사용하는 것입니다. 보다여기자세한 설명을 위해. --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

(여담: 2단계에는 서버 인증서 수신만 포함되는데 왜 2단계가 아닌 1단계만 살펴보아야 하는지 잘 모르겠습니다. 문서에서는 이를 전혀 명확하게 설명하지 않습니다. ssl_bump peek all권장하는 대로 사용하면 이 작업이 완전히 중지됩니다 . ).

그런 다음 iptables를 사용하여 일반적인 포트 443을 3129로 리디렉션합니다(또는 원하는 경우 오징어가 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- 인증서/

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

관련 정보